Final4Ever Community
Your Ad Here

Go Back   Final4Ever Community > Final4Ever Community > Web Templates, Programming Language, Scripts & E-Books > Visual Basic & C++
Visual Basic & C++ All About VB and C++

Donation Goal
Goal amount for this month: 200 EUR, Received: 0 EUR (0%)
Donate Now

Direct download 2D transformation in C programming here
Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 9th May 2007, 07:27
Rolling on
 
Join Date: Oct 2006
Posts: 79
Lightbulb 2D transformation in C programming

//TransFormation//
// SOFTWARE ENGINEERING 2006 FULL TIME //
// UNIVERSITY OF TECHNOLOGY MAURITIUS //

#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;
}
}
Reply With Quote
Reply

Bookmarks

Tags
programming , transformation

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
The Art of Multiprocessor Programming neilbla E-Book Download 0 17th July 2008 17:39
Programming Ebooks mastercallisto E-Book Download 0 27th May 2008 20:02
Programming C Third Edtion elango87 E-Book Download 0 26th March 2008 19:56
PHP 5 Power Programming sip Guest Downloads 1 6th September 2007 04:59

Your Ad Here

All times are GMT +2. The time now is 06:10.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.

Final4Ever Forums  |   PhazeDDL.com  |   AdultShare.org  |   Final4Ever.co.uk  |   F4E.info  |   HellDDL.com