Drawing a circle with OpenGL

Started by
4 comments, last by werekarg 18 years, 9 months ago
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~!!
Advertisement
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
Can you post your code here?
It is more simple to answer you with some lines of code...
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:
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