Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
75 views4 pages

Brese Nham

The document describes an implementation of Bresenham's line drawing algorithm in C++ using OpenGL. It includes functions to initialize the display, draw individual pixels, and draw a line between two points by iterating through the pixels and using integer rounding to determine which pixels are part of the line. The main function gets the start and end points of the line from the user, initializes the GLUT window and display callback, and enters the main loop to draw the line.

Uploaded by

Sufiyan Mohammed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
75 views4 pages

Brese Nham

The document describes an implementation of Bresenham's line drawing algorithm in C++ using OpenGL. It includes functions to initialize the display, draw individual pixels, and draw a line between two points by iterating through the pixels and using integer rounding to determine which pixels are part of the line. The main function gets the start and end points of the line from the user, initializes the GLUT window and display callback, and enters the main loop to draw the line.

Uploaded by

Sufiyan Mohammed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

// Bresenham's Line Drawing

#include <GL/gl.h>

#include <GL/glut.h>

#include <stdio.h>

int x1, y1, x2, y2;

void myInit()

glClear(GL_COLOR_BUFFER_BIT);

glClearColor(0.0, 0.0, 0.0, 1.0);

glMatrixMode(GL_PROJECTION);

gluOrtho2D(0, 500, 0, 500);

void draw_pixel(int x, int y)

glBegin(GL_POINTS);

glVertex2i(x, y);

glEnd();

void draw_line(int x1, int x2, int y1, int y2)

int dx, dy, i, e;

int incx, incy, inc1, inc2;


int x,y;

dx = x2-x1;

dy = y2-y1;

if (dx < 0) dx = -dx;

if (dy < 0) dy = -dy;

incx = 1;

if (x2 < x1) incx = -1;

incy = 1;

if (y2 < y1) incy = -1;

x = x1; y = y1;

if (dx > dy)

draw_pixel(x, y);

e = 2 * dy-dx;

inc1 = 2*(dy-dx);

inc2 = 2*dy;

for (i=0; i<dx; i++)

if (e >= 0)

y += incy;

e += inc1;

else

e += inc2;
x += incx;

draw_pixel(x, y);

else

draw_pixel(x, y);

e = 2*dx-dy;

inc1 = 2*(dx-dy);

inc2 = 2*dx;

for (i=0; i<dy; i++)

if (e >= 0)

x += incx;

e += inc1;

else

e += inc2;

y += incy;

draw_pixel(x, y);

}
void myDisplay()

draw_line(x1, x2, y1, y2);

glFlush();

int main(int argc, char **argv)

printf( "Enter (x1, y1, x2, y2)\n");

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

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

glutInitWindowSize(500, 500);

glutInitWindowPosition(0, 0);

glutCreateWindow("Bresenham's Line Drawing");

myInit();

glutDisplayFunc(myDisplay);

glutMainLoop();

return 0;

You might also like