背景: 我一直在使用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轴旋转。轴在数学上看起来是正确的,但我不确定图形上会出现什么问题。
编辑:
该示例位于该页面的中间位置。