Jump to content

  • Log In with Google      Sign In   
  • Create Account

Drawing a circle with OpenGL


Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.


  • You cannot reply to this topic
5 replies to this topic

#1   Members   

126
Like
0Likes
Like

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   

220
Like
0Likes
Like

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

#3   Members   

122
Like
0Likes
Like

Posted 03 July 2005 - 09:47 PM

Can you post your code here?
It is more simple to answer you with some lines of code...

#4   Members   

126
Like
0Likes
Like

Posted 03 July 2005 - 10:09 PM

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:


#5   Members   

186
Like
0Likes
Like

Posted 03 July 2005 - 10:17 PM

Try GL_LINE_LOOP instead of GL_LINES inside your glBegin(), and remove the line with /2, just one glVertex3f() inside the loop.

#6   Members   

193
Like
0Likes
Like

Posted 03 July 2005 - 10:41 PM

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);






Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.