Bresenham’s Line Drawing Algorithm
Code
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void bres(int,int,int,int);
void main()
{
int gd=DETECT,gm,x1,y1,x2,y2;
initgraph(&gd,&gm,"D:\\turboc3\\bgi");
cleardevice();
printf("BRESENHAM LINE DRAWING ALOGORITHM\n");
printf("Enter first line coordinates");
printf("\n----------------------------");
printf("\nx-coordinate:");
scanf("%d",&x1);
printf("\ny-coordinate:");
scanf("%d",&y1);
printf("Enter second line coordinates");
printf("\n-----------------------------");
printf("\nx-coordinate:");
scanf("%d",&x2);
printf("\ny-coordinate:");
scanf("%d",&y2);
cleardevice();
bres(x1,y1,x2,y2);
getch();
closegraph();
restorecrtmode();
}
void bres (int x1, int y1 , int x2, int y2)
{
int dx=abs(x1-x2);
int dy=abs(y1-y2);
int p=2*dy-dx ;
int twoDy=2*dy,twoDyDx = 2*(dy - dx);
int x , y, xe,ye;
if (x1>x2 )
{
x = x2;
y = y2;
xe = x1;
}
else
{
x=x1;
y=y1;
xe = x2;
}
putpixel (abs(x),abs(y),15);
while (x<xe)
{
++x;
if (p<0)
p += twoDy;
else
{
++y;
p+=twoDyDx;
}
putpixel(abs(x),abs(y),15);
}
}