1. 引言

在本教程中,我们将介绍如何将一个三维点投影到一个二维平面上,并获取其在该平面坐标系下的坐标。

2. 问题设定

假设我们有一个三维点 Z,其坐标为 Z = [z₁, z₂, z₃],以及一个平面,其方程为:

$$ a x_1 + b x_2 + c x_3 = d \quad (a, b, c, d \in \mathbb{R}, \quad a^2 + b^2 + c^2 \neq 0) $$

其中 [x₁, x₂, x₃] 是平面上任意一点的坐标,参数 [a, b, c] 是该平面的法向量(不需要是单位向量,但不能为零向量),d 是该平面与 x₃ 轴交点的 x₃ 坐标。

下图展示了三维空间中的一个点和平面的关系:

A point and a plane

我们的目标是找到点 Z 在该平面上的投影点 Z’,并以该平面的二维坐标系(由两个单位基向量 e₁ 和 e₂ 定义)表示其坐标。

3. 投影计算方法

3.1. 投影条件

点 Z’ 是 Z 在平面上的正交投影,因此满足两个条件:

  1. Z’ 在平面上:
    $$ a z_1' + b z_2' + c z_3' = d $$

  2. 向量 Z’ - Z 与平面法向量 [a, b, c] 同方向,即存在实数 k 使得:

    $$ \begin{aligned} z_1' - z_1 &= k a \ z_2' - z_2 &= k b \ z_3' - z_3 &= k c \end{aligned} $$

通过将这些表达式代入平面方程中,可以解出 k:

$$ k = \frac{d - a z_1 - b z_2 - c z_3}{a^2 + b^2 + c^2} $$

如果法向量 [a, b, c] 是单位向量,则分母为 1。

最后,我们可得投影点 Z’ 的坐标:

$$ \begin{aligned} z_1' &= z_1 + k a \ z_2' &= z_2 + k b \ z_3' &= z_3 + k c \end{aligned} $$

3.2. 示例

设 Z = [1, 0, 0],平面方程为:

$$ x_1 + 3 x_2 + 3 x_3 = 20 $$

代入公式计算 k:

$$ k = \frac{20 - 1}{1 + 9 + 9} = \frac{19}{19} = 1 $$

于是投影点 Z’ 的坐标为:

$$ Z' = [1 + 1×1, 0 + 1×3, 0 + 1×3] = [2, 3, 3] $$

⚠️ 注意:原示例中有一个符号错误,这里已修正为正确的计算方式。

3.3. 平面的另一种定义方式

有时我们可能知道一个点 X₀ = [p, q, r] 和法向量 [a, b, c],此时平面方程可以写为:

$$ a(x_1 - p) + b(x_2 - q) + c(x_3 - r) = 0 $$

展开后等价于:

$$ a x_1 + b x_2 + c x_3 = a p + b q + c r $$

即 d = a p + b q + c r。

有了这个 d 后,就可以继续使用前面的方法进行投影计算。

4. 获取平面坐标系中的坐标

我们已经得到了三维空间中投影点 Z’ 的坐标。现在,需要将其转换为该平面的二维坐标系下的坐标。

4.1. 坐标变换方法

设平面的两个单位基向量为:

  • e₁ = [e₁₁, e₁₂, e₁₃]
  • e₂ = [e₂₁, e₂₂, e₂₃]

则 Z’ 在该坐标系下的坐标为:

$$ \begin{bmatrix} e_{11} & e_{12} & e_{13} \ e_{21} & e_{22} & e_{23} \end{bmatrix} \times \begin{bmatrix} z_1' \ z_2' \ z_3' \end{bmatrix} = \begin{bmatrix} e_{11} z_1' + e_{12} z_2' + e_{13} z_3' \ e_{21} z_1' + e_{22} z_2' + e_{23} z_3' \end{bmatrix} $$

这相当于分别将 Z’ 投影到 e₁ 和 e₂ 上,得到两个标量,即 Z’ 在该二维坐标系下的坐标。

4.2. 示例

设 Z’ = [0, 1, 0],e₁ = [0, √2/2, √2/2],e₂ = [0, -√2/2, √2/2]

代入计算:

  • 第一维:0×0 + 1×(√2/2) + 0×(√2/2) = √2/2
  • 第二维:0×0 + 1×(-√2/2) + 0×(√2/2) = -√2/2

所以 Z’ 在该平面坐标系下的坐标为:

$$ [\sqrt{2}/2, -\sqrt{2}/2] $$

下图展示了向基向量投影的过程:

Project a point onto unit vectors

5. 总结

我们介绍了如何将一个三维点投影到一个二维平面上,并获取其在该平面坐标系下的坐标。主要步骤包括:

  1. 利用法向量和点求出投影点 Z’ 的三维坐标;
  2. 使用基向量进行坐标变换,得到 Z’ 的二维坐标。

✅ 该方法适用于图形学、计算机视觉、机器人等领域中的坐标转换问题。

⚠️ 注意:基向量必须是单位向量,否则结果会有偏差。


原始标题:How to Project a 3D Point Onto a 2D Plane?