假设我们有一个正方形,在它被转换到某个位置后,我想围绕对象内的一个点旋转它。
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),则对象开始变得扭曲。
答案 0 :(得分:1)
OpenGL中的旋转围绕放置在原点(0,0,0)的轴旋转。要围绕特定点旋转,首先需要将该点转换为原点,然后执行旋转。在OP中,您将围绕该点旋转(-50,-50,0)(因为平移移动坐标系,而不是特定点),然后围绕旋转关节度Z 轴。
从OP开始,假设每帧都更新了 joint ,我希望代码在该点周围有方形轨道(-50,-50,0)。