I2luY2x1ZGUgJmx0O3dpbmRvd3MuaCZndDsKI2luY2x1ZGUgJmx0O0dML2dsdXQuaCZndDsKI2luY2x1ZGUgJmx0O2lvc3RyZWFtJmd0Owp1c2luZyBuYW1lc3BhY2Ugc3RkOwpmbG9hdCB4MSwgeTEsIHgyLCB5MjsKdm9pZCBkaXNwbGF5KCkKewogZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKIGdsTWF0cml4TW9kZShHTF9QUk9KRUNUSU9OKTsKIGdsTG9hZElkZW50aXR5KCk7CiBnbE9ydGhvKDAsIDY0MCwgMCwgNDgwLCAtMSwgMSk7CiBnbFBvaW50U2l6ZSg4LjApOwogZ2xCZWdpbihHTF9QT0lOVFMpOwogZ2xDb2xvcjNmKDAuNSwgMC4wLCAxLjApOwogaW50IGR4ID0gYWJzKHgyIC0geDEpOwogaW50IGR5ID0gYWJzKHkyIC0geTEpOwogaW50IHggPSB4MTsKIGludCB5ID0geTE7CiBpZiAoZHggJmd0OyBkeSkKIHsKIGludCBwPTIqZHkgLSBkeDsKIHdoaWxlICh4ICZsdDs9IHgyKQogewogZ2xWZXJ0ZXgyaSh4LHkpOwogeCsrOwogaWYgKHAmZ3Q7PTApCiB7CiB5Kys7CiBwICs9KDIqZHkgLSAyKmR4KTsKIH0KIGVsc2UKIHsKIHAgKz0gMipkeTsKIH0KIH0KIH0KIGVsc2UKIHsKIGludCBwPTIqZHggLSBkeTsKIHdoaWxlICh5Jmx0Oz15MikKIHsKIGdsVmVydGV4MmkoeCx5KTsKIHkrKzsKIGlmIChwICZndDs9IDApCiB7CiB4Kys7CiBwICs9KDIqZHggLSAyKmR5KTsKIH0KIGVsc2UKIHsKIHAgKz0gMipkeDsKIH0KIH0KIH0KIGdsRW5kKCk7CiBnbEZsdXNoKCk7Cn0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7CiBjb3V0ICZsdDsmbHQ7ICZxdW90O0VudGVyIHhfc3RhcnQgYW5kIHlfc3RhcnQ6ICZxdW90OzsKIGNpbiAmZ3Q7Jmd0OyB4MSAmZ3Q7Jmd0OyB5MTsKIGNvdXQgJmx0OyZsdDsgJnF1b3Q7RW50ZXIgeF9lbmQgYW5kIHlfZW5kOiAmcXVvdDs7CiBjaW4gJmd0OyZndDsgeDIgJmd0OyZndDsgeTI7CiBpZiAoeDEgJmd0OyB4MikKIHsKIHN3YXAoeDEsIHgyKTsKIHN3YXAoeTEsIHkyKTsKIH0KIGdsdXRJbml0KCZhbXA7YXJnYywgYXJndik7CiBnbHV0SW5pdERpc3BsYXlNb2RlKEdMVVRfUkdCIHwgR0xVVF9TSU5HTEUgfCBHTFVUX0RFUFRIKTsKIGdsdXRJbml0V2luZG93U2l6ZSg2NDAsIDQ4MCk7CiBnbHV0SW5pdFdpbmRvd1Bvc2l0aW9uKDEwMCwgMTAwKTsKIGdsdXRDcmVhdGVXaW5kb3coJnF1b3Q7QnJlc2VuaGFtJ3MgQWxnb3JpdGhtJnF1b3Q7KTsKIGdsdXREaXNwbGF5RnVuYyhkaXNwbGF5KTsKIGdsdXRNYWluTG9vcCgpOwogcmV0dXJuIDA7
#include <windows.h>
#include <GL/glut.h>
#include <iostream>
using namespace std;
float x1, y1, x2, y2;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 640, 0, 480, -1, 1);
glPointSize(8.0);
glBegin(GL_POINTS);
glColor3f(0.5, 0.0, 1.0);
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int x = x1;
int y = y1;
if (dx > dy)
{
int p=2*dy - dx;
while (x <= x2)
{
glVertex2i(x,y);
x++;
if (p>=0)
{
y++;
p +=(2*dy - 2*dx);
}
else
{
p += 2*dy;
}
}
}
else
{
int p=2*dx - dy;
while (y<=y2)
{
glVertex2i(x,y);
y++;
if (p >= 0)
{
x++;
p +=(2*dx - 2*dy);
}
else
{
p += 2*dx;
}
}
}
glEnd();
glFlush();
}
int main(int argc, char **argv)
{
cout << "Enter x_start and y_start: ";
cin >> x1 >> y1;
cout << "Enter x_end and y_end: ";
cin >> x2 >> y2;
if (x1 > x2)
{
swap(x1, x2);
swap(y1, y2);
}
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 100);
glutCreateWindow("Bresenham's Algorithm");
glutDisplayFunc(display);
glutMainLoop();
return 0;