Develop a program to draw a line using Bresenham’s line-drawing technique
Program:-
#include <GL/glut.h>
// Define the points for the line
int x0 = 50, y0 = 50, x1 = 200, y1 = 200;
void bresenhamLine(int x0, int y0, int x1, int y1) {
int dx = x1 - x0;
int dy = y1 - y0;
int d = 2*dy - dx;
int incrE = 2*dy;
int incrNE = 2*(dy - dx);
int x = x0;
int y = y0;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
glVertex2i(x, y);
while (x < x1) {
if (d <= 0) {
d += incrE;
x++;
} else {
d += incrNE;
x++;
y++;
}
glVertex2i(x, y);
}
glEnd();
glFlush();
}
void display() {
bresenhamLine(x0, y0, x1, y1);
}
void init() {
glClearColor(0.0, 0.0, 0.0, 1.0);
glColor3f(1.0, 1.0, 1.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 300.0, 0.0, 300.0);
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("Bresenham's Line Drawing");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
