#include<windows.h>
#include<bits/stdc++.h>
#include<GL/glut.h>

using namespace std;
double x1,x2,y11,y2;

void display(void)
{
    double dy,dx,step,x,y,k,Xin,Yin;
    dx=x2-x1;
    dy=y2-y11;

    x= x1;
    y=y11;
    if(abs(dx)> abs(dy))
    {
        step = abs(dx);
    }
    else
        step = abs(dy);

    Xin = dx/step;
    Yin = dy/step;

    glBegin(GL_POINTS);
    glVertex2i(x,y);
    glEnd();

    for (k=1 ;k<=step;k++)
    {
        x= x + Xin;
        y= y + Yin;
        x = round(x);
        y = round(y);

        glBegin(GL_POINTS);
        glVertex2i(x,y);
        glEnd();
    }
    glFlush();
}

void init(void)
{
    glClearColor(0.7,0.7,0.7,0.7);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-100,100,-100,100);
}

int main(int argc, char** argv)
{
    cout << "Enter the value of (x1,y1) : ";
    cin >> x1 >> y11;
    cout << "Enter the value of (x2,y2) : ";
    cin >> x2 >> y2;

    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize (500, 500);
    glutInitWindowPosition (100,100);
    glutCreateWindow ("DDA Line Algo");
    init();
    glutDisplayFunc(display);
    glutMainLoop();

    return 0;
}