CMSC 427 - Computer Graphics
Fall 2003
Generalized Bresenham's Line Drawing Algorithm
This is adapted from the textbook Procedural Elements for Computer Graphics
by David F. Rogers.
This draws a line from (x1, y1) to (x2, y2).
- #define sign(x) ((x > 0)? 1 : ((x < 0)? -1: 0))
- x = x1; y = y1;
- dx = abs(x2 - x1); dy = abs(y2 - y1);
- s1 = sign(x2 - x1); s2 = sign(y2 - y1);
- swap = 0;
- if (dy > dx) { temp = dx; dx = dy; dy = temp; swap = 1;}
- D = 2*dy - dx;
- for (i = 0; i < dx; i++) {
- display_pixel (x, y);
- while (D >= 0)
- { D = D - 2*dx; if (swap) x += s1; else y += s2; }
- D = D + 2*dy; if (swap) y += s2; else x += s1;
- }