Headlines
Loading...
Computer graphics program - 2-D transformations (Translation, scaling, Rotation, Reflection & Shear).

Computer graphics program - 2-D transformations (Translation, scaling, Rotation, Reflection & Shear).

2- D transformations (Translation, scaling, Rotation, Reflection & Shear).
Code
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
#include<E:\mca\graphics\fscale.c>
#include<E:\mca\graphics\freflect.c>
#include<E:\mca\graphics\frotate.c>
#include<E:\mca\graphics\ftranslate.c>
#include<E:\mca\graphics\fshear.c>
#include<E:\mca\graphics\fdisplay.c>
void scaling(int x[][2],int n);
void reflect(int x[][2],int n);
void rotate(int y[][2],int n);
void translate(int y[][2],int n);
void shear(int y[][2],int n);
void displayimage(int x[][2],int n,int);
void print(int a[][2],int n);

void main()
{
int gd=DETECT,gm,x[10][2],n,i,j;
initgraph(&gd,&gm,"c:\\tc\\bgi");
printf("Enter No of Edges :: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\nEnter X%d Y%d :: ",i,i);
scanf("%d%d",&x[i][0],&x[i][1]);
}
up:
clrscr();
cleardevice();
setbkcolor(WHITE);
printf("\n1:To Scaling\n");
printf("2:To Translate\n");
printf("3:To Rotate\n");
printf("4:To Reflect\n");
printf("5:To Shear\n");
printf("6:Exit\nchoice:: ");
scanf("%d",&j);
clrscr();
cleardevice();

drawline();
switch(j)
{
case 1:
{
scaling(x,n);
goto up;
}
case 2:
{
translate(x,n);
goto up;
}
case 3:
{
rotate(x,n);
goto up;
}
case 4:
{
reflect(x,n);
goto up;
}
case 5:
{
shear(x,n);
goto up;
}
case 6:
{
exit();
}
}  
}

/* TRANSLATE */

void displayimage(int x[][2],int n);

void translate(int y[][2],int n)
{
int tx,ty,i,x[10][2];
printf("\nEnter Translation Factors :: ");
scanf("%d%d",&tx,&ty);
for(i=0;i<n;i++)
{
x[i][0]=tx+y[i][0];
x[i][1]=ty+y[i][1];



}
displayimage(y,n);
displayimage(x,n);
}

/* ROTATE */

void displayimage(int x[][2],int n);

void rotate(int y[][2],int n)
{
int i,x[10][2];
double ange;
printf("\nEnter Angle of Rotation :: ");
scanf("%lf",&ange);
ange=(ange*3.1428)/180;
for(i=0;i<n;i++)
{
x[i][0]=(cos(ange)*y[i][0])-(sin(ange)*y[i][1]);
x[i][1]=(cos(ange)*y[i][1])+(sin(ange)*y[i][0]);
}
displayimage(y,n,1);
displayimage(x,n,2);
}

/* SCALE */

void displayimage(int x[][2],int n);

void scaling(int x[][2],int n)
{
int y[10][2],i;
float sx,sy;
printf("\nEnter Scaling Factors :: ");
scanf("%f%f",&sx,&sy);
for(i=0;i<n;i++)
{
y[i][0]=sx*x[i][0];
y[i][1]=sy*x[i][1];
}
displayimage(x,n,1);
displayimage(y,n,2);
}


/* SHEAR */

void displayimage(int x[][2],int n);


void shear(int y[][2],int n)
{
int x[10][2],i,shx,shy;
printf("Enter shx & shy\n");
scanf("%d%d",&shx,&shy);

for(i=0;i<n;i++)
{
x[i][0]=y[i][0];
x[i][1]=y[i][0]*shx+y[i][1];
}
displayimage(y,n);
displayimage(x,n);

for(i=0;i<n;i++)
{
x[i][0]=y[i][0]+y[i][1]*shy;
x[i][1]=y[i][1];
}
displayimage(x,n);

for(i=0;i<n;i++)
{
x[i][0]=y[i][0]+shy*y[i][1];
x[i][1]=y[i][0]*shx+y[i][1];
}
displayimage(x,n);
}
/* REFLECT */

void displayimage(int x[][2],int n);

void reflect(int y[][2],int n)
{
int x[10][2],i;
for(i=0;i<n;i++)
{
x[i][0]=-y[i][0];
x[i][1]=y[i][1];
}
displayimage(y,n);
displayimage(x,n);


for(i=0;i<n;i++)
{
x[i][0]=y[i][0];
x[i][1]=-y[i][1];
}
displayimage(x,n);
for(i=0;i<n;i++)
{
x[i][0]=-y[i][1];
x[i][1]=-y[i][0];
}
displayimage(x,n);
}

/* DISPLAY */

void displayimage(int x[][2],int n)
{
int i,X,Y,X1,Y1,p;
setcolor(8);
if(n<3)
{
line((getmaxx()/2)+x[0][0],(getmaxy()/2)-x[0][1], (getmaxx()/2)+x[1][0],(getmaxy()/2)-x[1][1]);
}
for(i=0;i<n;i++)
{
if(i<n-1)
p=i+1;
else
p=0;
X=x[i][0];
Y=x[i][1];
X1=x[p][0];
Y1=x[p][1];
line((getmaxx()/2)+X,(getmaxy()/2)-Y,(getmaxx()/2)+X1,(getmaxy()/2)-Y1);
delay(500);
}
getch();
}

drawline()
{
setcolor(8);
line(getmaxx()/2,getmaxy(),getmaxx()/2,0);


line(getmaxx(),getmaxy()/2,0,getmaxy()/2);
return 0;
}

*** PLEASE checkout the Best deals from for top sites like Amazon, Flipkart etc ***