首页 > 解决方案 > 计算给定 4 个角的 3d 平面的变换矩阵

问题描述

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

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

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

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

标签: matrix3dlinear-algebratransformation

解决方案


假设飞机看起来像这样:

在此处输入图像描述

构建平面的“局部基础”,具有:

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

在此处输入图像描述

变换矩阵可以分解为3 个分量:


1 – 规模

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

因此,缩放分量由下式给出:

在此处输入图像描述


2 - 旋转

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

在此处输入图像描述

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

在此处输入图像描述


3 - 翻译

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

在此处输入图像描述

因此,平移分量由下式给出:

在此处输入图像描述


最终矩阵可以通过按以下顺序将上述相乘得到:

在此处输入图像描述

即按123的顺序应用组件。


推荐阅读