- Beárazták az projektoros Ulefone-t
- Egy szenzor, két zoomkamera: újraírta a Huawei a mobilfotózás történetét
- Amazfit Active 2 NFC - jó kör
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Google Pixel topik
- Telekom mobilszolgáltatások
- Honor 400 Lite - szegény ember kameragombja
- iPhone topik
- Gyorsíthat töltésén a Honor Magic V5
- Android alkalmazások - szoftver kibeszélő topik
Új hozzászólás Aktív témák
-
Lakers
tag
Hello!
Megoldandó probléma az lenne, hogy minden ponthoz húzni kéne egy egyenest... Valószínűleg a belső ciklusommal van a baj..., mert az csak annyit csinál, hogy az utolsó pontnál húz egy vonalat mindegyik pontba, kivéve az elsőhöz, arra szolgál az utolsó sor. Természetesen ha egyszer már egy átló megvan húzva, akkor nem kéne hogy az mégegyszer megismétlődjön, de arról lővésem sincs, hogyan kéne.
[code]
for (int i=0;i<N;i++)
{
lineto(int (pontok.x), int (pontok(i).y));
for(int j=i+1; j<N; j++)
{
lineto(int (pontok[j].x), int (pontok[j].y));
}
}lineto(int (pontok[0].x), int (pontok[0].y));
Ezzel a résszel akadtak problémáim[/code]
-
Lakers
tag
válasz
Jester01 #648 üzenetére
Ennél jobb ötletem nem volt a tológatásra, na mindegy, majd mond rá valamit a gyakvezér.
lnx=lny=0;
lkx=getmaxx();
lky=getmaxy();
for (i=0; i<N; ++i)
{
if (p[i].x+u>lnx)
lnx=(int)p[i].x;
if (p[i].x+u<lkx)
lkx=(int)p[i].x;
if (p[i].x+v>lny)
lny=(int)p[i].x;
if (p[i].x+v<lky)
lky=(int)p[i].x;
}
if (lnx+u>=getmaxx()-1 || lkx<=1)
dx=-dx;
if (lny+v>=getmaxy()-1 || lky<=1)
dy=-dy;
u+=dx; v+=dy; -
Lakers
tag
Sziasztok!
Van egy kockám, ami x, y, és z tengely körül forog. Ez egy view_to_windows transzformációban van megvalósítva. Viszont az is kéne, hogy teljesn képernyőn pattogjon.
Sajnos a pattogást megpróbáltam a csúcsok segítségével de nem jött össze, semmit sem csinál. Mi lehet a baj? Van valakinek rá ötlete?# include "graphics.h"
# include <conio.h>
# include <stdio.h>
#define N 7
struct lap
{
int A,B,C,D,SZIN;
};
typedef struct el
{
int A,B;
} EL;
struct box
{
pont2d MIN,MAX;
};
pont2d vvtrf(box W, box V,pont2d P)
{
pont2d Q;
Q.x=(P.x-W.MIN.x)*(V.MAX.x-V.MIN.x)/(W.MAX.x-W.MIN.x)+V.MIN.x;
Q.y=(P.y-W.MIN.y)*(V.MAX.y-V.MIN.y)/(W.MAX.y-W.MIN.y)+V.MIN.y;
return Q;
};
pont3d forgat(float a,float b,float c,pont3d P)
{
pont3d Q;
pont3d tmp;
//x tengelyre
Q.x=1*P.x;
Q.y=cos(a)*P.y+(-sin(a)*P.z);
Q.z=sin(a)*P.y+cos(a)*P.z;
tmp.x=Q.x;
tmp.y=Q.y;
tmp.z=Q.z;
//y tengelyre
Q.x=cos(b)*tmp.x+sin(b)*tmp.z;
Q.y=1*tmp.y;
Q.z=(-sin(b)*tmp.x)+cos(b)*tmp.z;
tmp.x=Q.x;
tmp.y=Q.y;
tmp.z=Q.z;
//z tengelyre
Q.x=cos(c)*tmp.x+(-sin(b)*tmp.y);
Q.y=sin(c)*tmp.x+cos(a)*tmp.y;
Q.z=1*tmp.y;
return Q;
};
pont2d centproj(int s,pont3d Q)
{
pont2d P;
P.x=Q.x*(s/(s-Q.z));
P.y=Q.y*(s/(s-Q.z));
return P;
};
pont3d metszilleszt (pont3d A, pont3d B)
{
pont3d C;
C.x = A.y * B.z - A.z * B.y;
C.y = - A.x * B.z + A.z * B.x;
C.z = A.x * B.y - A.y * B.x;
return C;
};
int main(void)
{
int u, v, lnx, lny, lkx, lky, dx=1, dy=1;
int gd,gm,page=0,i;
gd = VGA;
gm = VGAMED;
initgraph(&gd,&gm,"");
u=getmaxx()/2;
v=getmaxy()/2;
pont2d l[8],t[8];
pont3d f[8];
pont3d p[8]={{1,-1,1},
{1,-1,-1},
{-1,-1,-1},
{-1,-1,1},
{1,1,1},
{1,1,-1},
{-1,1,-1},
{-1,1,1}};
el elek[12]={{0,1},{1,2},{2,3},{3,0},{4,5},{5,6},{6,7},{7,4},{0,4},{1,5},{2,6},{3,7}};
lap lapok[6] = {{0,1,5,4,1},
{1,2,6,5,2},
{2,3,7,6,3},
{3,0,4,7,4},
{4,5,6,7,5},
{1,0,3,2,6}};
pont3d a1,n,AB,BC;;
float a=1*M_PI/180;
float b=1*M_PI/180;
float c=1*M_PI/180;
box V,W;
V.MIN.x=10; W.MIN.x=-3;
V.MIN.y=300; W.MIN.y=-3;
V.MAX.x=310; W.MAX.x=3;
V.MAX.y=10; W.MAX.y=3;
for (;;)
{
setactivepage(page);
cleardevice();
a+=1*M_PI/180;
b=c=a;
delay(10);
for (i=0; i<8; ++i)
{
f[i]=forgat(a,b,c,p[i]);
l[i]=centproj(200,f[i]);
t[i]=vvtrf(W,V,l[i]);
}
for (i=0; i<6; ++i)
{
pont2d A,B,C,D;
A=t[lapok[i].A];
B=t[lapok[i].B];
C=t[lapok[i].C];
D=t[lapok[i].D];
AB.x=B.x-A.x;
AB.y=B.y-A.y;
BC.x=C.x-B.x;
BC.y=C.y-B.y;
int poly[8] = {(int)A.x,(int)A.y, (int)B.x,(int)B.y, (int)C.x,(int)C.y, (int)D.x,(int)D.y};
//setfillstyle(INTERLEAVE_FILL,lapok[i].SZIN);
//setfillstyle(SOLID_FILL,lapok[i].SZIN);
n=metszilleszt(AB,BC); //AB × BC
a1=(pont3d)f[lapok[i].A];
if (n.x*(-1*a1.x)+n.y*(-1*a1.y)+n.z*(200-(-1*a1.z))>0)
{ setcolor(lapok[i].SZIN);
fillpoly(4,poly);
//setcolor(WHITE);
}
}
//pattogtatás
lnx=lny=0;
lkx=getmaxx();
lky=getmaxy();
for (i=0; i<N; ++i)
{
if (p[i].x>lnx)
lnx=(int)p[i].x;
if (p[i].x<lkx)
lkx=(int)p[i].x;
if (p[i].x>lny)
lny=(int)p[i].x;
if (p[i].x<lky)
lky=(int)p[i].x;
}
if (lnx>=getmaxx()-1 || lkx<=1)
dx=-dx;
if (lny>=getmaxy()-1 || lky<=1)
dy=-dy;
u+=dx; v+=dy;
setvisualpage(page);
page = 1-page;
if (kbhit())
break;
}
closegraph();
return 0;
}
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- LG FLATRON L1942s 19"-os 1280x1024-es monitor eladó
- BESZÁMÍTÁS! ASUS ROG CROSSHAIR X670E GENE alaplap garanciával hibátlan működéssel
- iKing.Hu - Apple iPhone 16 - White - Használt, karcmentes
- AKCIÓ! PC Specialist Recoil VIII 17 notebook - i9 14900HX 16GB RAM 2TB SSD RTX 4060 8GB WIN11
- Telefon felvásárlás!! Honor 90 Lite/Honor 90/Honor Magic5 Lite/Honor Magic6 Lite/Honor Magic5 Pro
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest