Sign in to follow this  
riyunoa

Drawing a circle with OpenGL

Recommended Posts

riyunoa    126
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~!!

Share this post


Link to post
Share on other sites
T2k    220
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

Share this post


Link to post
Share on other sites
riyunoa    126
This is what I tried:


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:

Share this post


Link to post
Share on other sites
werekarg    193
in the way you started, replace the inner loop with:


glVertex3f(100.0 * cos (angle) / 2, 0, 100.0 * sin (angle) / 2);
glVertex3f(100.0 * cos (angle + 3.142/30) / 2, 0, 100.0 * sin (angle + 3.142/30) / 2);

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this