C Program for Bresenham line drawing algorithm

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJfShSmc4uzJ32B_Cnh6KDE7EeSGsUpqwnmXpsZMSrMSp0wjgo7gGWZu_JIDHC_zUiWwWkPBhm3Pz_vS0k-tjHPGbd4J7sxNkEVv5q-YbMtId0PtXLQqi2n_k4Dee10jKN6F-IOkz4Wqgg/s1600/c+and+c%252B%252B+meansofmine.jpg
ALGORITHM:

1.      Start
2.      Get the values of the end points as (x1,y1) and (x2,y2)
3.      Initialize the graphics mode.
4.      calculate dx=abs(x2-x1) dy=abs(y2-y1)
5.      Initialize starting point x=x1,y=y1
6.      e= 2*dy-dx
7.      i=1
8.      plot(x,y)
9.      y=y+1
10.  e=e-2dx
11.  repeat 9&10  until e>=0
12.  x=x+1
13.  e=e+2dy
14.  i=i+1
15.  If i<dx then go to step 8.

PROGRAM:


#include<stdio.h>
#include<math.h>
#include<graphics.h>
int main()
{
int dx,dy,p,tdy,tdydx,xa,xb,ya,yb;
int x,y,xend;
int gd=DETECT,gm;
initgraph(&gd,&gm," ");
printf("\nEnter the value of x1,y1:\t");
scanf("%d\t%d",&xa,&ya);
printf("\nEnter the value of x2,y2:\t");
scanf("%d\t%d",&xb,&yb);
dx=abs(xa-xb);
dy=abs(ya-yb);
p=2*dy-dx;
tdy=2*dy;
tdydx=2*(dy-dx);
if(xa>xb)
{
x=xb;
y=yb;
xend=xa;
}
else
{
x=xa;
y=ya;
xend=xb;
}
putpixel(x,y,11);
outtextxy(xa,ya,"(xa,ya)");
outtextxy(xb,yb,"(xb,yb)");
while(x<xend)
{
x++;
if(p<0)
{
p=p+tdy;
}
else
{
y++;
p=p+tdydx;
}
putpixel(x,y,11);
delay(50);
}
closegraph();
}

0 comments:

Post a Comment