•So dk+1 = dk – 2Dy if dk > 0
•And dk+1 = dk – 2(Dy – Dx) if dk ·
0
•Final
(efficient) implementation:
void draw_line(int x1, int y1, int x2, int y2) {
int x, y = y0;
int dx = 2*(x2-x1), dy = 2*(y2-y1);
int dydx = dy-dx, D = (dy-dx)/2;
for (x = x1 ; x <= x2 ; x++) {
write_pixel(x, y, color);
if (D > 0) D -= dy;
else
{y++; D -= dydx;}
}
}