如何从对象内的点旋转对象

时间:2013-01-30 05:21:35

标签: opengl

假设我们有一个正方形,在它被转换到某个位置后,我想围绕对象内的一个点旋转它。

     glPushMatrix();
       glTranslatef(50, 50, 0.0);
       glRotatef(joint, 0.0, 0.0, 1.0);
       glScalef(10,20, 1.0);
       glTranslatef(0.0, -0.5, 0.0);
       glColor3f(1.0, 0.0, 0.0);
       drawSquare(1.0);
     glPopMatrix();

上面的一个仅在缩放后围绕(0.0)点旋转。如果我将glRotatef(joint,0.0,0.0,1.0)更改为glRotatef(joint,0.0,5.0,1.0),则对象开始变得扭曲。

enter image description here

1 个答案:

答案 0 :(得分:1)

OpenGL中的旋转围绕放置在原点(0,0,0)的轴旋转。要围绕特定点旋转,首先需要将该点转换为原点,然后执行旋转。在OP中,您将围绕该点旋转(-50,-50,0)(因为平移移动坐标系,而不是特定点),然后围绕旋转关节度Z 轴。

从OP开始,假设每帧都更新了 joint ,我希望代码在该点周围有方形轨道(-50,-50,0)。