Write a Program to rotate a rectangle about its midpoint

 

Write a Program to rotate a rectangle about its midpoint

  1. #include<iostream.h>  
  2. #include <stdio.h>  
  3. #include<conio.h>  
  4. #include<graphics.h>  
  5. #include<stdlib.h>  
  6. #define pi 3.14  
  7. class arc  
  8. {  
  9.     float x[10], y[10], theta, h1, k1,r[0][10],ang;  
  10.     float p[10][10],p1[10][10],x1[10], y1[10],xm,yx;  
  11.     int i, k, j, n;  
  12.     public:  
  13.     void get();  
  14.     void cal();  
  15.     void map();  
  16.     void graph();  
  17.     void plot();  
  18.     void plot1();  
  19. };  
  20. void arc::get()  
  21. {  
  22.     cout "<<"\n ENTER ANGLE OF ROTATION ";  
  23.            cin>>ang;  
  24.            n = 4;  
  25.            cout<<"\n ENTER";  
  26.          for (i=0; i<n; i++)  
  27.          {  
  28.                cout<<"\n x["<i<<"] and y["<<i<<"]";  
  29.                 cin>>x[i]>>y[i];  
  30.          }  
  31.          h1=x [0] + (([1]-x[0])/2);  
  32.          k1=y[0]+(([3]-y[0])/2);  
  33.          cout<<"\n MIDPOINT OF RECTANGLE IS--"<<h1<<"\t"<<k1;  
  34.          theta=(ang*pi)/180?;  
  35.          r[0][0]=cos (theta);  
  36.          r[0][1]= -sin?(theta);  
  37.          r[0][2]=(-h1*cos(theta))+(k1*sin(theta)+h1;  
  38.          r[1][0]=sin (theta);  
  39.          r [1][1]=cos (theta);  
  40.          r [1][2]=(-h1*sin(theta))+(-k1*cos(theta)+k1;  
  41.          r[2][0]=0;  
  42.          r[2][1]=0;  
  43.          r[2][2]=1;  
  44. }  
  45. void arc ::cal()  
  46. {  
  47.     for(i=0;i<n;i++)  
  48.     {  
  49.         p[0][i]=x[i];  
  50.         p[1][i]=y[i];  
  51.         p[2][i]=1;  
  52.     }  
  53.     for(i=0;i<3;i++)  
  54.     {  
  55.         for(j=0;j<n;j++)  
  56.         {  
  57.             p1[i][j]=0;  
  58.                    for (k=0;k<3;k++)  
  59.             {  
  60.                 p1[i][j]+=r[i][k]*p[k][j];  
  61.             }  
  62.         }  
  63.     }  
  64.     for(i=0;i<n;i++)  
  65.     {  
  66.         x1[i]=p1[0][i];  
  67.         y1[i]=p[1][i];  
  68.     }  
  69. }  
  70. void arc::map()  
  71. {  
  72.     int gd=DETECT, gm;  
  73.     initgraph (&gd, &gm, "");  
  74.     int errorcode = graphresult();  
  75.     /*an error occurred */  
  76.            if (errorcode!=grOK)  
  77.     {  
  78.         printf("Graphics error: %s \n",grapherrormsg (errorcode));  
  79.                       printf("Press and key to halt: ");  
  80.                       getch();  
  81.                       exit(1); /* terminate with an error code */  
  82.             }  
  83. }  
  84. void arc::graph()  
  85. {  
  86.     xm=getmaxx()/2;  
  87.     ym=getmaxy()/2;  
  88.     line (xm, 0, xm, 2 * ym);  
  89.     line (0, ym, 2 * xm, ym);  
  90. }  
  91. void arc :: plot 1()  
  92. {  
  93.     for (i=0;i<n-1;i++)  
  94.     {  
  95.         circle (x1[i]+xm, (-y1[i]+ym), 2);  
  96.         line (x1[i]+xm, (-y1[i]+ym), x[i+1] xm, (-y1[0]+ym));  
  97.     }  
  98.     line (x1[n-1] +xm, (-y1[n-1]+ym), x1[0]+xm, (-y1[0]+ym));  
  99.     getch();  
  100. }  
  101. void arc :: plot ()  
  102. {  
  103.     for (i=0;i<n-1;i++)  
  104.     {  
  105.         circle (x[i]+xm, (-y[i]+ym), 2);  
  106.         line (x[i]+xm, (-y[i]+ym), x[i+1] xm, (-y[i+1]+ym));  
  107.     }  
  108.     circle (x[n-1]+xm, (-y[n-1]+ym),2);  
  109.     line (x[n-1]+xm, (-y[n-1]+ym), x[0]+xm, (-y[0]+ym));  
  110.     getch();  
  111. }  
  112. void main ()  
  113. {  
  114.     class arc a;  
  115.     clrscr();  
  116.     a.map();  
  117.     a.graph();  
  118.     a.get();  
  119.     a.cal();  
  120.     a.plot();  
  121.     a.plot1();  
  122.     getch();  
  123. }  

Output

Computer Graphics Programs

Post a Comment

Previous Post Next Post