我在世界原点有一个3D平面,与世界X / Y平面(面向Z轴)对齐。然后,我将一个新平面的四个3d顶点位置转换为3d空间中的某个位置。
两个平面的所有4个顶点的缠绕顺序相同。
我保证4个角是平面的,并且没有倾斜(该平面可能仍在x / y轴上分别缩放)。
在给定平面最后4个角的情况下,如何创建4x4变换矩阵?
答案 0 :(得分:2)
假设飞机看起来像这样:
使用以下命令构造飞机的“本地基础”:
可以将转换矩阵分解为 3 个组件:
1 –比例
由于原始四边形的尺寸为1x1单位,因此沿X和Y局部轴的缩放比例只是边长,即分别为AD和AB的长度。由于四边形是平面的,因此忽略Z比例因子。
因此缩放比例由下式给出:
2-旋转
旋转分量可以直接从局部基准轴X,Y,Z构造;每个向量(规格化)是矩阵的对应列。
因此,旋转分量由下式给出:
3-翻译
这是最简单的方法;平移向量只是四边形中心O的绝对坐标,等于矩阵的最后一列。
因此,翻译部分由下式给出:
可以通过按以下顺序乘以上面的值来获得最终矩阵:
即组件将按 1 ⇨ 2 ⇨ 3 的顺序应用。