Bresenham's Line Drawing Algorithm

2)

CODE:

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
main()
{
int gd=DETECT,gm;
int x1,y1,x2,y2;
char a[50],b[50];
initgraph(&gd,&gm," ");
printf("\nEnter the starting point");
scanf("%d%d",&x1,&y1);
printf("\nEnter the ending point");
scanf("%d%d",&x2,&y2);
cleardevice();
outtextxy(190,60,"**********BRESENHAM'S LINE DRAWING ALGORITHM**********");
x1+=20;
x2+=20;
y1=470-y1;
y2=470-y2;
line(20,20,20,470);
line(20,470,590,470);
outtextxy(16,15,"^y");
outtextxy(590,468,">x");
bresenham(x1,y1,x2,y2);
getch();
closegraph();
}


bresenham(x1,y1,x2,y2)
{
int i,dx,dy,x,y,c1,c2,xend,yend,xin,yin,p;
dx=abs(x1-x2);
dy=abs(y1-y2);
xend=x2;
yend=y2;
x=x1;
y=y1;
if(x==xend)
xin=0;
if(y==yend)
yin=0;
if(xend<x)
xin=-1;
if(yend<y)
yin=-1;
else
yin=1;
if(dy<dx)
{
p=2*dy-dx;
c1=2*dy;
c2=2*(dy-dx);
for(i=dx;i>0;i--)
{
x=x+xin;
if(p<0)
p+=c1;
else
{
y=y+yin;
p+=c2;
}
putpixel(x,y,WHITE);
}
}
else
{
p=2*dx-dy;
c1=2*dx;
c2=2*(dx-dy);
for(i=dy;i>0;i--)
{
y=y+yin;
if(p<0)
p+=c1;
else
{
x=x+xin;
p+=c2;
}
putpixel(x,y,WHITE);
}
}
}

OUTPUT:



Comments

POPULAR POSTS

POPULAR POSTS