【问题标题】:OpenGL rotation vector from matrix来自矩阵的OpenGL旋转向量
【发布时间】:2010-08-21 10:40:51
【问题描述】:

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

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

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

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

例如:如果您在 CCW 方向上将对象局部偏航 45 度,则

rotMatrix = newRotationZMatrix(45) * rotMatrix;

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

【问题讨论】:

    标签: opengl matrix rotation


    【解决方案1】:

    有一些技术可以得到它,只需从旋转矩阵中获取欧拉角,这涉及到一些数学。 Here你可以阅读。

    【讨论】:

    • 谢谢!看来这就是我所需要的并且足够好奇,它非常接近我认为的答案应该是什么。我会调查的。
    • 如果它有助于搜索,该技术通常称为“矩阵分解”
    【解决方案2】:

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

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

    因此,考虑到最佳性能,如果您像我一样有一个使用矩阵的课程,我告诉您获得它的最佳方法是:

    • 在将旋转值放入矩阵之前将其存储在变量中。

    通过这种方式,您无需在每次想要获取这些值时都执行复杂的欧拉计算。量表的值也是如此。只是有分离索引的翻译不需要这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 2012-05-05
      相关资源
      最近更新 更多