SOURCE CODE
#include<iostream.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
#include<math.h>
void main()
{
int gd=DETECT;
int gm;
initgraph(&gd,&gm,"");
char ch1='y';
while(ch1=='y'|| ch1=='Y')
{
int n;
cout<<"\nEnter no. of edges in a polygon:";
cin>>n;
int pl[10][2];
int ch;
if(n>2)
{
cout<<"Enter the co-ordinates of polygon:\n";
for(int i=0;i<n;i++)
{
cout<<"x"<<i<<" y"<<i<<":";
cin>>pl[i][0]>>pl[i][1];
}
pl[n][0]=pl[0][0];
pl[n][1]=pl[0][1];
for(i=0;i<n;i++)
{
line(pl[i][0],pl[i][1],pl[i+1][0],pl[i+1][1]);
}
float mat[2][10];
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
mat[i][j] =pl[j][i];
}
}
cout<<"1.Tanslation along x-axis!!";
cout<<"\n2.Tanslation along y-axis!!";
cout<<"\n3.Tanslation along both axis!!";
cout<<"\nEnter your choice:";
cin>>ch;
int xt,yt;
int ax[2][2],ay[2][2],axy[2][2];
int add[2][10];
int x,y;
int ln1[10][2];
int t,xn,yn,t1;
switch(ch)
{
case 1:cout<<"Enter translation factor along x-axis:";
cin>>xt;
if(xt>0)
{
for(x=0;x<=xt;x+=5)
{
ax[0][0]=x;
ax[1][0]=0;
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
add[i][j] = mat[i][j]+ax[i][0];
}
}
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
ln1[j][i]=add[i][j];
}
}
ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x-axis!!";
for(i=0;i<n;i++)
{
line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
}
delay(60);
if(x>=xt)
getch();
else
cleardevice();
if(x>=xt)
goto label1;
}
}
else
{
t=abs(xt);
for(x=0;x<=abs(xt);x+=5)
{
xn=xt+(t-=5);
ax[0][0]=xn;
ax[1][0]=0;
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
add[i][j] = mat[i][j]+ax[i][0];
}
}
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
ln1[j][i]=add[i][j];
}
}
ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x-axis!!";
for(i=0;i<n;i++)
{
line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
}
delay(60);
if(x>=abs(xt))
getch();
else
cleardevice();
if(x>=abs(xt))
goto label1;
}
}
break;
case 2: cout<<"Enter translation factor along y-axis:";
cin>>yt;
if(yt>0)
{
for(y=0;y<=yt;y+=5)
{
ay[0][0]=0;
ay[1][0]=y;
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
add[i][j] = mat[i][j]+ay[i][0];
}
}
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
ln1[j][i]=add[i][j];
}
}
ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along y-axis!!";
for(i=0;i<n;i++)
{
line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
}
delay(60);
if(y>=yt)
getch();
else
cleardevice();
if(y>=yt)
goto label1;
}
}
else
{
t=abs(yt);
for(y=0;y<=abs(yt);y+=5)
{
yn=yt+(t-=5);
ay[0][0]=0;
ay[1][0]=yn;
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
add[i][j] = mat[i][j]+ay[i][0];
}
}
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
ln1[j][i]=add[i][j];
}
}
ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along y-axis!!";
for(i=0;i<n;i++)
{
line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
}
delay(60);
if(y>=abs(yt))
getch();
else
cleardevice();
if(y>=abs(yt))
goto label1;
}
}
break;
case 3:cout<<"Enter translation factor along:\n";
cout<<"x-axis:";
cin>>xt;
cout<<"y-axis:";
cin>>yt;
if(xt>0&&yt>0)
{
for(x=0,y=0;x<=xt||y<=yt;) //for animation
{
axy[0][0]=x;
axy[1][0]=y;
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
add[i][j] = mat[i][j]+axy[i][0];
}
}
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
ln1[j][i]=add[i][j];
}
}
ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x and y-axes!!";
for(i=0;i<n;i++)
{
line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
}
delay(60);
if(x>=xt&&y>=yt)
getch();
else
cleardevice();
if(x>=xt&&y>=yt)
goto label1;
if(x<xt)
x+=5;
if(y<yt)
y+=5;
}
}
else if(xt<0&&yt<0)
{
t=abs(xt);
t1=abs(yt);
for(x=0,y=0;x<=abs(xt)||y<=abs(yt);) //for animation
{
if(x<abs(xt))
xn=xt+(t-=5);
if(y<abs(yt))
yn=yt+(t1-=5);
axy[0][0]=xn;
axy[1][0]=yn;
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
add[i][j] = mat[i][j]+axy[i][0];
}
}
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
ln1[j][i]=add[i][j];
}
}
ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x and y-axes!!";
for(i=0;i<n;i++)
{
line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
}
delay(60);
if(x>=abs(xt)&&y>=abs(yt))
getch();
else
cleardevice();
if(x>=abs(xt)&&y>=abs(yt))
goto label1;
if(x<abs(xt))
x+=5;
if(y<abs(yt))
y+=5;
}
}
else if(xt<0&&yt>0)
{
t=abs(xt);
for(x=0,y=0;x<=abs(xt)||y<=yt;) //for animation
{
if(x<abs(xt))
{
xn=xt+(t-=5);
}
axy[0][0]=xn;
axy[1][0]=y;
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
add[i][j] = mat[i][j]+axy[i][0];
}
}
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
ln1[j][i]=add[i][j];
}
}
ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x and y-axes!!";
for(i=0;i<n;i++)
{
line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
}
delay(60);
if(x>=abs(xt)&&y>=yt)
getch();
else
cleardevice();
if(x>=abs(xt)&&y>=yt)
goto label1;
if(x<abs(xt))
x+=5;
if(y<yt)
y+=5;
}
}
else if(xt>0&&yt<0)
{
t1=abs(yt);
for(x=0,y=0;x<=xt||y<=abs(yt);) //for animation
{
if(y<abs(yt))
{
yn=yt+(t1-=5);
}
axy[0][0]=x;
axy[1][0]=yn;
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
add[i][j] = mat[i][j]+axy[i][0];
}
}
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
ln1[j][i]=add[i][j];
}
}
ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x and y-axes!!";
for(i=0;i<n;i++)
{
line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
}
delay(60);
if(x>=xt&&y>=abs(yt))
getch();
else
cleardevice();
if(x>=xt&&y>=abs(yt))
goto label1;
if(x<xt)
x+=5;
if(y<abs(yt))
y+=5;
}
}
break;
default:cout<<"Your choice is wrong!!";
}
}
else
{
cout<<"\nPlease enter edges greater than 2!!";
}
label1:
cout<<"\nDo you wanna continue(y/n)??:";
cin>>ch1;
}
closegraph();
}
No comments:
Post a Comment