123 Eng

Engineering the engineers™


Latest Jobs   Forum Map

 


Home
Source Codes
Engineering Colleges

Training  Reports
Seminar Reports
Placement Papers

Forums

   Computer Science / IT
   Electronics
   Electrical
   Mechanical
   Chemical
   Civil

   CAT / MBA

   GMAT / Foreign MBA
Latest Jobs

Engineering Jobs / Technical Jobs
Management Jobs

Sitemap
Terms of use

Displaying  Source Code(s)  
 

 
Transformation 2D [ Scaling, Translation, Rotation . . .]

--------------------------------------------------------------------------------

Description : Simple Prog 4 2d Transformation


//TransFormation//
// Rakesh Juyal //
// 2k3mc067 //

#include "Stdio.h"
#include "conio.h"
#include "math.h"
#include "graphics.h"

void intgraph();
void display_cordinate(char bg_color,char line_color);
int Create_poly(int poly[][2]);
void fill_poly(int poly[][2],int points,char line_color,char fill_color);
void Identity(float Matrix[3][3]);
void Translate_to_Relative(int poly[][2],int points,int Xdis,int Ydis);

void main()
{
int poly[3][2],i,points,Xdis,Ydis;
float Sx,Sy,Matrix[3][3],temp,Cos,Sin;
char ch;
intgraph();

setfillstyle(8,RED);
points=Create_poly(poly);
display_cordinate(DARKGRAY,WHITE);
fill_poly(poly,points,WHITE,RED);

getch();
Identity(Matrix);
Xdis=0-poly[0][0];
Ydis=0-poly[0][1];

Translate_to_Relative(poly,points,Xdis,Ydis);

Menu:
restorecrtmode();
do
{
clrscr();
printf("


================================");
printf("
1. Scaling");
printf("
2. Translation");
printf("
3. Rotation");
printf("
4. Reflection [ X axis ]");
printf("
5. Reflection [ Y axis ]");
printf("
6. Reflection [ X=Y axis ]");
printf("
7. Draw ");
printf("
8. EXIT ");
printf("

================================");
printf("
Choose Ur Destiny:- ");
ch=getche();
}while((ch<'1')||(ch>'8'));

switch(ch)
{
case '1':
printf("
Enter Scaling Ratio:- ");
printf("
Sx:- ");
scanf("%f",&Sx);
printf(" Sy:- ");
scanf("%f",&Sy);
for(i=0;i<3;i++)
{
Matrix[i][0]=Matrix[i][0]*Sx;
Matrix[i][1]=Matrix[i][1]*Sy;
}
goto Menu;

case '2':
printf("
Enter Translation [Relative]:- ");
printf("
Tx:- ");
scanf("%f",&Sx);
printf(" Ty:- ");
scanf("%f",&Sy);

Matrix[2][0]=Matrix[2][0]+Sx;
Matrix[2][1]=Matrix[2][1]+Sy;

goto Menu;

case '3':
printf("
Enter Rotation Angle [Degree]:- ");
scanf("%f",&Sx);

Sx=(Sx*3.14)/180;
Cos=cos(Sx);
Sin=sin(Sx);
for(i=0;i<=2;i++)
{
temp=Matrix[i][0]*Cos-Matrix[i][1]*Sin;
Matrix[i][1]=Matrix[i][0]*Sin+Matrix[i][1]*Cos;
Matrix[i][0]=temp;
}
goto Menu;

case '4':
Matrix[1][1]=Matrix[1][1]*-1;
printf("
Done");
getch();

goto Menu;

case '5':
Matrix[0][0]=Matrix[0][0]*-1;
printf("
Done");
getch();

goto Menu;

case '6':
Matrix[0][1]=1;
Matrix[1][1]=1;
printf("
Done");
getch();
goto Menu;

case '7':
for(i=0;i<=points;i++)
{
temp=poly[i][0]*Matrix[0][0]+poly[i][1]*Matrix[1][0]+Matrix[2][0];

poly[i][1]=poly[i][0]*Matrix[0][1]+poly[i][1]*Matrix[1][1]+Matrix[2][1];
poly[i][0]=temp;
}

case '8':
getch();
// closegraph();
exit(0);
}
setgraphmode(2);
display_cordinate(DARKGRAY,WHITE);
Translate_to_Relative(poly,points,-Xdis,-Ydis);
fill_poly(poly,points,CYAN,RED);
getch();
restorecrtmode();
do
{
clrscr();
printf("


Do you Want to Switch to MENU [Y|N]:- ");
ch=getche();
}while( (ch!='Y') && (ch!='N') );
if(ch=='Y')
{
Identity(Matrix);
Xdis=0-poly[0][0];
Ydis=0-poly[0][1];

Translate_to_Relative(poly,points,Xdis,Ydis);
goto Menu;
}
closegraph();
}

void intgraph()
{
int g=DETECT,d;
initgraph(&g,&d,"c:\tc\bgi");
}

void fill_poly(int poly1[][2],int points,char line_color,char fill_color)
{
int pol[20],i;
char str[2];
for(i=0;i<=points;i++)
{
pol[i*2]=poly1[i][0];
pol[i*2+1]=poly1[i][1];
}
pol[i*2]=poly1[0][0];
pol[i*2+1]=poly1[0][1];

setcolor(line_color);
setfillstyle(8,fill_color);
fillpoly(points+1,pol);

setcolor(fill_color);
settextstyle(1,0,3);
for(i=0;i<=points;i++)
{
sprintf(str,"%c",i+'a');
outtextxy(poly1[i][0],poly1[i][1],str);
}
}

void Identity(float Matrix[3][3])
{
int i,j;
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
if(i==j)
Matrix[i][j]=1;
else
Matrix[i][j]=0;
}
}
}
int Create_poly(int poly[][2])
{
poly[0][0]=200;
poly[0][1]=20;

poly[1][0]=300;
poly[1][1]=150;

poly[2][0]=130;
poly[2][1]=280;

return 2;
}

void display_cordinate(char bg_color,char line_color)
{
int i;
setbkcolor(bg_color);
setcolor(line_color);
for(i=0;i<=640;i+=50)
{
line(i,0,i,480);
}

for(i=0;i<=480;i+=50)
{
line(0,i,640,i);
}
rectangle(0,0,639,479);
}

void Translate_to_Relative(int poly[][2],int points,int Xdis,int Ydis)
{
int i;
for(i=0;i<=points;i++)
{
poly[i][0]=poly[i][0]+Xdis;
poly[i][1]=poly[i][1]+Ydis;
}
}

 

 

 

Contribute content or training reports / feedback / Comments
job placement papers
All rights reserved © copyright 123ENG