#include<graphics.h>
#include<math.h>
void dra(int x,int y,int x1,int y1,int x2,int y2,int x3,int y3)
{
   line(320+x,240-y,320+x1,240-y1);
   line(x1+320,240-y1,320+x2,240-y2);
   line(x2+320,240-y2,320+x3,240-y3);
   line(320+x3,240-y3,x+320,240-y);
}
void main()
{
   int x,y,l,w,i,h,k,b[5][5],c[5][5],j,p,gd=0,gm,t;
   float an,s,co,a[5][5];
   clrscr();
   initgraph(&gd,&gm,"D:\\tc\\bgi");
   printf("Enter a point(x,y): ");
   scanf("%d%d",&x,&y);
   printf("Enter length and width: ");
   scanf("%d%d",&l,&w);
   setcolor(1);
   line(0,240,640,240);
   line(320,0,320,480);
   dra(x,y,x,y+w,x+l,y+w,x+l,y);

   printf("Enter any fixed point(x,y): ");
   scanf("%d%d",&h,&k);
   printf("Enter angle: ");
   scanf("%f",&an);
   for(t=0;t<=an;t++)
   {
   co=cos(t*M_PI/180.0);
   s=sin(t*M_PI/180.0);

   a[0][0]= co;
   a[0][1]=-s;
   a[0][2]=-h*co+k*s+h;

   a[1][0]=s;
   a[1][1]=co;
   a[1][2]=-h*s-k*co+k;

   a[2][0]=0;
   a[2][1]=0;
   a[2][2]=1;

   b[0][0]=x;
   b[0][1]=x;
   b[0][2]=x+l;
   b[0][3]=x+l;

   b[1][0]=y;
   b[1][1]=y+w;
   b[1][2]=y+w;
   b[1][3]=y;

   b[2][0]=1;
   b[2][1]=1;
   b[2][2]=1;
   b[2][3]=1;
   for(i=0;i<3;i++)
   for(j=0;j<4;j++)
   {
      c[i][j]=0;
      for(p=0;p<3;p++)
      c[i][j]=c[i][j]+a[i][p]*b[p][j];
   }
   setcolor(5);
   dra(c[0][0],c[1][0],c[0][1],c[1][1],c[0][2],c[1][2],c[0][3],c[1][3]);
   delay(100);
   setcolor(0);
   if((an-t)>0)
   dra(c[0][0],c[1][0],c[0][1],c[1][1],c[0][2],c[1][2],c[0][3],c[1][3]);
   setcolor(1);
   line(0,240,640,240);
   line(320,0,320,480);
   dra(x,y,x,y+w,x+l,y+w,x+l,y);
   }
   getch();
}