具有OpenGL glRotated功能的四元数

时间:2013-12-15 08:14:06

标签: opengl

我有一个使用OpenGL的可视化程序,我使用glRotated进行旋转。 我有Quaternion数据用于旋转,但我不知道如何将其应用于glRotated函数。 我需要先进行转换吗?如果是这样,我该怎么办?

2 个答案:

答案 0 :(得分:1)

您需要将四元数转换为旋转矩阵。 见Convert Quaternion rotation to rotation matrix?

Equation for quaternion to rotation matrix

来自http://www.math.ucsd.edu/~sbuss/MathCG/

答案 1 :(得分:1)

最好的方法是停止使用已弃用的固定功能管道功能。

  • glMatrixMode()
  • glLoadIdentity()
  • glTranslate *()
  • glRotate *()
  • 在glBegin()

而是使用新的基于Shader的管道,您只需拨打glUniformMatrix4fv()即可提供自己的矩阵。

然后你基本上可以将四元数转换为矩阵。

如果您不想自己完成所有繁重的工作并计算所有矩阵,那么您可以使用GLM(OpenGL数学)。

另外,如果您不知道如何使用新的/现代的OpenGL内容,那么您可以阅读这些精彩的教程。

替代

另一种选择,我强烈建议您使用,因为它依赖于已弃用的固定功能管道。

仍然要将四元数计算为矩阵,然后使用glMultMatrix*()将其传递给OpenGL