【问题标题】:OpenGL: Moving a Triangle to a specific angle and rotate it around its origin pointOpenGL:将三角形移动到特定角度并围绕其原点旋转
【发布时间】:2014-10-05 01:41:11
【问题描述】:

我有以下三角形:

如何围绕其原点旋转三角形(例如按下R)并将其向前移动到当前方向(例如按下UP(就像任何游戏一样)

我使用以下,它工作正常,但问题是一旦我稍微移动三角形然后旋转它,它围绕世界的原点而不是三角形的中心点旋转强>。

// Drawing routine.
void drawScene()
{
    glClear(GL_COLOR_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glRotatef(-_zangle, 0.0, 0.0, 1.0);
    glTranslatef(_xTranslate,_yTranslate,0);
    glBegin(GL_TRIANGLES);
        glColor3ub(255,0,0);
        glVertex2i( -100 , -50);

        glColor3ub(255,0,0);
        glVertex2i(100 , -50);

        glColor3f(255,255,255);
        glVertex2i( 0, 50);
    glEnd();
    glutSwapBuffers();
}

【问题讨论】:

    标签: c opengl


    【解决方案1】:

    翻译后您需要进行轮换:

    glTranslatef(_xTranslate,_yTranslate,0);
    glRotatef(-_zangle, 0.0, 0.0, 1.0);
    

    Rotating an object around a fixed point in opengl

    【讨论】:

      【解决方案2】:

      这与我对另一个问题(Rotating an object around a fixed point using glMultMatrix)的回答类似,并从中借用了一些内容。

      要理解的关键点是,变换将以与您指定它们的顺序相反的顺序应用到您的顶点。您指定的最后一个变换是应用到顶点的第一个变换.

      在您的示例中,要先旋转,然后再平移,您需要先指定平移,然后再指定旋转:

      glTranslatef(_xTranslate,_yTranslate,0);
      glRotatef(-_zangle, 0.0, 0.0, 1.0);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-30
        • 2021-05-04
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        • 1970-01-01
        • 2019-03-03
        • 2018-06-08
        相关资源
        最近更新 更多