【问题标题】:Matrix rotation towards another matrix矩阵向另一个矩阵旋转
【发布时间】:2018-04-19 11:54:22
【问题描述】:

我有两个 4x4 旋转矩阵 M 和 N。M 描述了我当前在空间中的物体姿态,N 是期望的物体姿态。现在我想将 M 矩阵向 N 旋转,因此对象将在接下来的迭代中缓慢地向所需位置旋转。知道如何解决这个问题吗?

【问题讨论】:

  • 不能直接插值矩阵。最好存储开始角度和结束角度,在它们之间进行插值,然后创建矩阵。四元数也可能是合适的。
  • Android 提供 SensorManager.getAngleChange();方法。它看起来很有前途,但我不知道它如何应用在这里

标签: android matrix opengl-es transformation


【解决方案1】:

如果这些矩阵并不奇怪,应该是描述“旋转矩阵”的情况,你应该通过在极坐标系中插值它们的基向量来做到这一点。

为了检查,我们希望将左上角的 3x3 矩阵转换为由角度和距离定义的 3 个向量。完成此操作后,您应该对左上角的 3x3 部分的角度和距离进行线性插值,而其余部分应该有直接的笛卡尔插值。然后,您可以从角度和距离转换回笛卡尔坐标。

当然,内部仍然有工作,例如选择哪种旋转方式(使用最接近)并检查没有边缘情况,即一个基向量旋转到不同方向然后另一个...

我设法在 2D 系统中成功地做到了这一点,这有点容易,但在 3D 中应该没有什么不同。

请注意,只要角度相对较小(猜测不到 10 度),笛卡尔插值就可以很好地工作,这很可能根本不是您的情况。

【讨论】:

    猜你喜欢
    • 2013-02-28
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多