5 Program for Bresenham Circle Drawing Algorithm using OpenGL

Program:

#include<GL/glut.h>
#include<iostream>

using namespace std;

int radius;
void MyInit()
{
    glClearColor(1,1,1,1);
    glColor3f(1,0,0);
    glOrtho(-500,500,500,-500,0,1);
}

void drawPoints(int x,int y)
{
    glBegin(GL_POINTS);
        glVertex2i(x,y);
        glVertex2i(-x,y);
        glVertex2i(x,-y);
        glVertex2i(-x,-y);

        glVertex2i(y,x);
        glVertex2i(-y,x);
        glVertex2i(y,-x);
        glVertex2i(-y,-x);
    glEnd();
}

void Circle()
{
    MyInit();

    int x=0, y=radius;
    drawPoints(x,y);

    int d = 3-2*radius;
    
    
    while(x<=y)
    {
        if(d < 0)
        {
            x = x+1;
            d = d + 4*x +6;
        }
        else if(d>=0)
        {
            x = x+1;
            y = y-1;
            d = d + 4*(x-y) + 10;
        }

        drawPoints(x,y);
    }

    glFlush();
}

int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(100,100);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutCreateWindow("Bresenham Circle");
    
    cout<<"Enter the radius of Circle:";
    cin>>radius;
    glutDisplayFunc(Circle);
    
    glutMainLoop();
    return 0;
}
Output:

Bresenham Circle Drawing Algorithm


Previous
Next Post »