ve chay thu xem anh hoa day
#include
#include
#include
#include
#include
#include
#define RADS 0.017453293
void veHeToaDo(){
setcolor(BLUE);
int Ox=getmaxx()/2;
int Oy=getmaxy()/2;
//Ox
line(Ox,20,Ox,Oy);
//Oy
line(Ox,Oy,getmaxx()-20,Oy);
//Oz
line(Ox,Oy,Ox-150,Oy+150);
//Goc toa do
setcolor(YELLOW);
circle(Ox,Oy,1);
settextjustify(1,1);
setcolor(WHITE);
outtextxy(Ox,20,"^");
outtextxy(getmaxx()-20,Oy,">");
outtextxy(Ox+10,Oy+10,"O");
outtextxy(Ox+10,20,"Y");
outtextxy(getmaxx()-20,Oy+10,"X");
outtextxy(Ox-150,Oy+150,"<");
outtextxy(Ox-160,Oy+160,"Z");
for(int i=1;i
putpixel(Ox,Oy-10*i,WHITE);
}
for(int j=1;j
putpixel(Ox+10*j,Oy,WHITE);
}
for(int k=1;k<15;k++){
putpixel(Ox-10*k,Oy+10*k,WHITE);
}
}
class Diem{
public:
double x;
double y;
double z;
void diChuyen(int c){
switch(c){
case 75: x-=10; break;
case 77: x+=10; break;
case 72: y+=10; break;
case 80: y-=10; break;
case 42: z-=10; break;
case 47: z+=10; break;
}
}
void quay(int c){
float xo=x, yo=y, zo=z;
float a=0.1;
switch(c){
case 120: //Ox
y=yo*cos(a)-zo*sin(a);
z=yo*sin(a)+zo*cos(a);
break;
case 121: //Oy
x=xo*cos(a)+zo*sin(a);
z=-xo*sin(a)+zo*cos(a);
break;
case 122: //Oz
x=xo*cos(a)-yo*sin(a);
y=xo*sin(a)+yo*cos(a);
break;
}
}
void tyLe(int c){
switch(c){
case 43:
x*=1.5;
y*=1.5;
z*=1.5;
break;
case 45:
x/=1.5;
y/=1.5;
z/=1.5;
break;
}
}
void gan(Diem d){
x=d.x;
y=d.y;
z=d.z;
}
};
Diem chuyenHeToaDo(Diem od){
Diem d;
d.gan(od);
double x=d.x, y=d.y, z=d.z;
d.x=z;
d.y=x;
d.z=y;
Diem p;
if(d.x>=0&&d.y>=0&&d.z>=0){
p.x = getmaxx()/2+d.y - d.x*cos(RADS*45);
p.y = getmaxy()/2-d.z + d.x*cos(RADS*45);
}
if(d.y>=0&&d.x<0&&d.z>=0){
p.x = d.y+getmaxx()/2-d.x*cos(RADS*45);
p.y = getmaxy()/2-d.z+d.x*cos(RADS*45);
}
if(d.x>=0&&d.y<0&&d.z>=0){
p.x = getmaxx()/2+d.y-d.x*cos(RADS*45);
p.y = getmaxy()/2-(d.z-d.x*cos(RADS*45));
}
if(d.x>=0&&d.y>=0&&d.z<0){
p.x = getmaxx()/2+d.y-d.x*cos(RADS*45);
p.y = getmaxy()/2-d.z+d.x*cos(RADS*45);
}
if(d.y>=0&&d.x<0&&d.z<0){
p.x = getmaxx()/2+d.y-d.x*cos(RADS*45);
p.y = getmaxy()/2+(-d.z-d.x*cos(RADS*45));
}
if(d.x>=0&&d.y<0&&d.z<0){
p.x = getmaxx()/2+d.y-d.x*cos(RADS*45);
p.y = getmaxy()/2-d.z+d.x*cos(RADS*45);
}
if(d.z>=0&&d.y<0&&d.x<0){
p.x = getmaxx()/2-(-d.y+d.x*cos(RADS*45));
p.y = getmaxy()/2-(d.z-d.x*cos(RADS*45));
}
if(d.x<0&&d.y<0&&d.z<0){
p.x = getmaxx()/2+d.y-d.x*cos(RADS*45);
p.y = getmaxy()/2-d.z+d.x*cos(RADS*45);
}
return(p);
}
class DoanThang{
public:
Diem dd;
Diem dc;
void ve(){
veHeToaDo();
Diem ddm, dcm;
ddm.gan(chuyenHeToaDo(dd));
dcm.gan(chuyenHeToaDo(dc));
setcolor(RED);
line(ddm.x,ddm.y,dcm.x,dcm.y);
}
void diChuyen(int c){
dd.diChuyen(c);
dc.diChuyen(c);
}
void quay(int c){
dd.quay(c);
dc.quay(c);
}
void tyLe(int c){
dd.tyLe(c);
dc.tyLe(c);
}
};
class TuDien{
public:
Diem A;
Diem B;
Diem C;
Diem D;
void ve(){
veHeToaDo();
DoanThang AB,AC,AD,BC,BD,CD;
AB.dd.gan(A);
AB.dc.gan(B);
setcolor(RED);
AB.ve();
AC.dd.gan(A);
AC.dc.gan(C);
setcolor(RED);
AC.ve();
AD.dd.gan(A);
AD.dc.gan(D);
setcolor(RED);
AD.ve();
BC.dd.gan(B);
BC.dc.gan(C);
setcolor(RED);
BC.ve();
BD.dd.gan(B);
BD.dc.gan(D);
setcolor(RED);
BD.ve();
CD.dd.gan(C);
CD.dc.gan(D);
setcolor(RED);
CD.ve();
}
void diChuyen(int c){
A.diChuyen(c);
B.diChuyen(c);
C.diChuyen(c);
D.diChuyen(c);
}
void tyLe(int c){
A.tyLe(c);
B.tyLe(c);
C.tyLe(c);
D.tyLe(c);
}
void quay(int c){
A.quay(c);
B.quay(c);
C.quay(c);
D.quay(c);
}
};
void chucNangTuDien(){
cout<<"======== CHUONG TRINH DI CHUYEN / TY LE / QUAY TU DIEN (3D) ========";
TuDien h;
cout<<"> Nhap toa do diem A: ";
cout<<"\n x = ";
cin>>h.A.x;
cout<<"\n y = ";
cin>>h.A.y;
cout<<"\n z = ";
cin>>h.A.z;
cout<<"> Nhap toa do diem B: ";
cout<<"\n x = ";
cin>>h.B.x;
cout<<"\n y = ";
cin>>h.B.y;
cout<<"\n z = ";
cin>>h.B.z;
cout<<"\n> Nhap toa do diem C: ";
cout<<"\n x = ";
cin>>h.C.x;
cout<<"\n y = ";
cin>>h.C.y;
cout<<"\n z = ";
cin>>h.C.z;
cout<<"> Nhap toa do diem D: ";
cout<<"\n x = ";
cin>>h.D.x;
cout<<"\n y = ";
cin>>h.D.y;
cout<<"\n z = ";
cin>>h.D.z;
h.ve();
cout<<"\n\n> De thoat ra: an ESC.";
for({
int c=getch();
if(c==27)
break;
h.diChuyen(c);
h.tyLe(c);
h.quay(c);
cleardevice();
h.ve();
}
}
void main(void){
for({
clrscr();
int gdriver, gmode, errorcode;
gdriver = DETECT;
initgraph(&gdriver,&gmode,"D:\\TC\\BGI");
errorcode = graphresult();
if (errorcode !=grOk){
cout<<"\n không the khoi tao!";
getch();
exit(1);
}
int lc=0;
cout<<"======== CHUONG TRINH DI CHUYEN / TY LE / QUAY CAC DOI TUONG ========";
cout<<"\n\n|| 1.> Thao tac voi tu dien. ||";
cout<<"\n|| ||";
cout<<"\n|| 0.> Thoa't. ||";
cout<<"\n|| ||";
cout<<"\n\n Lua chon: ";
cin>>lc;
switch(lc){
case 1:
chucNangTuDien();;
break;
case 0:
exit(1);
}
closegraph();
}
}