Tuesday, May 25, 2010

3D Transformation

#include
#include
#include
#include
#include
#include
#include

int gd=DETECT,gm;
double x1,x2,y1,y2;

void show_message()
{
char *mess[]={"-","=","["," ","3","D","-","T","r","a","n","s",
"f","o","r","m","a","t","i","o","n"," ","]","=","-"};
int xx=28,xxx=52,i,j;
_setcursortype(_NOCURSOR);
for(i=0,j=24;i<15,j>=12;i++,j--)
{
gotoxy(xx,1);
cout<>a>>b>>c;
initgraph(&gd,&gm,"..\bgi");
clearviewport();
for(i=0;i<20;i++) { edge[i][0]=edge[i][0]*a; edge[i][1]=edge[i][1]*b; edge[i][2]=edge[i][2]*c; } draw_cube(edge); closegraph(); } void translate(double edge[20][3]) { int a,b,c; int i; cout<<" Enter The Translation Factors "; cin>>a>>b>>c;
initgraph(&gd,&gm,"..\bgi");
clearviewport();
for(i=0;i<20;i++) { edge[i][0]+=a; edge[i][0]+=b; edge[i][0]+=c; } draw_cube(edge); closegraph(); } void rotate(double edge[20][3]) { int ch; int i; double temp,theta,temp1; clrscr(); cout<<"=[ Rotation About ]=-"; cout<<"1:==> X-Axis ";
cout<<"2:==> Y-Axis ";
cout<<"3:==> Z-Axis ";
cout<<"Enter Your Choice "; cin>>ch;
switch(ch)
{
case 1:
cout<<" Enter The Angle "; cin>>theta;
theta=(theta*3.14)/180;
for(i=0;i<20;i++) { edge[i][0]=edge[i][0]; temp=edge[i][1]; temp1=edge[i][2]; edge[i][1]=temp*cos(theta)-temp1*sin(theta); edge[i][2]=temp*sin(theta)+temp1*cos(theta); } draw_cube(edge); break; case 2: cout<<" Enter The Angle "; cin>>theta;
theta=(theta*3.14)/180;
for(i=0;i<20;i++) { edge[i][1]=edge[i][1]; temp=edge[i][0]; temp1=edge[i][2]; edge[i][0]=temp*cos(theta)+temp1*sin(theta); edge[i][2]=-temp*sin(theta)+temp1*cos(theta); } draw_cube(edge); break; case 3: cout<<" Enter The Angle "; cin>>theta;
theta=(theta*3.14)/180;
for(i=0;i<20;i++) { edge[i][2]=edge[i][2]; temp=edge[i][0]; temp1=edge[i][1]; edge[i][0]=temp*cos(theta)-temp1*sin(theta); edge[i][1]=temp*sin(theta)+temp1*cos(theta); } draw_cube(edge); break; } } void reflect(double edge[20][3]) { int ch; int i; clrscr(); cout<<"-=[ Reflection About ]=-"; cout<<"1:==> X-Axis ";
cout<<"2:==> Y-Axis ";
cout<<"3:==> Z-Axis ";
cout<<" Enter Your Choice :="; cin>>ch;
switch(ch)
{
case 1:
for(i=0;i<20;i++) { edge[i][0]=edge[i][0]; edge[i][1]=-edge[i][1]; edge[i][2]=-edge[i][2]; } draw_cube(edge); break; case 2: for(i=0;i<20;i++) { edge[i][1]=edge[i][1]; edge[i][0]=-edge[i][0]; edge[i][2]=-edge[i][2]; } draw_cube(edge); break; case 3: for(i=0;i<20;i++) { edge[i][2]=edge[i][2]; edge[i][0]=-edge[i][0]; edge[i][1]=-edge[i][1]; } draw_cube(edge); break; } } void perspect(double edge[20][3]) { int ch; int i; double p,q,r; clrscr(); cout<<"=[ Perspective Projection About ]=-"; cout<<"1:==> X-Axis ";
cout<<"2:==> Y-Axis ";
cout<<"3:==> Z-Axis ";
cout<<" Enter Your Choice :="; cin>>ch;
switch(ch)
{
case 1:
cout<<" Enter P :="; cin>>p;
for(i=0;i<20;i++) { edge[i][0]=edge[i][0]/(p*edge[i][0]+1); edge[i][1]=edge[i][1]/(p*edge[i][0]+1); edge[i][2]=edge[i][2]/(p*edge[i][0]+1); } draw_cube(edge); break; case 2: cout<<" Enter Q :="; cin>>q;
for(i=0;i<20;i++) { edge[i][1]=edge[i][1]/(edge[i][1]*q+1); edge[i][0]=edge[i][0]/(edge[i][1]*q+1); edge[i][2]=edge[i][2]/(edge[i][1]*q+1); } draw_cube(edge); break; case 3: cout<<" Enter R :="; cin>>r;
for(i=0;i<20;i++) { edge[i][2]=edge[i][2]/(edge[i][2]*r+1); edge[i][0]=edge[i][0]/(edge[i][2]*r+1); edge[i][1]=edge[i][1]/(edge[i][2]*r+1); } draw_cube(edge); break; } closegraph(); } void main() { int choice; double edge[20][3]= { 100,0,0, 100,100,0, 0,100,0, 0,100,100, 0,0,100, 0,0,0, 100,0,0, 100,0,100, 100,75,100, 75,100,100, 100,100,75, 100,100,0, 100,100,75, 100,75,100, 75,100,100, 0,100,100, 0,100,0, 0,0,0, 0,0,100, 100,0,100 }; while(1) { clrscr(); show_message(); cout<<"1:==> Draw Cube ";
cout<<"2:==> Scaling ";
cout<<"3:==> Rotation ";
cout<<"4:==> Reflection ";
cout<<"5:==> Translation ";
cout<<"7:==> Exit ";
cout<<" Enter Your Choice ="; cin>>choice;
switch(choice)
{
case 1:
draw_cube(edge);
break;

case 2:
scale(edge);
break;

case 3:
rotate(edge);
break;

case 4:
reflect(edge);
break;

case 5:
translate(edge);
break;


case 7:
exit(0);

default:
cout<<" Press A Valid Key...!!! ";
getch();
break;
}
closegraph();
}
}

No comments:

Post a Comment