Sunday, 24 March 2013

simple 2D rotation for a triangle using C

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
#include<stdlib.h>
void draw (int x1,int y1,int x2,int y2,int x3,int y3);
//int x1,y1,x,y,sx,i,j;
void main()
{
int x1,y1,x2,y2,x3,y3,x,y;
int gdriver=DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode,"c:\tc\bin\bgi");
printf("\n Enter the co ordinates");
scanf("%d%d",&x1,&y1);
scanf("%d%d",&x2,&y2);
scanf("%d%d",&x3,&y3);
line (x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x3,y3,x1,y1);
draw(x1,y1,x2,y2,x3,y3);
getch();
}
void draw(int x1,int y1,int x2,int y2,int x3,int y3)
{
int x,y,p,q,d,a1,b1 ,a2,b2,a3,b3;
float a;
printf("\n Enter the rotation point");
scanf("%d%d",&x,&y);
printf("\n Enter the rotation angle");
scanf("%d",&d);
p=x;
q=y;
a=((d*3.14)/180);
a1=p+(x1-p)*cos(a)-(y1-q)*sin(a);
b1=p+(y1-p)*sin(a)+(x1-q)*cos(a);
a2=p+(x2-p)*cos(a)-(y2-q)*sin(a);
b2=p+(y2-p)*sin(a)+(x2-q)*cos(a);
a3=p+(x3-p)*cos(a)-(y3-q)*sin(a);
b3=p+(y3-p)*sin(a)+(x3-q)*cos(a);
line(a1,b1,a2,b2);
line(a2,b2,a3,b3);
line(a3,b3,a1,b1);
}

No comments:

Post a Comment