Очевидным способом было бы сначала позвонить glTranslate
.Обратите внимание, однако, что вы уже можете сделать то же самое немного проще с помощью комбинации glPointSize
и glPoint
:
glPointSize(CIRCLE_RADIUS/2.0f);
glPoint(center_x, center_y, center_z);
Прежде чем начать рисовать круги, вам понадобится что-то вроде:
glEnable(GL_POINT_SMOOTH);
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
В противном случае ваши "круги" могут закончиться квадратами.
Редактировать: Не зная, как вы установили свои координаты, невозможно узнать, что такое "верхний левый""позиция есть, но вы могли бы сделать что-то вроде этого:
void draw_circle(float x, float y, float radius) {
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(x, y, 0.0f);
static const int circle_points = 100;
static const float angle = 2.0f * 3.1416f / circle_points;
// this code (mostly) copied from question:
glBegin(GL_POLYGON);
double angle1=0.0;
glVertex2d(radius * cos(0.0) , radius * sin(0.0));
int i;
for (i=0; i<circle_points; i++)
{
glVertex2d(radius * cos(angle1), radius *sin(angle1));
angle1 += angle;
}
glEnd();
glPopMatrix();
}
Затем вы могли бы позвонить (например):
draw_circle(0.0f, 0.0f, 0.2f); // centered
draw_circle(1.0f, 0.0f, 0.2f); // right of center
draw_circle(1.0f, 1.0f, 0.2f); // right and up from center
Конечно, указания, которые я дал, предполагают убежище(например) повернул ваш взгляд, поэтому x
увеличивается вправо и y
увеличивается вверх.