• 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.

5 replies to this topic

### #1riyunoa  Members   -  Reputation: 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~!!

### #2T2k  Members   -  Reputation: 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

### #3Dev48GameDev  Members   -  Reputation: 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...

### #4riyunoa  Members   -  Reputation: 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:

### #5tksuoran  Members   -  Reputation: 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.

### #6werekarg  Members   -  Reputation: 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.

PARTNERS