围绕局部轴的3D旋转

背景:我一直在研究使用OpenGL围绕本地轴旋转3D对象的问题。 在X / Y / Z旋转发生后,在各个论坛上广泛搜索了更新轴的数学模型后,我发现这是最有用的资源。

http://nehe.gamedev.net/article/camera_class_tutorial/18010/

问题:我目前正在磕磕绊绊一个相当微不足道的问题。 上述资源的一个例子是围绕y轴旋转45度; 因此x轴和z轴需要更新。 新的x轴计算为(0.707,0,0.707),这是有道理的。 z轴是(-0.707,0,0.707),这也是直观的。 相应的gl命令是:

glRotatef(x_rot, 0.707, 0, 0.707);
glRotatef(y_rot, 0, 1, 0);
glRotatef(z_rot, -0.707, 0, 0.707);

现在我首先围绕y轴旋转45度。 之后,X旋转看起来不错。 正如预期的那样,它围绕更新的(本地)轴。

然后,我删除x旋转; 但是当我应用z旋转时,它看起来不正确。 它不是沿着局部z轴旋转。 该轴在数学上看起来是正确的,但我不确定图形上会出现什么问题。

编辑:

该示例位于该页面的中间。

链接地址: http://www.djcxy.com/p/81839.html

上一篇: 3D Rotation around Local Axes

下一篇: Rotating an object around a fixed point in opengl