旋转形状变为旋转和平移

时间:2013-09-24 06:19:07

标签: c opengl

我是使用openGL的新手,现在我正在尝试旋转我制作的方块,但是当我旋转它时,方块不仅会旋转,还会在旋转时移动。我认为我在旋转和翻译过程中犯了一个错误,但找不到解决方案

void drawSquare(double x,double y, int num)
{
  double xLength = 0.6;
  double yLength = 0.6;

    for(int i=0;i<num;i++)
    {
       glLoadIdentity();
       glPushMatrix();      
       glTranslatef(0, 0, 0.0f);
       glRotatef(angleCW, 0.0f, 0.0f,1.0f);

       glBegin( GL_QUADS );

       if(i%2==0)
       {
         glColor3f(gCurrentRed,gCurrentGreen,gCurrentBlue);

       }
       else
       {
         glColor3f(0.0f,0.0f,0.0f);
       }
       glVertex3f(x,y,0);
       glVertex3f(x+xLength,y,0);
       glVertex3f(x+xLength,y+yLength,0);
       glVertex3f(x,y+yLength,0);
       xLength -=0.1;
       yLength -=0.1;
       x += 0.05;
       y += 0.05;
       glEnd();
       glPopMatrix();
     }
}

1 个答案:

答案 0 :(得分:3)

你的四边形将围绕原点(0,0,0)旋转。如果那不在你的四边形的中间,那么它将看起来就像翻译一样。也许你可以翻译它,使四边形居中,旋转它,然后将其翻译回来

修改

请参阅@ datenwolf的评论中的一个例子:

  1. 以0,0,0作为中心
  2. 创建四边形
  3. 旋转四边形
  4. 将四边形转换为其位置