基于矩阵的OpenGL旋转矢量

基于矩阵的OpenGL旋转矢量,opengl,matrix,rotation,Opengl,Matrix,Rotation,好的,这就是我所拥有的: 我在一个框架中创建了一个抽象的“Object”类,将其用作所有3D对象的基类 此类的Matrix4成员,其唯一目的是存储对象的旋转信息 一些乘以矩阵的函数:对于每个偏航、俯仰和滚动旋转(全局和局部),我制作了一种方法,将上述旋转矩阵乘以一个新矩阵 e、 g:如果在CCW方向上局部偏航45度,则 rotMatrix = newRotationZMatrix(45) * rotMatrix; 我想知道的是,获得物体作为向量的全局旋转的最佳方法是什么——一般来说,如何从

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

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

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

  • 一些乘以矩阵的函数:对于每个偏航、俯仰和滚动旋转(全局和局部),我制作了一种方法,将上述旋转矩阵乘以一个新矩阵

e、 g:如果在CCW方向上局部偏航45度,则

rotMatrix = newRotationZMatrix(45) * rotMatrix;

我想知道的是,获得物体作为向量的全局旋转的最佳方法是什么——一般来说,如何从只包含旋转的变换矩阵中获得围绕X、Y和Z的旋转角。

有一些技术可以获得,只需从旋转矩阵中获得欧拉角,这需要一点数学知识。你可以读一下。

我有一门类似的课。 对我来说,使用矩阵3D是最有趣的部分之一

好吧,让我们来看看答案。 我正在使用OpenGL ES,所以对我来说,性能是一个至关重要的部分。我做一个常规,测试,测试,压力测试,重建整个常规,测试,测试。。。直到找到节省内存和提高性能的最佳方法

所以,以最高性能思考,如果你和我一样,有一门课程可以处理矩阵,我告诉你,获得它的最佳方法是:

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


通过这种方式,您不需要在每次想要获得这些值时都执行复杂的Euler计算。比例值也是如此。只有索引分开的翻译才不需要这个。

谢谢!这似乎正是我所需要和好奇的,它非常接近我认为答案应该是什么。我会研究一下。如果有助于搜索,这种技术通常被称为“矩阵分解”