3.Bresenham's Line Drawing Algorithm

#include<stdio.h>

#include<math.h>

#include<conio.h>

#include<graphics.h>


void main() {

int x1, x2, y1, y2;

int gd = DETECT, gm;

void linebres(int, int, int, int);

printf("Enter the two end points:");

scanf("%d%d%d%d", &x1, &x2, &y1, &y2);

initgraph(&gd, &gm, "");

cleardevice();

linebres(x1, y1, x2, y2);

getch();

line(x1, y1, x2, y2);

getch();

closegraph();

}


void linebres(int x1, int y1, int x2, int y2) {

int dx = abs(x1 - x2), dy = abs(y1 - y2);

int p, x, y, i, xend, yend;

if (dx != 0) {

p = 2 * dy - dx;

if (x1 > x2) {

x = x2;

y = y2;

xend = x1;

}

else {

x = x1;

y = y1;

xend = x2;

}

putpixel(x, y, 2);

for (i = x; i < xend; i++) {

x += 1;

if (p < 0)

p += 2 * dy;

else

p += 2 * (dy - dx);

}

putpixel(x, y, 2);

}

else {

p = 2 * dx - dy;

if (y1 > y2) {

x = x2;

y = y2;

yend = y2;

}

putpixel(x, y, 2);

for (i = y; i < yend; i++) {

y += 1;

if (p < 0)

p += 2 * dx;

else {

x += 1;

p += 2 * (dx - dy);

}

putpixel(x, y, 2);

}

}

}