我一直在研究在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)。

任何人都可以提出对此的改进建议或替代方法吗?

最佳答案

我建议您使用四元数。起初在概念上很难理解,但是一旦掌握了要点,实现就很简单了。而且,四元数旋转可以避免万向节锁定:)

OpenGL Quaternion教程站点:

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

关于c++ - OpenGL-查找glRotate()的旋转 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24044740/

10-11 22:28
查看更多