OpenGL - 查找glRotate()的旋转向量

时间:2014-06-04 18:18:53

标签: c++ c opengl vector rotation

我一直在研究在OpenGL中实现滚转,俯仰和偏航式旋转的问题已有一段时间了,在线提供的相关材料有限。问题的关键是在物体旋转时找到更新的局部轴。例如,围绕X旋转会导致局部Y轴和Z轴发生变化。随后的旋转将围绕更新的轴。我找到了一些数学公式来找到更新的向量:

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

然而,新矢量以点的形式给出,例如,围绕Y轴旋转45度改变X轴,X轴现在通过点(0.71,0,0.71)。现在的问题是如何找到可以传入glRotatef(angle,x,y,z)的(x,y,z)点。请注意,x,y,z位于通过它们和原点的矢量上。

我正在考虑对通过(0.71,0,0.71)和原点的直线进行法线处理,然后再采用法线来得到(x,y,z)。

有人可以建议对此进行改进,还是替代方法?

1 个答案:

答案 0 :(得分:1)

我建议你使用四元数。一开始在概念上有点难以理解,但一旦掌握了它的要点,实施就非常简单。此外,四元数旋转可以避免万向节锁定:)

OpenGL Quaternion教程网站:

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/