C 使用以下在opengl中绘制填充圆的函数,如何使其在窗口的不同坐标处显示?

C 使用以下在opengl中绘制填充圆的函数,如何使其在窗口的不同坐标处显示?,c,opengl,computational-geometry,C,Opengl,Computational Geometry,我有以下代码在opengl中绘制一个填充圆。问题是它在屏幕中央绘制。我如何使它在它的另一个位置绘制 代码如下: #定义圆半径=0.15f int圆_点=100; 作废提款() { glClear(GLU颜色缓冲位); 双角度=2*PI/圆_点; glPolygonMode(GL_前端,GL_填充); GL3F(0.2,0.5,0.5); glBegin(GL_多边形); 双角度1=0.0; glVertex2d(圆半径*cos(0.0),圆半径*sin(0.0)); int i; 对于(i=0;

我有以下代码在opengl中绘制一个填充圆。问题是它在屏幕中央绘制。我如何使它在它的另一个位置绘制

代码如下:

#定义圆半径=0.15f
int圆_点=100;
作废提款()
{
glClear(GLU颜色缓冲位);
双角度=2*PI/圆_点;
glPolygonMode(GL_前端,GL_填充);
GL3F(0.2,0.5,0.5);
glBegin(GL_多边形);
双角度1=0.0;
glVertex2d(圆半径*cos(0.0),圆半径*sin(0.0));
int i;
对于(i=0;i
显而易见的方法是先调用
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();
}

当然,我给出的方向没有(例如)旋转您的视图,因此
x
向右增加,
y
向上增加。

我不打算使用点的概念,因为我还必须绘制正方形,因此为了一致性,我将使用多边形绘制它们。但是告诉我,你能给我一个示例代码,把圆圈放在左上角的位置吗?例如thanx
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