You are on page 1of 4

#include<iostream.

h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
int x1[4],y1[4],x2[4],y2[4],a;
void draw(),trans(),aftrdraw();
int main()
{
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
//clrscr();
cleardevice();
cout<<"Enter the starting coordinate: ";
cin>>x1[0]>>y1[0];
cout<<"Enter the edge value: ";
cin>>a;
draw();
trans();
getch();
return 0;
}
void trans()
{
cout<<"MENU: \n1-Translate\n2Rotate\n3-Scaling\n";
l: cout<<"\nEnter ur choice: ";
int ch;
cin>>ch;
switch(ch)
{
case 1: cout<<"Enter translation vector:";
int tx,ty;
cin>>tx>>ty;
x1[0]+=tx;
y1[0]+=ty;
x2[0]+=tx;
y2[0]+=ty;
cout<<"Translated cube : ";
setcolor(3);
draw();

break;
case 2:int rx,ry,rz,r,x,y;
float rt;
cout<<"Enter the refernce point : ";
cin>>rx>>ry;
cout<<"Enter rotation vector : ";
cin>>r;
rt=(r*3.14159)/180;
for(int i=0;i<4;i++)
{
x=x1[i];y=y1[i];
x1[i]=((x-rx)*cos(rt)-(y-ry)*sin(rt));
y1[i]=((x-rx)*sin(rt)+(y-ry)*cos(rt));
x1[i]+=rx;
y1[i]+=ry;
x=x2[i];y=y2[i];
x2[i]=((x-rx)*cos(rt)-(y-ry)*sin(rt));
y2[i]=((x-rx)*sin(rt)+(y-ry)*cos(rt));
x2[i]+=rx;
y2[i]+=ry;
}
x=a;y=a;
// a=((x-rx)*cos(rt)-(y-ry)*sin(rt));
setcolor(3);aftrdraw();
break;
case 3:cout<<"Enter scaling vector:";
int tz;
cin>>tx>>ty>>tz;
x1[0]+=tx;
y1[0]+=ty;
x2[0]+=tx;
y2[0]+=ty;
x1[1]=x1[0]+tx*a;
y1[1]=y1[0];
x1[2]=x1[0];
y1[2]=y1[0]+ty*a;
x1[3]=x1[0]+tx*a;
y1[3]=y1[0]+ty*a;
x2[0]=x1[0]+tz*a/2;
y2[0]=y1[0]+tz*a/2;
x2[1]=x2[0]+tx*a;
y2[1]=y2[0];
x2[2]=x2[0];
y2[2]=y2[0]+ty*a;
x2[3]=x2[0]+tx*a;

y2[3]=y2[0]+ty*a;
setcolor(3);
aftrdraw();
}
int p;
cout<<"do u want to continue";
cin>>p;
if(p==1)
goto l;
}
void aftrdraw()
{
line(x1[0],y1[0],x1[1],y1[1]);
line(x1[0],y1[0],x1[2],y1[2]);
line(x1[1],y1[1],x1[3],y1[3]);
line(x1[2],y1[2],x1[3],y1[3]);
line(x2[0],y2[0],x2[1],y2[1]);
line(x2[0],y2[0],x2[2],y2[2]);
line(x2[1],y2[1],x2[3],y2[3]);
line(x2[2],y2[2],x2[3],y2[3]);
line(x2[0],y2[0],x1[0],y1[0]);
line(x2[2],y2[2],x1[2],y1[2]);
line(x2[1],y2[1],x1[1],y1[1]);
line(x2[3],y2[3],x1[3],y1[3]);
}
void draw()
{
x1[1]=x1[0]+a;
y1[1]=y1[0];
x1[2]=x1[0];
y1[2]=y1[0]+a;
x1[3]=x1[0]+a;
y1[3]=y1[0]+a;
line(x1[0],y1[0],x1[1],y1[1]);
line(x1[0],y1[0],x1[2],y1[2]);
line(x1[1],y1[1],x1[3],y1[3]);
line(x1[2],y1[2],x1[3],y1[3]);
x2[0]=x1[0]+a/2;
y2[0]=y1[0]+a/2;
x2[1]=x2[0]+a;
y2[1]=y2[0];
x2[2]=x2[0];
y2[2]=y2[0]+a;

x2[3]=x2[0]+a;
y2[3]=y2[0]+a;
line(x2[0],y2[0],x2[1],y2[1]);
line(x2[0],y2[0],x2[2],y2[2]);
line(x2[1],y2[1],x2[3],y2[3]);
line(x2[2],y2[2],x2[3],y2[3]);
line(x2[0],y2[0],x1[0],y1[0]);
line(x2[2],y2[2],x1[2],y1[2]);
line(x2[1],y2[1],x1[1],y1[1]);
line(x2[3],y2[3],x1[3],y1[3]);
}

You might also like