C 圈不发生在0,0以外的任何地方?

C 圈不发生在0,0以外的任何地方?,c,opengl,geometry,C,Opengl,Geometry,所以如果我做原点(0,0),这个效果很好,但是在这里我试图让它在(20,20)处工作,并且形状根本不是一个圆。这是怎么回事 const unsigned int triangles = 20; // number of triangles const float twoPi = 2.0f * 3.14159f; const double radius = 0.1; int i; float delta = twoPi / trian

所以如果我做原点(0,0),这个效果很好,但是在这里我试图让它在(20,20)处工作,并且形状根本不是一个圆。这是怎么回事

const unsigned int triangles = 20; // number of triangles
        const float twoPi = 2.0f * 3.14159f;
        const double radius = 0.1;
        int i;
        float delta = twoPi / triangles;
        glBegin(GL_TRIANGLE_FAN);
        glVertex2f(20/window_w,20/window_h); // origin

        for(i = 0; i <= triangles; i++)
          glVertex2f((20/window_w)+(radius * cos(i *  delta)),
             (20/window_h)+(radius * sin(i * delta)));
        glEnd();
const无符号整数三角形=20;//三角形数
常数浮点twoPi=2.0f*3.14159f;
常数双半径=0.1;
int i;
浮动三角形=两个圆周率/三角形;
glBegin(GLU三角形风扇);
glVertex2f(20/窗宽,20/窗高);//起源

对于(i=0;我甚至不用修改顶点值来将圆移动到不同的位置。应该使用矩阵变换来解决这个问题。尤其是
glTranslatef(…)
将非常有帮助。记住在尝试此操作之前将矩阵模式设置为
GL\u MODELVIEW
并加载标识。您可能也想推/弹出MODELVIEW矩阵。无论您从何处了解到立即模式,都应该涵盖我刚才提到的所有内容。怀疑您转移到中心(20,20)应该使用类似“glVertex2f(20+窗口w/2,20+窗口h/2)”的东西。