Math 如何在具有不同旋转的两个坐标系之间转换点

Math 如何在具有不同旋转的两个坐标系之间转换点,math,unity3d,trigonometry,Math,Unity3d,Trigonometry,设想两个坐标系相互重叠,两个坐标系之间存在旋转和比例差: 问题是将一个点从非旋转系统转换为另一个系统。我们有四个角点组成一个矩形,每个点上两个系统的坐标都是已知的。我们也知道旋转差,我想我至少也应该知道尺度差。如何将点从非旋转系统转换为旋转系统?我有Unity3D在用 数学清晰性的额外分数:) PS:我写这篇文章真的很晚了,为了更清楚,我将稍后编辑。一些线性代数可以做到这一点: 将每个操作表示为一个矩阵,并将它们组合成一个单独的结果矩阵(以提高效率) 如果涉及转换,则需要向矩阵添加维度,请参阅

设想两个坐标系相互重叠,两个坐标系之间存在旋转和比例差:

问题是将一个点从非旋转系统转换为另一个系统。我们有四个角点组成一个矩形,每个点上两个系统的坐标都是已知的。我们也知道旋转差,我想我至少也应该知道尺度差。如何将点从非旋转系统转换为旋转系统?我有Unity3D在用

数学清晰性的额外分数:)


PS:我写这篇文章真的很晚了,为了更清楚,我将稍后编辑。

一些线性代数可以做到这一点:

将每个操作表示为一个矩阵,并将它们组合成一个单独的结果矩阵(以提高效率)

如果涉及转换,则需要向矩阵添加维度,请参阅

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

范例

M = M_trans * M_rot * M_scale
x' = M x
这里的顺序是从右到左:首先缩放向量x,然后旋转,然后转换为向量x'。(使用列向量)

关于矩阵的提示:


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

一些线性代数可以做到这一点:

将每个操作表示为一个矩阵,并将它们组合成一个单独的结果矩阵(以提高效率)

如果涉及转换,则需要向矩阵添加维度,请参阅

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

范例

M = M_trans * M_rot * M_scale
x' = M x
这里的顺序是从右到左:首先缩放向量x,然后旋转,然后转换为向量x'。(使用列向量)

关于矩阵的提示:

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