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: