Tuesday, October 1, 2013

C graphics program to translate a triangle from one position to another in both directions (x and y ) in all quadrants

 /* This C program will  translate a triangle from one position to another in both directions (x and y ) in all quadrants and is compiled  using Turbo C++ ver 3.0*/

#include<graphics.h>
#include<conio.h>
#include<stdio.h>
void main()
{
int gd=DETECT,gm;
int i,xmid,ymid,x1,y1,x2,y2,x3,y3,xtrans,ytrans,x,y,dy,dx,p,gap=50,temp;
float m;
char str[5];
clrscr();
initgraph(&gd,&gm,"..\\bgi");
setbkcolor(BLUE);
printf("Enter first co-ords of the triangle ( eg : 50 50 ) \n");
scanf("%d %d",&x1,&y1);
printf("Enter second co-ords of the triangle ( eg : 100 100 ) \n");
scanf("%d  %d",&x2,&y2);
printf("Enter third co-ords of the triangle ( eg : 150 50 ) \n");
scanf("%d  %d",&x3,&y3);

xmid= getmaxx()/2;
ymid= getmaxy()/2;
line(5,ymid,getmaxx()-5,ymid);
line(xmid+3,5,xmid+3,getmaxy()-5);

for( i= xmid+gap;i<getmaxx()-5;i=i+gap)
{
outtextxy(i,ymid-3,"|");
itoa(i-xmid,str,10);
outtextxy(i,ymid+3,str);
}
for( i= ymid-gap;i>5;i=i-gap)
{
outtextxy(xmid,i,"-");
itoa(ymid-i,str,10);
outtextxy(xmid+5,i,str);

}
for( i= xmid-gap;i>5;i=i-gap)
{

outtextxy(i,ymid-3,"|");
itoa(-(xmid-i),str,10);
outtextxy(i-6,ymid+3,str);

}
for( i= ymid+gap;i<getmaxy()-5;i=i+gap)
{
outtextxy(xmid,i,"-");
itoa(-(i-ymid),str,10);
outtextxy(xmid+8,i,str);
}
line(x1+xmid,ymid-y1,x2+xmid,ymid-y2);
line(x2+xmid,ymid-y2,x3+xmid,ymid-y3);
line(x3+xmid,ymid-y3,x1+xmid,ymid-y1);
printf("\nEnter the no of points to be moved in X and in Y direction");
scanf("%d  %d",&xtrans,&ytrans);
setcolor(0);  // setting color to black to hide drawn triangle
line(x1+xmid,ymid-y1,x2+xmid,ymid-y2);
line(x2+xmid,ymid-y2,x3+xmid,ymid-y3);
line(x3+xmid,ymid-y3,x1+xmid,ymid-y1);
setcolor(255); // to set color back to white
line(x1+xmid+xtrans,ymid-y1-ytrans,x2+xmid+xtrans,ymid-y2-ytrans);
line(x2+xmid+xtrans,ymid-y2-ytrans,x3+xmid+xtrans,ymid-y3-ytrans);
line(x3+xmid+xtrans,ymid-y3-ytrans,x1+xmid+xtrans,ymid-y1-ytrans);

getch();
closegraph();
}



Sample Input :

  x1 ,y1   :  50   50
  x2, y2   : 100 100
  x3 ,y3   :150   50   

1 comment:

  1. sir can you please explain me why you used (xmid+x1) and (ymid-y1)?
    And also the code to draw x-y plane.

    ReplyDelete