Ú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
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Ingatlanos topic!
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- ThinkPad (NEM IdeaPad)
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Tudományos Pandémia Klub
- Milyen billentyűzetet vegyek?
- Kerékpárosok, bringások ide!
- Anglia - élmények, tapasztalatok
- Nyáron startol a Nintendo Switch 2
- Forza sorozat (Horizon/Motorsport)
- További aktív témák...
- Dell Precision 7540 I7-9875h - 16Gb - 256 GB NVMe NVIDIA Quadro RTX 3000 Szép állapotban eladó
- The Legend of Zelda Tears of The Kingdom Collector's Edition Nintendo Switch gyűjtői kiadás játék
- Bomba ár! Lenovo ThinkPad T440P - i7-4GEN I 8GB I 512SSD I NVIDIA I 14" HD+ I Cam I W10 I Gari!
- Bomba ár! Lenovo X1 Yoga 1st - i7-6G I 16GB I 256GB SSD I 14" FHD Touch I W10 I CAM I Garancia!
- Bomba ár! Dell Latitude E5570 Touch - i5-6300U I 8GB I 256SSD I 15,6" FHD I HDMI I CAM I W10 I Gari
- HP EliteBook 850 G8 - 15.6" FHD IPS - i7-1185G7 - 32GB - 512GB SSD - Win11 - MAGYAR !!
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RTX 4060 Ti 16GB GAMER PC termékbeszámítással
- iKing.Hu - Apple MacBook Pro 13 M1 Touch Bar 2020 Használt, karcmentes 3 hónap garanciával
- Apple iPad Mini 16GB / normál állapotban / 12 hónap jótállással
- AKCIÓ! ASUS ROG THOR 1000W Platinum II tápegység garanciával hibátlan működéssel
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest