【问题标题】:Rotating both in local and world coordinate system在本地和世界坐标系中旋转
【发布时间】:2019-06-19 12:29:13
【问题描述】:

让我们考虑一个简单的情况,我们有一个带有变换矩阵的对象,然后我们进行简单的变换:

  1. 将 x 轴旋转 X1 角度 -> 一个矩阵
  2. 将 y 轴旋转 Y1 角度 -> B 矩阵
  3. 将 x 轴旋转 X2 角度 -> C 矩阵

在通常情况下,我会做 C * B * A,然后故事就结束了。但正如我们所知,它所做的是在由先前变换创建的局部坐标系中应用新变换。我不喜欢它。

在某些特定情况下,我想做的是在本地和其他时间在世界坐标系中旋转。我的意思是,如果我有矩阵 M = B * A(但我没有可用的 X1 和 Y1 角度;我只有 M)并且我想在世界坐标系中应用 C em> 那么输出的新变换矩阵将具有以下内容:

  • x 旋转 = X1 + X2
  • y 旋转 = Y1

有什么方法可以实现吗?

编辑

我想我解释错了。

假设我们在矩阵 M 描述的位置有一个对象 A。M 具有旋转、缩放和平移功能。我想沿着位于对象 A 中心但平行于基本坐标系的轴的轴旋转对象。毕竟我还希望对象在基本坐标系中停留在 (x,y,z)。

【问题讨论】:

    标签: math graphics rotation linear-algebra


    【解决方案1】:

    在通常情况下,我会做 C * B * A,这将是一个故事的结尾。但正如我们所知,它的作用是在先前变换创建的局部坐标系中应用新变换。

    不正确。

    考虑一个测试点pB * A * pB * A 的局部坐标系中的坐标只是p 的世界空间分量——因为变换只是坐标系的变化。

    因此将p 替换为C * p 会应用转换本地,即:

    • C * (B * A)世界坐标系中应用C
    • (B * A) * CB * Alocal 坐标系中应用C

    编辑

    围绕其位置旋转对象p

    • 翻译-p
    • 应用所需的旋转矩阵C
    • 翻译+p恢复原位

    最终的矩阵是T * C * inv(T) * M,其中Tp的翻译,M是原始矩阵。 pM 的最后一列给出。

    【讨论】:

    • 我想我解释错了。更多细节在编辑中。
    • @Kamisama 你之前应该提到过翻译。已编辑。
    猜你喜欢
    • 1970-01-01
    • 2015-08-03
    • 2020-07-06
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多