首页 关于
树枝想去撕裂天空 / 却只戳了几个微小的窟窿 / 它透出天外的光亮 / 人们把它叫做月亮和星星
目录

3D射影空间中的点、平面

前文已经提到,对于二维欧式空间中的点和直线,可以将其扩展成齐次坐标的形式,就可以描述无穷远处的点和直线了。 这构成了二维的射影空间 \(\mathbb{P}^2\),在这个空间下点和直线具有对偶关系。这种齐次坐标的表述方式也可以推广到我们生活的三维物理空间中,也就是三维的射影空间 \(\mathbb{P}^3\), 在这个空间中成对偶关系的是点和平面,它们可以直接通过一个四维的齐次向量来表示。直线相对麻烦一点,有好几种表述形式。

本文中,我们先将齐次坐标推广到三维空间中,介绍点与平面的关系。关于三维射影空间中的直线,我们放到下一节中介绍。

1. 射影空间下的点与平面

在三维的欧式空间 \(\mathbb{R}^3\) 中,我们常用一组实数 \((x,y,z) \in \mathbb{R}^3\) 来描述空间中的点,写成列向量的形式为 \(\begin{bmatrix} x & y & z\end{bmatrix}^T\)。 平面可以用方程 \(ax + by + cz + d = 0\) 描述,它表示所有满足方程的点 \(\boldsymbol{x} = \begin{bmatrix} x & y & z \end{bmatrix}^T\) 都在一个平面上。 所以平面也可以用一个四维的向量表示 \(\boldsymbol{p} = \begin{bmatrix} a & b & c & d\end{bmatrix}^T\)。 于是我们可以用向量内积来描述一个点 \(\boldsymbol{x}\) 在平面 \(\boldsymbol{p}\) 上这件事情:

$$ \boldsymbol{x} \cdot \boldsymbol{p} = \begin{bmatrix} x & y & z & 1 \end{bmatrix} \begin{bmatrix} a \\ b \\ c \\ d \end{bmatrix} = 0 $$

对于平面方程,等式两侧乘上任意非零常数 \(k\),上式都成立,既 \((k\boldsymbol{x}) \cdot \boldsymbol{p} = \begin{bmatrix} kx & ky & kz & k \end{bmatrix} \boldsymbol{p} = 0\)。 所以 \(\begin{bmatrix} kx & ky & kz & k \end{bmatrix}\) 也在平面 \(\boldsymbol{p}\) 上。 形式上,我们可以用四个元素表示一个点 \(\boldsymbol{x} = \begin{bmatrix} x_1 & x_2 & x_3 & x_4 \end{bmatrix}^T\)。 于是就得到了点坐标的齐次表述,我们将齐次点坐标构成的空间记为 \(\mathbb{P}^3\)。如果 \(x_4 \neq 0\),可以将 \(\frac{1}{x_4} \boldsymbol{x}\) 和 \(\boldsymbol{x}\) 看做是同一个点,既 $$ \begin{bmatrix} x_1/x_4 \\ x_2/x_4 \\ x_3/x_4 \\ 1 \end{bmatrix} = \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \end{bmatrix} $$ 如果 \(x_4 = 0\),描述的是无穷远处的点。如果 \(x_1, x_2, x_3, x_4\) 全为零,对于任何平面方程都是成立,没有几何意义。 所以 \(\mathbb{P}^3\) 中不包含 \(\begin{bmatrix} 0, 0, 0, 0 \end{bmatrix}^T\)。

平面方程在域 \(\mathbb{R}^3\) 中有 \(ax + by + cz + d = 0\) 成立,在域 \(\mathbb{P}^3\) 中有 \((ka)x + (kb)y + (kc)z + (kd) = 0, k \neq 0\) 与之对应。 所以向量 \(\begin{bmatrix} a & b & c & d \end{bmatrix}^T\) 与 \(k\begin{bmatrix} a & b & c & d \end{bmatrix}^T, k \neq 0\) 描述的是同一个平面。 因此在 \(\mathbb{P}^3\) 中,我们用四维的向量 \(\begin{bmatrix} a & b & c & d\end{bmatrix}^T\) 作为平面的齐次表述。 由于 \(\begin{bmatrix} 0, 0, 0, 0 \end{bmatrix}^T\) 不表示任何平面,所以域 \(\mathbb{P}^3\) 是由\(\mathbb{R}^3 - \begin{bmatrix} 0, 0, 0, 0 \end{bmatrix}^T\) 构成的, 这就是 3D 射影空间。

根据上述关于点和平面的齐次表述方式,我们可以得出点在平面上的判定方法: $$ \begin{equation}\label{f1} \boldsymbol{x} \cdot \boldsymbol{p} = 0 \end{equation} $$

2. 点与平面的关系

我们知道在三维空间中,三个点就可以确定一个平面。假设有三个不共线的点 \(\boldsymbol{x}_1, \boldsymbol{x}_2, \boldsymbol{x}_3\) 在平面 \(\boldsymbol{p}\) 上, 它们都满足式(\(\ref{f1}\))。我们可以写成矩阵的形式:

$$ \begin{equation}\label{f2} \begin{bmatrix} \boldsymbol{x}_1^T \\ \boldsymbol{x}_2^T \\ \boldsymbol{x}_3^T \end{bmatrix} \boldsymbol{p} = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} \Longrightarrow \underbrace{ \begin{bmatrix} x_1 & y_1 & z_1 & 1 \\ x_2 & y_2 & z_2 & 1 \\ x_3 & y_3 & z_3 & 1 \end{bmatrix} }_{\boldsymbol{X}_{3 \times 4}} \begin{bmatrix} a \\ b \\ c \\ d \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} \end{equation} $$

将三个点坐标以行向量的形式写在一起,就得到了一个 \(3 \times 4\) 的矩阵 \(\boldsymbol{X}\)。 与在2D空间中五点法求解圆锥曲线类似,我们可以对 \(\boldsymbol{X}\) 进行 SVD 分解, 在右奇异矩阵中,选择最小奇异值对应的奇异向量,作为方程的解,就可以得到平面方程。

假设点 \(\boldsymbol{x} = \begin{bmatrix} x & y & z & 1 \end{bmatrix}^T\) 也在点 \(\boldsymbol{x}_1, \boldsymbol{x}_2, \boldsymbol{x}_3\) 所确定的平面 \(\boldsymbol{p}\) 上。 将它们按照列向量排列,可以得到一个 \(4 \times 4 \) 的矩阵 \(\boldsymbol{M} = \begin{bmatrix} \boldsymbol{x} & \boldsymbol{x}_1 & \boldsymbol{x}_2 & \boldsymbol{x}_3 \end{bmatrix}\)。由于它们共面,矩阵 \(\boldsymbol{M}\) 只有 3 个自由度, 所以其行列式 \(|\boldsymbol{M}| = 0\)。我们对其第一列进行余子式展开,有:

$$ \begin{vmatrix} x & x_1 & x_2 & x_3 \\ y & y_1 & y_2 & y_3 \\ z & z_1 & z_2 & z_3 \\ 1 & 1 & 1 & 1 \\ \end{vmatrix} = x \underbrace{\begin{vmatrix} y_1 & y_2 & y_3 \\ z_1 & z_2 & z_3 \\ 1 & 1 & 1 \\ \end{vmatrix}}_{D_{234}} - y \underbrace{\begin{vmatrix} x_1 & x_2 & x_3 \\ z_1 & z_2 & z_3 \\ 1 & 1 & 1 \\ \end{vmatrix}}_{D_{134}} + z \underbrace{\begin{vmatrix} x_1 & x_2 & x_3 \\ y_1 & y_2 & y_3 \\ 1 & 1 & 1 \\ \end{vmatrix}}_{D_{124}} - 1 \underbrace{\begin{vmatrix} x_1 & x_2 & x_3 \\ y_1 & y_2 & y_3 \\ z_1 & z_2 & z_3 \\ \end{vmatrix}}_{D_{123}} = 0 $$

这正是一个平面方程,我们可以直接写出平面 \(\boldsymbol{p}\) 的齐次向量 \(\boldsymbol{p} = \begin{bmatrix} D_{234}, -D_{134}, D_{124}, -D_{123} \end{bmatrix}^T\)。 值得关注的是 \(D_{234}, -D_{134}, D_{124}\) 的计算:

$$ D_{234} = \begin{vmatrix} y_1 & y_2 & y_3 \\ z_1 & z_2 & z_3 \\ 1 & 1 & 1 \\ \end{vmatrix} = \begin{vmatrix} y_1 - y_3 & y_2 - y_3 & y_3 \\ z_1 - z_3 & z_2 - z_3 & z_3 \\ 0 & 0 & 1 \\ \end{vmatrix} = \begin{vmatrix} y_1 - y_3 & y_2 - y_3 \\ z_1 - z_3 & z_2 - z_3 \\ \end{vmatrix} $$ $$ D_{134} = \begin{vmatrix} x_1 & x_2 & x_3 \\ z_1 & z_2 & z_3 \\ 1 & 1 & 1 \\ \end{vmatrix} = \begin{vmatrix} x_1 - x_3 & x_2 - x_3 & x_3 \\ z_1 - z_3 & z_2 - z_3 & z_3 \\ 0 & 0 & 1 \\ \end{vmatrix} = \begin{vmatrix} x_1 - x_3 & x_2 - x_3 \\ z_1 - z_3 & z_2 - z_3 \\ \end{vmatrix} $$ $$ D_{124} = \begin{vmatrix} x_1 & x_2 & x_3 \\ y_1 & y_2 & y_3 \\ 1 & 1 & 1 \\ \end{vmatrix} = \begin{vmatrix} x_1 - x_3 & x_2 - x_3 & x_3 \\ y_1 - y_3 & y_2 - y_3 & y_3 \\ 0 & 0 & 1 \\ \end{vmatrix} = \begin{vmatrix} x_1 - x_3 & x_2 - x_3 \\ y_1 - y_3 & y_2 - y_3 \\ \end{vmatrix} $$

这正是矢量 \(\boldsymbol{x}_1 - \boldsymbol{x}_3\) 与 \(\boldsymbol{x}_2 - \boldsymbol{x}_3\) 的叉积,在欧式空间\(\mathbb{R}^3\)中,它的几何意义是平面 \(\boldsymbol{p}\) 的法向量。

与三点共面对应的,三个不平行的平面\(\boldsymbol{p}_1, \boldsymbol{p}_2, \boldsymbol{p}_3\)会相交于一个点\(\boldsymbol{x}\)。根据式(\(\ref{f1}\),也可以写出矩阵的形式: $$ \begin{equation}\label{f3} \begin{bmatrix} \boldsymbol{x}_1^T \\ \boldsymbol{x}_2^T \\ \boldsymbol{x}_3^T \end{bmatrix} \boldsymbol{p} = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} \Longrightarrow \underbrace{ \begin{bmatrix} a_1 & b_1 & c_1 & d_1 \\ a_2 & b_2 & c_2 & d_2 \\ a_3 & b_3 & c_3 & d_3 \end{bmatrix} }_{\boldsymbol{A}_{3 \times 4}} \begin{bmatrix} x \\ y \\ z \\ k \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} \end{equation} $$ 在射影空间 \(\mathbb{P}^3\) 中,点/平面的齐次坐标乘上任何非零的比例系数描述的都还是同一个点/平面,所以在上式(\(\ref{f3}\))我们特意保留了 \(k\)。 形式上,式(\(\ref{f2}\)与(\(\ref{f3}\))只是交换了一下符号而已,我们可以用相同的套路解除点的齐次坐标。这利用了三维射影空间中点与平面的对偶关系。

3. 完




Copyright @ 高乙超. All Rights Reserved. 京ICP备16033081号-1