Back

1. Bresenham's Line Drawing Algorithm

#include <graphics.h>

void bresenhamLine(int x1, int y1, int x2, int y2) {
    int dx = abs(x1 - x2);
    int dy = abs(y1 - y2);
    int p = 2 * dy - dx;
    int twoDy = 2 * dy;
    int twoDyDx = 2 * (dy - dx);
    int x, y,xend;

    if (x1 > x2) {
        x = x2;
        y = y2;
        xend = x1;
    } else {
        x = x1;
        y = y1;
        xend = x2;
    }
    
    putpixel(x, y, WHITE);

    while (x < xend) {
        x++;
        if (p < 0) {
            p += twoDy;
        } else {
            y++;
            p += twoDyDx;
        }
        putpixel(x, y, WHITE);
        delay(2);
    }
}

int main() {
    int gd = DETECT, gm;
    initgraph(&gd, &gm, (char*)"Bresenham's Line Drawing Algorithm");
    
    int x1 = 100, y1 = 100, x2 = 400, y2 = 400;
    bresenhamLine(x1, y1, x2, y2);
    
    getch();
    closegraph();
    return 0;
}