**0**

# Drawing a circle with OpenGL

Started by Jul 03 2005 09:31 PM

,
5 replies to this topic

###
#1
Members - Reputation: **126**

Posted 03 July 2005 - 09:31 PM

Hello everyone... I have a problem... How do I draw a circle with GL_LINES?
I have tried using glTranslatef() and glRotatef() but it doesn't seem to work on GL_LINES... Then I tried calculating the positions of the vertices with sin and cos... @_#
Help~!!

###
#2
Members - Reputation: **220**

Posted 03 July 2005 - 09:47 PM

You cant Translate/Rotate during a glBegin/glEnd commandpair. you will have to calc the vertices with sin/cos, something like:

#define PI 3.14...

glBegin(GL_LINE_STRIP);

for(int i=0; i <= 360; i++)

glVertex3f(sin(i*PI/180)*5, cos(i*PI/180)*5, 1);

glEnd();

this should draw a circle with 360 lines and a radius of 5 in the xy-plane at z=1, however its not tested code, so it may be that it draws a not closed circle or does nothing :p

edited GL_LINES into GL_LINE_STRIP

T2k

#define PI 3.14...

glBegin(GL_LINE_STRIP);

for(int i=0; i <= 360; i++)

glVertex3f(sin(i*PI/180)*5, cos(i*PI/180)*5, 1);

glEnd();

this should draw a circle with 360 lines and a radius of 5 in the xy-plane at z=1, however its not tested code, so it may be that it draws a not closed circle or does nothing :p

edited GL_LINES into GL_LINE_STRIP

T2k

###
#4
Members - Reputation: **126**

Posted 03 July 2005 - 10:09 PM

This is what I tried:

And it gave me this:

It is supposed to be like this:

glBegin(GL_LINES);

for ( float angle = 0; angle <= 2*3.142; angle+=3.142/30)

{

x = 100.0 * cos (angle);

z = 100.0 * sin (angle);

glVertex3f(x/2, 0.0, z/2);

glVertex3f(x, 0.0, z);

}

glEnd();

And it gave me this:

It is supposed to be like this: