Drawing a Circle

Hi. I’m slowly figuring how to draw various “stuff” I need in my application. This scratchpad app is used to test stuff. Everything in the following code works but I cannot figure out how to draw a circle. I’d appreciate some help. I’ve tried the following calls with no luck. Either I am using the wrong calls to draw an unfilled circle or I am missing additional calls to make them work.

glu.gluSphere
glut.glutWireSphere
glut.glutSolidSphere

I want to draw the circle near the middle of the virtual coordinates (around 7500,7500). Here is what I have that does work.

Thanx. Andy


public void init(GLAutoDrawable drawable) {
    // Use debug pipeline
    // drawable.setGL(new DebugGL(drawable.getGL()));
    GL gl = drawable.getGL();
    System.err.println("INIT GL IS: " + gl.getClass().getName());       
    gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    gl.glShadeModel(GL.GL_FLAT);
 }

public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
    GL gl = drawable.getGL();
    gl.glViewport(0, 0, width, height);
    gl.glMatrixMode(GL.GL_PROJECTION);
    gl.glLoadIdentity();
    gl.glOrtho(-1000,15000,-1000,15000,-1,1);
}

public void display(GLAutoDrawable drawable) {
    GL gl = drawable.getGL();
    GLU glu = new GLU();
    GLUT glut = new GLUT();        
    int font18 = GLUT.BITMAP_HELVETICA_18;
    int font10 = GLUT.BITMAP_HELVETICA_10;
    int font_a = GLUT.BITMAP_8_BY_13;
            
    // Draw Rectange
    gl.glClear(GL.GL_COLOR_BUFFER_BIT);
    gl.glColor3f(1, 0, 0);
    gl.glRecti(100, 100, 1500, 1500);
    
    // Draw Line
    gl.glBegin(GL.GL_LINES);
    gl.glVertex2i(7500,7500);
    gl.glVertex2i(14000,14000);
    gl.glEnd();
    
    // Draw Text 
    gl.glColor3f(0.0f, 1.0f, 0.0f);
    gl.glRasterPos3f(1000.0f,1000.0f,0.0f);
    glut.glutBitmapString(font18, "TEST18");
    
    gl.glRasterPos3f(6000.0f,8000.0f,0.0f);
    glut.glutBitmapString(font10, "TEST10");
    
    gl.glRasterPos3f(8000.0f,12000.0f,0.0f);
    glut.glutBitmapString(font_a, "TEST_A");
    
    gl.glColor3f(0.0f, 0.0f, 0.0f);
 }

public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
}

Hi,

To draw a 2D circle you need to approximate it by a succession of small lines ( for loop with some sin and cos calls).
So a very little math and you’ll have a circle.

And if your not up for the working out the math, this should work:


gl.glBegin(gl.GL_LINES);
for (int t = 0; t < 2 Pi; t+= stepsize) 
   gl.glVertex2d(Math.sin(t),Math.cost));
gl.glEnd();