【问题标题】:How to convert points between two coordinate systems with different rotations如何在具有不同旋转的两个坐标系之间转换点
【发布时间】:2014-04-09 15:57:53
【问题描述】:

想象两个相互重叠的坐标系,两者之间的旋转和比例不同:

问题是将一个点从非旋转系统转换为另一个。我们所拥有的是形成一个矩形的四个角点,每个点的坐标对于两个系统都是已知的。我们也知道旋转差异,我想我至少也应该知道比例差异。如何将点从非旋转系统转换为旋转系统?我正在使用 Unity3D。

数学清晰的加分:)

PS:我写的很晚,为了更清楚,稍后再编辑。

【问题讨论】:

    标签: math unity3d trigonometry


    【解决方案1】:

    一些线性代数可以解决问题:

    将每个操作表示为一个矩阵,matrix multiply 将它们组合成一个结果矩阵(为了提高效率)。

    如果涉及翻译,您需要为矩阵添加维度,请参阅homogenous coordinates

    原因是映射是仿射的,而不是线性的。您可以忽略最终结果中的额外维度。这只是将仿射映射嵌入线性映射的好方法,因此代数更容易。

    例子

    M = M_trans * M_rot * M_scale
    x' = M x
    

    这里的顺序是从右到左:向量 x 先缩放,然后旋转,然后转换成向量 x'。 (使用列向量)。

    矩阵提示:Rotation MatrixScaling Matrix

    对于在给定 3D 公式时导出 2D 公式:保持 z = 0 或从每个矩阵中删除第 3 行和第 3 列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-29
      • 2016-03-27
      • 2021-02-20
      • 2015-04-05
      • 2019-09-05
      • 2015-07-07
      • 1970-01-01
      • 2012-02-29
      相关资源
      最近更新 更多