2D Transformation
1. Simple Translation
1. Simple Translation
//2D Translation: #include<graphics.h> #include<stdlib.h> #include<stdio.h> #include<math.h> void main() { int graphdriver=DETECT,graphmode,errorcode; int i; int x2,y2,x1,y1,x,y; printf("Enter the 2 line end points:"); printf("x1,y1,x2,y2"); scanf("%d%d%d%d",&x1,&y1,&x2,&y2); initgraph(&graphdriver,&graphmode,"c:\\tc\\bgi"); line(x1,y1,x2,y2); printf("Enter translation co-ordinates "); printf("x,y"); scanf("%d%d",&x,&y); x1=x1+x; y1=y1+y; x2=x2+x; y2=y2+y; printf("Line after translation"); line(x1,y1,x2,y2); getch(); closegraph(); }2D Rotation
2D Rotation: #include<graphics.h> #include<stdlib.h> #include<stdio.h> #include<math.h> void main() { int graphdriver=DETECT,graphmode,errorcode; int i; int x2,y2,x1,y1,x,y,xn,yn; double r11,r12,r21,r22,th; clrscr(); printf("Enter the 2 line end points:"); printf("x1,y1,x2,y2"); scanf("%d%d%d%d",&x1,&y1,&x2,&y2); initgraph(&graphdriver,&graphmode,"c:\\tc\\bgi"); line(x1,y1,x2,y2); printf("\n\n\n[ Enter the angle"); scanf("%lf",&th); r11=cos((th*3.1428)/180); r12=sin((th*3.1428)/180); r21=(-sin((th*3.1428)/180)); r22=cos((th*3.1428)/180); //printf("%lf %lf %lf %lf",r11,r12,r21,r22); xn=((x2*r11)-(y2*r12)); yn=((x2*r12)+(y2*r11)); line(x1,y1,xn,yn); getch(); closegraph(); }2D Scaling
//2D Scaling: #include<graphics.h> #include<stdlib.h> #include<stdio.h> #include<math.h> void main() { int graphdriver=DETECT,graphmode,errorcode; int i; int x3,y3,x2,y2,x1,y1,x,y; printf("Enter the 2 line end points:"); printf("x1,y1,x2,y2,x3,y3"); scanf("%d%d%d%d",&x1,&y1,&x2,&y2); initgraph(&graphdriver,&graphmode,"c:\\tc\\bgi"); cleardevice(); rectangle(x1,y1,x2,y2); printf("Enter scaling co-ordinates "); printf("x,y"); scanf("%d%d",&x,&y); x1=(x1*x); y1=(y1*y); x2=(x2*x); y2=(y2*y); printf("Line after scaling"); rectangle(x1,y1,x2,y2); getch(); closegraph(); }2. Scaling, Rotation, Translation
#include<graphics.h> #include<conio.h> #include<stdlib.h> #include<stdio.h> #include<math.h> void rotation() { int graphdriver=DETECT,graphmode,errorcode; int i; int x2,y2,x1,y1,x,y,xn,yn; double r11,r12,r21,r22,th; clrscr(); printf("Enter the 2 line end points:"); printf("x1,y1,x2,y2"); scanf("%d%d%d%d",&x1,&y1,&x2,&y2); initgraph(&graphdriver,&graphmode,"c:\\tc\\bgi"); line(x1,y1,x2,y2); printf("\n\n\n[ Enter the angle"); scanf("%lf",&th); r11=cos((th*3.1428)/180); r12=sin((th*3.1428)/180); r21=(-sin((th*3.1428)/180)); r22=cos((th*3.1428)/180); //printf("%lf %lf %lf %lf",r11,r12,r21,r22); xn=((x2*r11)-(y2*r12)); yn=((x2*r12)+(y2*r11)); line(x1,y1,xn,yn); getch(); closegraph(); } void scalling() { int graphdriver=DETECT,graphmode,errorcode; int i; int x2,y2,x1,y1,x,y; printf("Enter the 2 line end points:"); printf("x1,y1,x2,y2"); scanf("%d%d%d%d",&x1,&y1,&x2,&y2); initgraph(&graphdriver,&graphmode,"c:\\tc\\bgi"); line(x1,y1,x2,y2); printf("Enter scaling co-ordinates "); printf("x,y"); scanf("%d%d",&x,&y); x1=(x1*x); y1=(y1*y); x2=(x2*x); y2=(y2*y); printf("Line after scaling"); line(x1,y1,x2,y2); getch(); closegraph(); } void translation() { int graphdriver=DETECT,graphmode,errorcode; int i; int x2,y2,x1,y1,x,y; printf("Enter the 2 line end points:"); printf("x1,y1,x2,y2"); scanf("%d%d%d%d",&x1,&y1,&x2,&y2); initgraph(&graphdriver,&graphmode,"c:\\tc\\bgi"); line(x1,y1,x2,y2); printf("Enter translation co-ordinates "); printf("x,y"); scanf("%d%d",&x,&y); x1=x1+x; y1=y1+y; x2=x2+x; y2=y2+y; printf("Line after translation"); line(x1,y1,x2,y2); getch(); closegraph(); } void main() { int ch; printf("\n1.Rotation\n2.Translation\n3.Scalling\4.Exit\nEnter your choice:"); scanf("%d",&ch); do{ switch(ch){ case 1:rotation(); break; case 2:translation(); break; case 3:scalling(); break; case 4:exit(0); break; } }while(ch==4); }
Comments
Post a Comment