2014-10-04 89 views
-1

我有以下三角形:OpenGL的:移动一个三角形到一个特定的角度和围绕其原点旋转它

enter image description here

如何在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(); 
} 

回答

0

这与我的回答另一个问题(Rotating an object around a fixed point using glMultMatrix),并借鉴了它的一些内容。

需要了解的关键点是,转换将按照您指定的顺序以相反顺序应用到顶点。您指定的最后一个转换是应用于顶点的第一个转换。

在你的榜样,先旋转,然后再翻译,您需要先指定的翻译,然后旋转:

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