CODE
#include<iostream.h>
#include<graphics.h>
#include<conio.h>
void main()
{
int gd=DETECT;
int gm;
initgraph(&gd,&gm,"");
char ch='y';
while(ch=='y'||ch=='Y')
{
int n;
cout<<"\nEnter the no. of edges in a polygon:";
cin>>n;
int ln[10][2];
if(n>2)
{
cout<<"Enter the co-ordinates of polygon:";
cout<<"\n";
for(int i=0;i<n;i++)
{
cout<<"x"<<i<<" y"<<i<<":-";
cin>>ln[i][0]>>ln[i][1];
}
ln[n][0]=ln[0][0];
ln[n][1]=ln[0][1];
for(i=0;i<n;i++)
{
line(ln[i][0],ln[i][1],ln[i+1][0],ln[i+1][1]);
}
float mat[10][10];
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
mat[i][j] =ln[j][i];
}
}
for(int p=0;p<n;p++)
mat[2][p]=1; //homogeneous co-ordinate
int ch;
cout<<"\n1.To increase the size!!";
cout<<"\n2.To reduce the size!!";
cout<<"\nEnter your choice:";
cin>>ch ;
float sc[3][3];
float t1[3][3];
float t2[3][3];
int ln1[10][2];
float mul1[10][10];
float mul2[10][10];
float mul3[10][10];
float tx,ty;
float inr;
float dec;
cout<<"Enter Center (Xc,Yc):";
cin>>tx>>ty;
t1[0][0]=1;
t1[0][1]=0;
t1[0][2]=-tx;
t1[1][0]=0; //to bring at origin
t1[1][1]=1;
t1[1][2]=-ty;
t1[2][0]=0;
t1[2][1]=0;
t1[2][2]=1;
t2[0][0]=1;
t2[0][1]=0;
t2[0][2]=tx;
t2[1][0]=0;
t2[1][1]=1; //to bring at original position
t2[1][2]=ty;
t2[2][0]=0;
t2[2][1]=0;
t2[2][2]=1;
switch(ch)
{
case 1:cout<<"\nEnter increment factor:";
cin>>inr;
sc[0][0]=inr;
sc[0][1]=0;
sc[0][2]=0;
sc[1][0]=0;
sc[1][1]=inr; //for scaling
sc[1][2]=0;
sc[2][0]=0;
sc[2][1]=0;
sc[2][2]=1;
for(i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
mul1[i][j]=0;
for(int k=0;k<3;k++)
{
mul1[i][j]=mul1[i][j]+t2[i][k]*sc[k][j];
} } }
break;
case 2: cout<<"\nEnter Decrement factor:";
cin>>dec;
sc[0][0]=dec;
sc[0][1]=0;
sc[0][2]=0;
sc[1][0]=0;
sc[1][1]=dec; //for scaling
sc[1][2]=0;
sc[2][0]=0;
sc[2][1]=0;
sc[2][2]=1;
for(i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
mul1[i][j]=0;
for(int k=0;k<3;k++)
{
mul1[i][j]=mul1[i][j]+t2[i][k]*sc[k][j];
} } }
break;
default:cout<<"Your choice is wrong!!";
}
for(i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
mul2[i][j]=0;
for(int k=0;k<3;k++)
{
mul2[i][j]=mul2[i][j]+mul1[i][k]*t1[k][j];
} } }
for(i=0;i<3;i++)
{
for(int j=0;j<n;j++)
{
mul3[i][j]=0;
for(int k=0;k<3;k++)
{
mul3[i][j]=mul3[i][j]+mul2[i][k]*mat[k][j];
} } }
for(i=0;i<2;i++)
{
for(int j=0;j<n;j++)
{
ln1[j][i]=mul3[i][j];
}
}
ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
for(i=0;i<n;i++)
{
setcolor(RED);
line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
}
}
else
{
cout<<"Polygon is not valid!!";
}
cout<<"\nDo you wanna continue(y/n):";
cin>>ch;
}
closegraph();
}
No comments:
Post a Comment