PRACTICAL NO: 08
Q) Write a program in C for two dimensional transformation (Rotation).
Code:
#include<stdio.h>                                         for(int i=0;i<edges;i++)
#include<conio.h>                                         {
#include<graphics.h>                                      printf("enter edge (x%d,y%d):",i,i);
#include<math.h>                                          scanf("%d%d",&figure[2*i],&figure[2*
void rotate(int figure[],int edges,double        i+1]);
angle,int cx,int cy)                                     }
{                                                        figure[2*i]=figure[0];
        double x,y;                                      figure[2*i+1]=figure[1];
        angle=-1*(angle*3.14/180);                       edges+=1;
        double cos_a=cos(angle);                         printf("Enter angle of rotation in
        double sin_a=sin(angle);                 degrees:");
        for(int i=0;i<edges;i++)                         scanf("%lf",&angle);
        {                                                printf("Enter the center of
        x=figure[2*i]-cx;                        rotation:\n");
        y=figure[2*i+1]-cy;                              printf("cx:");
        figure[2*i]=ceil((x*cos_a)-                      scanf("%d",&cx);
(y*sin_a)+cx);                                           printf("cy:");
        figure[2*i+1]=ceil((x*sin_a)+(y*cos_a)           scanf("%d",&cy);
+cy);                                                    cy=max_y-cy;
        }                                                cleardevice();
}                                                        setbkcolor(WHITE);
void main()                                              setcolor(GREEN);
{                                                        setlinestyle(SOLID_LINE,0,3);
        int figure[20],edges;                            drawpoly(edges,figure);
        double angle;                                    getch();
        int cx=0,cy=0;                                   for(i=0;i<edges;i++)
        int gd,gm;                                       figure[2*i+1]=max_y-figure[2*i+1];
        detectgraph(&gd,&gm);                            rotate(figure,edges,angle,cx,cy);
        initgraph(&gd,&gm,"C:\\TC\\BGI");                for(i=0;i<edges;i++)
        int max_y=getmaxy();                             figure[2*i+1]=max_y-figure[2*i+1];
        clrscr();                                        setcolor(RED);
        cleardevice();                                   drawpoly(edges,figure);
        printf("Enter Number of Edges:");                getch();
        scanf("%d",&edges);                      }
          PRACTICAL NO: 08
Output: