Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h> //printf/getch itp.
- #include <conio.h> //kbhit()
- #include <graphics.h> //funkcje graficzne BGI
- #include <windows.h> //Sleep(xx)
- #include <math.h>
- struct p3d
- {
- double x,y,z;
- };
- struct p2d
- {
- double x,y;
- };
- int main()
- {
- int GraphDriver = DETECT;
- int GraphMode;
- int ErrorCode;
- initgraph(&GraphDriver, &GraphMode,"");
- ErrorCode = graphresult();
- if(ErrorCode != grOk)
- {
- printf("Blad trybu graficznego: %s\n", grapherrormsg(ErrorCode) );
- exit(1);
- }
- //Tutaj kod związany z rysowaniem
- //******************************************************************************************************************
- double kat;
- int i;
- kat=1;
- p3d sr= {200,200,100};
- p3d k3d[8]=
- {
- {100,100,0},
- {100,300,0},
- {300,300,0},
- {300,100,0},
- {100,100,200},
- {100,300,200},
- {300,300,200},
- {300,100,200},
- };
- double tmpX,tmpY,tmpZ;
- double alfa=0;
- double beta=0;
- double gamma=0;
- char z;
- double stopien=M_PI/180;
- while(z!=27)
- {
- if(kbhit())
- {
- z=getch();
- if(z=='w')
- {
- alfa=stopien;
- beta=0;
- gamma=0;
- }
- if(z=='s')
- {
- alfa=0;
- beta=stopien;
- gamma=0;
- }
- if(z=='d')
- {
- alfa=0;
- beta=0;
- gamma=stopien;
- }
- }
- for(i=0; i<8; i++)
- {
- tmpX=k3d[i].x;
- tmpY=k3d[i].y;
- tmpZ=k3d[i].z;
- k3d[i].x=sr.x+((tmpX-sr.x)*cos(alfa))+((tmpY-sr.y)*sin(alfa));
- k3d[i].y=sr.y+((tmpY-sr.y)*cos(alfa))-((tmpX-sr.x)*sin(alfa));
- k3d[i].z=tmpZ;
- }
- for(i=0; i<8; i++)
- {
- tmpX=k3d[i].x;
- tmpY=k3d[i].y;
- tmpZ=k3d[i].z;
- k3d[i].x=sr.x+((tmpX-sr.x)*cos(beta))-((tmpZ-sr.z)*sin(beta));
- k3d[i].y=tmpY;
- k3d[i].z=sr.z+((tmpZ-sr.z)*cos(beta))+((tmpX-sr.x)*sin(beta));
- }
- for(i=0; i<8; i++)
- {
- tmpX=k3d[i].x;
- tmpY=k3d[i].y;
- tmpZ=k3d[i].z;
- k3d[i].x=tmpX;
- k3d[i].y=sr.y+((tmpY-sr.y)*cos(gamma))+((tmpZ-sr.z)*sin(gamma));
- k3d[i].z=sr.z+((tmpZ-sr.z)*cos(beta))-((tmpY-sr.y)*sin(beta));
- }
- p2d k2d[8];
- for(i=0; i<8; i++) // przeszktalcenie punktow 3d na 2d
- {
- k2d[i].x=k3d[i].x+k3d[i].z/2; // X
- k2d[i].y=k3d[i].y-k3d[i].z/3; // Y
- }
- setcolor(YELLOW);
- for(i=0; i<4; i++)
- {
- line(k2d[i].x,k2d[i].y,k2d[(i+1)%4].x,k2d[(i+1)%4].y); // pierwszy kwadrat
- line(k2d[(i+4)].x,k2d[(i+4)].y,k2d[(i+1)%4+4].x,k2d[(i+1)%4+4].y); //drugi kwadrat
- line(k2d[i].x,k2d[i].y,k2d[i+4].x,k2d[(i+4)].y); // połączenie kwadratow
- }
- Sleep(5);
- setcolor(BLACK);
- for(i=0; i<4; i++)
- {
- line(k2d[i].x,k2d[i].y,k2d[(i+1)%4].x,k2d[(i+1)%4].y); // pierwszy kwadrat
- line(k2d[(i+4)].x,k2d[(i+4)].y,k2d[(i+1)%4+4].x,k2d[(i+1)%4+4].y); //drugi kwadrat
- line(k2d[i].x,k2d[i].y,k2d[i+4].x,k2d[(i+4)].y); // połączenie kwadratow
- }
- }
- //******************************************************************************************************************
- //koniec rysowania
- //program czeka na naciœniêcie klawisza i ZAMYKA tryb graficzny!
- fflush(stdin);
- getch(); //tylko zatrzymanie programu, żeby nie zamykał natychmiast okna graficznego
- closegraph(); //koniec trybu graficznego
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement