在给定4个角的情况下计算3d平面的变换矩阵

时间:2018-11-02 22:48:06

标签: matrix 3d linear-algebra transformation

我在世界原点有一个3D平面,与世界X / Y平面(面向Z轴)对齐。然后,我将一个新平面的四个3d顶点位置转换为3d空间中的某个位置。

两个平面的所有4个顶点的缠绕顺序相同。

我保证4个角是平面的,并且没有倾斜(该平面可能仍在x / y轴上分别缩放)。

在给定平面最后4个角的情况下,如何创建4x4变换矩阵?

1 个答案:

答案 0 :(得分:2)

假设飞机看起来像这样:

enter image description here

使用以下命令构造飞机的“本地基础”:

  • 与AD / BC平行的X轴
  • Y轴平行于AB / CD
  • Z轴平行于法线
  • 原点O位于四边形的中心

enter image description here

可以将转换矩阵分解为 3 个组件:


1 –比例

由于原始四边形的尺寸为1x1单位,因此沿X和Y局部轴的缩放比例只是边长,即分别为AD和AB的长度。由于四边形是平面的,因此忽略Z比例因子。

因此缩放比例由下式给出:

enter image description here


2-旋转

旋转分量可以直接从局部基准轴X,Y,Z构造;每个向量(规格化)是矩阵的对应列。

enter image description here

因此,旋转分量由下式给出:

enter image description here


3-翻译

这是最简单的方法;平移向量只是四边形中心O的绝对坐标,等于矩阵的最后一列。

enter image description here

因此,翻译部分由下式给出:

enter image description here


  

可以通过按以下顺序乘以上面的值来获得最终矩阵:

     

enter image description here

     

即组件将按 1 2 3 的顺序应用。