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₃ 坐标。
下图展示了三维空间中的一个点和平面的关系:
我们的目标是找到点 Z 在该平面上的投影点 Z’,并以该平面的二维坐标系(由两个单位基向量 e₁ 和 e₂ 定义)表示其坐标。
3. 投影计算方法
3.1. 投影条件
点 Z’ 是 Z 在平面上的正交投影,因此满足两个条件:
Z’ 在平面上:
$$ a z_1' + b z_2' + c z_3' = d $$向量 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] $$
下图展示了向基向量投影的过程:
5. 总结
我们介绍了如何将一个三维点投影到一个二维平面上,并获取其在该平面坐标系下的坐标。主要步骤包括:
- 利用法向量和点求出投影点 Z’ 的三维坐标;
- 使用基向量进行坐标变换,得到 Z’ 的二维坐标。
✅ 该方法适用于图形学、计算机视觉、机器人等领域中的坐标转换问题。
⚠️ 注意:基向量必须是单位向量,否则结果会有偏差。