#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
double object[3][3],translate[3][3],output[3][3], rotate[3][3],output2[3][3],output3[3][3];
int n;
void input(int n)
{for(int i=0;i<n;i++)
{cout<<"\nenter x and y for cordinate #"<<i+1<<endl;
cin>>object[i][0]>>object[i][1];
}
}
void matmulti(double a[10][3],double b[3][3],double c[10][3])
{for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
for(int k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
void display(double a[10][3],int n)
{ for(int i=0;i<n-1;i++)
line(a[i][0],a[i][1],a[i+1][0],a[i+1][1]);
line(a[0][0],a[0][1],a[n-1][0],a[n-1][1]);
}
void main()
{int i,j,ch,gd=DETECT,gm;
double theta;
translate[0][0]=1;
translate[1][1]=1;
translate[2][2]=1;
object[0][2]=1;
object[1][2]=1;
object[2][2]=1;
cout<<"\n 1.rotate a line";
cout<<"\n 2.rotate a triangle";
cout<<"\n enter your choice : ";
cin>>ch;
if(ch==1)
n=2;
if(ch==2)
n=3;
input(n);
initgraph(&gd,&gm,"");
display(object,n);
getch();
closegraph();
cout<<"\nenter the fix points tx and ty\n";
cin>>translate[2][0]>>translate[2][1];
cout<<"\nenter the angle to rotate";
cin>>theta;theta=-theta;
theta=(3.14)*theta/180;
rotate[0][0]=cos(theta);
rotate[0][1]=sin(theta);
rotate[1][0]=-sin(theta);
rotate[1][1]=cos(theta);
rotate[2][2]=1;
translate[2][0]=(-translate[2][0]);
translate[2][1]=(-translate[2][1]);
matmulti(translate,rotate,output);
translate[2][0]=(-translate[2][0]);
translate[2][1]=(-translate[2][1]);
matmulti(output,translate,output2);
matmulti(object,output2,output3);
initgraph(&gd,&gm,"");
display(object,n);
setcolor(12);
display(output3,n);
getch();
}