Saturday, May 9, 2009

C program for 2D Transformations

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>

void translate();
void scale();
void rotate();

void main()
{
int ch;
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc\\bgi");

setcolor(6);
outtextxy (100,88,"Object.");
rectangle(100,150,150,100);

printf("---MENU---");
printf("\n 1)Translate\n 2)Scale\n 3)Rotate");
printf("\nEnter your choice: ");
scanf("%d",&ch);
cleardevice();

switch(ch)
{
case 1: translate();
break;
case 2: scale();
break;
case 3: rotate();
break;
default: printf("you have enterd wrong choice");
break;
}
getch();
closegraph();
}

void translate()
{
int tx,ty;
setcolor(2);
outtextxy(240,10,"TRANSLATION");
outtextxy(238,20,"------------");
printf("\nEnter tx: ");
scanf("%d",&tx);
printf("\nEnter ty: ");
scanf("%d",&ty);
cleardevice();
rectangle(100,150,150,100);
printf("\nAfter Translation");
rectangle(100+tx,150+ty,150+tx,100+ty);
}

void scale()
{
int sx,sy;
setcolor(2);
outtextxy(240,10,"SCALING");
outtextxy(238,20,"--------");
printf("\nEnter sx: ");
scanf("%d",&sx);
printf("\nEnter sy: ");
scanf("%d",&sy);
cleardevice();
rectangle(100,150,150,100);
printf("\nAfter Scaling");
rectangle(100*sx,150*sy,150*sx,100*sy);
}

void rotate()
{
float theta;
int x1,x2,x3,x4;
int y1,y2,y3,y4;
int ax1,ax2,ax3,ax4,ay1,ay2,ay3,ay4;
int refx,refy;
printf("\nEnter the angle for rotation: ");
scanf("%f",&theta);
theta=theta*(3.14/180);
cleardevice();
setcolor(2);
outtextxy(240,10,"ROTATE");
outtextxy(238,20,"-------");
refx=100;
refy=100;

x1=100;
y1=100;
x2=150;
y2=100;
x3=150;
y3=150;
x4=100;
y4=150;

ax1=refy+(x1-refx)*cos(theta)-(y1-refy)*sin(theta);
ay1=refy+(x1-refx)*sin(theta)+(y1-refy)*cos(theta);

ax2=refy+(x2-refx)*cos(theta)-(y2-refy)*sin(theta);
ay2=refy+(x2-refx)*sin(theta)+(y2-refy)*cos(theta);

ax3=refy+(x3-refx)*cos(theta)-(y3-refy)*sin(theta);
ay3=refy+(x3-refx)*sin(theta)+(y3-refy)*cos(theta);

ax4=refy+(x4-refx)*cos(theta)-(y4-refy)*sin(theta);
ay4=refy+(x4-refx)*sin(theta)+(y4-refy)*cos(theta);
rectangle(100,150,150,100);
line(ax1,ay1,ax2,ay2);
line(ax2,ay2,ax3,ay3);
line(ax3,ay3,ax4,ay4);
line(ax4,ay4,ax1,ay1);


}

17 comments:

box offices said...

n you learn me about seo??

Angad said...

can u be a little clear?? coz that made no sense

Anonymous said...

i had gone through ur programs on computer graphics.. i am doing engineering in CS from Thiagarajar college of engineering..i couldnt use any of your program because all our lab and theory exams are over..
any how i look into all. i feel them as a complicated ones.. because some easy programs are made as complicated.. it will make both time and space complexity..and my request is to add comments 4 ur program.. not for each and every line but for some new default functions and for modules.. any how ur works is to be appreciated.. congrats.. well done..

sushma said...

very help full.!!!!Thanks a lot

Anonymous said...

thanx a ton...:)

vipul said...

it ws bullshit...!!! f u

Ajinkya said...

yes vipul is right..f the program..

varun said...

hey sushma sexy... i m also very helpful ... cn i fuck u,..@!!!!

sushma said...

hey ur dick is 2 small...i want angad's dick...it's just like a 2-D transformation..i want to rotate it my way..translate it my way..and scale it to maxm size..

Anonymous said...

abey sale siddharth chutiye .. tu badndh ho ja... dimag ki maa ben mat kar... let me fck her first...

Anonymous said...

sushma 1 no ki randi hai

Anonymous said...

i'm sorry but why it can't run on my code block?

Mukesh Pathak said...

Thank You very much.
For more PHP Programming Tutorials click.

Free Study said...

regular expression regular definition cd
relocation linking concept
three dimensional display methods
Throw Keyword in Java
integrity constraints in dbms
canonical cover
8086 pin diagram
doubly linked list
Absolute Loaders
Storage allocation strategies

Free Study said...

Different Loading Schemes
Relocation: Linking Concept
Regular Expression and Regular Definition
IEEE 802.11 Architecture
Phases: Language processor (Toy compiler)
80386 Architecture
Block Cipher Principles

Free Study said...

Direct View Storage Tubes (DVST)
One pass & Two pass Assembler
8085 Programming Model
Shadow Paging Technique
Input Buffering
Block Diagram (8255A): Programmable Peripheral Interface
classification memory

navya sree said...

HTML Online Training
CSS Online Training
HTML5 Online Training
Selenium Online Training