【发布时间】:2014-04-09 15:57:53
【问题描述】:
想象两个相互重叠的坐标系,两者之间的旋转和比例不同:
问题是将一个点从非旋转系统转换为另一个。我们所拥有的是形成一个矩形的四个角点,每个点的坐标对于两个系统都是已知的。我们也知道旋转差异,我想我至少也应该知道比例差异。如何将点从非旋转系统转换为旋转系统?我正在使用 Unity3D。
数学清晰的加分:)
PS:我写的很晚,为了更清楚,稍后再编辑。
【问题讨论】:
标签: math unity3d trigonometry
想象两个相互重叠的坐标系,两者之间的旋转和比例不同:
问题是将一个点从非旋转系统转换为另一个。我们所拥有的是形成一个矩形的四个角点,每个点的坐标对于两个系统都是已知的。我们也知道旋转差异,我想我至少也应该知道比例差异。如何将点从非旋转系统转换为旋转系统?我正在使用 Unity3D。
数学清晰的加分:)
PS:我写的很晚,为了更清楚,稍后再编辑。
【问题讨论】:
标签: math unity3d trigonometry
一些线性代数可以解决问题:
将每个操作表示为一个矩阵,matrix multiply 将它们组合成一个结果矩阵(为了提高效率)。
如果涉及翻译,您需要为矩阵添加维度,请参阅homogenous coordinates。
原因是映射是仿射的,而不是线性的。您可以忽略最终结果中的额外维度。这只是将仿射映射嵌入线性映射的好方法,因此代数更容易。
例子
M = M_trans * M_rot * M_scale
x' = M x
这里的顺序是从右到左:向量 x 先缩放,然后旋转,然后转换成向量 x'。 (使用列向量)。
矩阵提示:Rotation Matrix、Scaling Matrix
对于在给定 3D 公式时导出 2D 公式:保持 z = 0 或从每个矩阵中删除第 3 行和第 3 列。
【讨论】: