Drawing a circle with OpenGL
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~!!
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
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:
Try GL_LINE_LOOP instead of GL_LINES inside your glBegin(), and remove the line with /2, just one glVertex3f() inside the loop.
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);
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement