从矩阵的OpenGL旋转矢量

时间:2010-08-21 10:40:52

标签: opengl matrix rotation

好的,这就是我所拥有的:

  • 我在框架中创建的一个抽象“Object”类,用它作为所有3D对象的基类。

  • 此类的Matrix4成员,其唯一目的是存储对象的旋转信息。

  • 使矩阵相乘的一些函数:对于每个偏航,俯仰和俯仰。滚动旋转(全局和局部),我做了一个方法,将上面的旋转矩阵与一个新矩阵相乘。

例如:如果你在CCW方向局部偏转物体45度,那么

rotMatrix = newRotationZMatrix(45) * rotMatrix;

我想知道的是将对象的全局旋转作为矢量的最佳方法是什么 - 一般来说,如何从包含JUST的变换矩阵获得围绕X,Y和Z的旋转角度旋转。

2 个答案:

答案 0 :(得分:2)

有一些技术可以获得,只需从旋转矩阵中获取欧拉角,就需要一些数学运算。 Here你可以阅读它。

答案 1 :(得分:0)

我有一个类似的课程。 这是我使用矩阵3D最有趣的部分之一。

好吧,让我们回答一下。 我正在使用OpenGL ES,所以对我而言,性能是一个至关重要的部分。我做了一个例程,测试它,测试它,压力测试,重建整个例程并测试,测试......直到找到节省内存和提高性能的最佳方法。

所以,考虑到最大的性能,如果你和我一样,有一个类来处理矩阵,我告诉你最好的方法是:

•将旋转的值存储在变量中,然后再将其放入矩阵中。

这样,您不需要在每次想要获取这些值时执行复杂的Euler计算。规模的价值也是如此。只是具有分离索引的翻译不需要这个。