I have got the following code to draw a filled circle in opengl. The problem is that it draws at the center of the screen. How do I make it draw in another position of it?
Here is the code:
#define CIRCLE_RADIUS = 0.15f
int circle_points = 100;
void draw()
{
glClear(GL_COLOR_BUFFER_BIT);
double angle = 2* PI/circle_points ;
glPolygonMode( GL_FRONT, GL_FILL );
glColor3f(0.2, 0.5, 0.5 );
glBegin(GL_POLYGON);
double angle1 = 0.0;
glVertex2d( CIRCLE_RADIUS * cos(0.0) , CIRCLE_RADIUS * sin(0.0));
int i;
for (i = 0; i < circle_points; i++)
{
glVertex2d(CIRCLE_RADIUS * cos(angle1), CIRCLE_RADIUS *sin(angle1));
angle1 += angle ;
}
glEnd();
glFlush();
}
The obvious way would be to call
glTranslatefirst. Note, however, that you can already accomplish the same a bit more easily with a combination ofglPointSizeandglPoint:Before you start drawing the circles, you’ll want something like:
Otherwise, your “circles” could end up as squares.
Edit: Without knowing how you’ve set up your coordinates, it’s impossible to know what the “top-left” position is, but you could do something like this:
You could then call (for example):
Of course, the directions I’ve given assume haven’t (for example) rotated your view, so
xincreases to the right andyincreases upward.