Untitled

Anonymous
plain_text
02/18/2026 10:32 AM
1.7 KB
16
Indexable
#include <GL/glut.h>
#include <stdio.h>

int x_start, y_start, x_end, y_end;

void drawLineBresenham(int x1, int y1, int x2, int y2) {
    int dx = x2 - x1;
    int dy = y2 - y1;

    int p = 2 * dy - dx;

    int x = x1;
    int y = y1;

    glBegin(GL_POINTS);

    for (x = x1; x <= x2; x++) {
        glVertex2i(x, y);

        if (p < 0) {
            p = p + 2 * dy;
        } else {
            y = y + 1;
            p = p + 2 * dy - 2 * dx;
        }
    }

    glEnd();
}

void display() {
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 0.0, 0.0);
    glPointSize(1.0);

    drawLineBresenham(x_start, y_start, x_end, y_end);

    glFlush();
}

void init() {
    glClearColor(0, 0, 0, 0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, 500, 0, 500);
}

int main(int argc, char** argv) {
    printf("Enter x1 y1 (e.g., 50 50): ");
    scanf("%d %d", &x_start, &y_start);
    printf("Enter x2 y2 (e.g., 200 150): ");
    scanf("%d %d", &x_end, &y_end);

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(500, 500);
    glutCreateWindow("Simple Bresenham Line");

    init();
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}
Editor is loading...
Leave a Comment