# 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 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 on other sites
Dev48GameDev    122
Can you post your code here?
It is more simple to answer you with some lines of code...

##### 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 on other sites
tksuoran    186
Try GL_LINE_LOOP instead of GL_LINES inside your glBegin(), and remove the line with /2, just one glVertex3f() inside the loop.

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