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

2D射影空间中的点、直线和圆锥曲线

1. 射影空间下的点与直线

在欧式空间 \(\mathbb{R}^2\) 中,我们常用一对实数 \((x,y) \in \mathbb{R}^2 \) 来描述平面上的一个点。写成列向量的形式为 \(\begin{bmatrix} x & y \end{bmatrix}^T\)。 平面上的一条直线,可以用方程 \(a x + b y + c = 0\) 表示,在代码里常用一个三维向量表示 \(\begin{bmatrix} a & b & c \end{bmatrix}^T\)。 形式化语言描述就是,给定一个点 \(\boldsymbol{x} = \begin{bmatrix} x, y \end{bmatrix}^T\) 和直线 \(\boldsymbol{l} = \begin{bmatrix} a & b & c \end{bmatrix}\),当且仅当 \(ax + by + c = 0\) 时,我们说点 \(\boldsymbol{x}\) 在直线 \(\boldsymbol{l}\) 上。 我们可以将之写成向量内积的形式: $$ \boldsymbol{x} \cdot \boldsymbol{l} = \begin{bmatrix} x & y & 1 \end{bmatrix} \begin{bmatrix} a \\ b \\ c \end{bmatrix} = 0 $$ 当点在直线上时,对于任何非零常数 \(k\),都有 \(\begin{bmatrix} kx & ky & k \end{bmatrix} \boldsymbol{l} = 0\)。 按照上述定义,我们也可以说 \(\begin{bmatrix} kx & ky & k \end{bmatrix}^T\) 在直线 \(\boldsymbol{l}\) 上。 形式上,我们可以用三个元素来表示一个点\(\boldsymbol{x} = \begin{bmatrix} x_1 & x_2 & x_3 \end{bmatrix}^T\), 这种表示方式称为点坐标的齐次表述(Homogeneous representation of points),我们将齐次点坐标构成的空间记为 \(\mathbb{P}^2\)。 如果 \(x_3 \neq 0\),我们可以将 \(\frac{1}{x_3}\boldsymbol{x}\) 和 \(\boldsymbol{x}\) 看做是同一个点,即 $$ \begin{bmatrix} \frac{x_1}{x_3} \\ \frac{x_2}{x_3} \\ 1 \end{bmatrix} = \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} $$ 后面我们会详细介绍,如果 \(x_3 = 0\) 时,描述的点就是一个无穷远处的点。如果 \(x_1, x_2, x_3\) 全部为零,对于任何直线方程而言都是成立的,没有任何几何意义。 所以 \(\mathbb{P}^2\) 中不包含 \(\begin{bmatrix} 0, 0, 0 \end{bmatrix}^T\)。

对于平面上的一条直线,在域 \(\mathbb{R}^2\) 中总有方程 \(ax + by + c = 0\) 成立,在域 \(\mathbb{P}^2\) 中有方程 \((ka)x + (kb)y + (kc) = 0, k \neq 0\) 与之对应。 所以向量 \(\begin{bmatrix} a & b & c \end{bmatrix}^T\) 与 \(k\begin{bmatrix} a & b & c \end{bmatrix}^T, k \neq 0\) 描述的同一条直线。 在 \(\mathbb{P}^2\) 中,直线的齐次表述(Homogeneous representation of lines),也是一个三维的向量 \(\begin{bmatrix} a & b & c \end{bmatrix}^T\)。 由于 \(\begin{bmatrix} 0, 0, 0 \end{bmatrix}^T\) 不表示任何直线,所以域 \(\mathbb{P}^2\) 是由\(\mathbb{R}^3 - \begin{bmatrix} 0, 0, 0 \end{bmatrix}^T\) 构成的, 该空间被称为摄影空间(projective space)

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

在2D空间中,点和平面都只有两个自由度。在齐次表述方式下,两条直线\(\boldsymbol{l}\)与 \(\boldsymbol{l}'\)的交点 \(\boldsymbol{x}\), 以及通过两个点\(\boldsymbol{x}\) 与 \(\boldsymbol{x}'\) 的直线 \(\boldsymbol{l}\) 都可以通过叉乘的形式得到:

$$ \begin{equation}\label{equa_2} \boldsymbol{x} = \boldsymbol{l} \times \boldsymbol{l}' \end{equation} $$ $$ \begin{equation}\label{equa_3} \boldsymbol{l} = \boldsymbol{x} \times \boldsymbol{x}' \end{equation} $$

一般的,如果我们交换直线和点的符号,式\((\ref{online})\)可以写作 \(\boldsymbol{l} \cdot \boldsymbol{x} = 0\),式\(\ref{equa_2},\ref{equa_3}\)仍然成立。 我们可以说在2D的射影空间中,直线与点是对偶的。如果交换直线与点的符号,我们可以得到一个与\(\mathbb{P}^2\)对偶的空间,在该空间下的几何性质, 可以通过交换\(\mathbb{P}^2\)中各性质的直线与点的符号得到。

2. 无穷远处的点和线

假设我们有两条直线 \(\boldsymbol{l} = \begin{bmatrix} a & b & c \end{bmatrix}^T\) 和 \(\boldsymbol{l'} = \begin{bmatrix} a & b & c' \end{bmatrix}^T\),通过叉乘,可以很容易求得两条直线的交点 \(\boldsymbol{x} = \begin{bmatrix} b, -a, 0 \end{bmatrix}^T\)。实际上,这两条直线是互相平行的,它们是没有交点的,或者说它们的交点在无穷远处。 我们将\(\boldsymbol{x}\)写成非齐次的形式 \(\begin{bmatrix} b/0, -a/0 \end{bmatrix}^T\) 是没有意义的, 因为域 \(\mathbb{R}^2\) 中并没有一个有限的实数对\((x_1, x_2)\)与\(\boldsymbol{x} = \begin{bmatrix} b, -a, 0 \end{bmatrix}^T\)对应。

对于齐次向量\(\boldsymbol{x} = \begin{bmatrix} x_1, x_2, x_3\end{bmatrix}^T\), 当\(x_3 = 0\)时,虽然不能在\(\mathbb{R}^2\)中找到一个映射,但在域\(\mathbb{P}^2\)中是有意义的,它们都是无穷远处的点,称之为ideal points, 直译过来就是理想点,我更喜欢称之为无穷远点。所有无穷远点的集合可以写做: $$ \left\{ \begin{bmatrix} x_1 & x_2 & 0 \end{bmatrix}^T | x_1 \in \mathbb{R}, x_2 \in \mathbb{R} \right\} $$ 它们都在一条直线上 \(\boldsymbol{l}_{\infty} = \begin{bmatrix} 0 & 0 & 1 \end{bmatrix}^T\),即 \(\begin{bmatrix} x_1 & x_2 & 0 \end{bmatrix} \begin{bmatrix} 0 & 0 & 1 \end{bmatrix}^T = 0\)。 我们称之为无穷远处的直线line at infinity。域\(\mathbb{P}^2\)所张成的空间为射影平面projective plane。\(\mathbb{P}^2\)下的几何性质的研究称为射影几何(projective geometry)

在摄影空间\(\mathbb{P}^2\)中,我们总可以说,任意两条不同的直线交于一点,任意两个不同的点构成一条直线。但是在传统的欧氏几何空间\(\mathbb{R}^2\)中就不存在这样的性质。

我们可以把射影平面\(\mathbb{P}^2\)中的点想象成域\(\mathbb{R}^3\)中通过原点的射线。对于任何非零系数\(k\), \(k\begin{bmatrix} x_1 & x_2 & x_3 \end{bmatrix}^T\)在\(\mathbb{P}^2\)中都是同一个点,在\(\mathbb{R}^3\)中则是一条射线。 \(\mathbb{P}^2\)中的直线则是域\(\mathbb{R}^3\)中通过原点的平面。

如右图所示,特别的,无穷远处的直线\(\boldsymbol{l}_{\infty} = \begin{bmatrix} 0 & 0 & 1 \end{bmatrix}^T\) 对应着 \(\mathbb{R}^3\) 中经过原点由\(x_1 x_2\)所张成的平面\(x_3 = 0\), 无穷远处的点则是该平面上经过原点的射线。 当 \(x_3 = 1\)时,我们可以得到一个平面\(\boldsymbol{\pi}\)。任何不在无穷处的点,在\(\mathbb{R}^3\)中都会与\(\boldsymbol{\pi}\)相交。 我们可以说该平面与\(\mathbb{R}^2\)是一一映射的。

3. 圆锥曲线(Conics)

圆锥曲线就是平面上的一些二次方程描述的曲线,椭圆、抛物线、双曲线都是圆锥曲线,在欧氏空间\(\mathbb{R}^2\)下可以写成: $$ ax^2 + bxy +c y^2 + dx + ey + f = 0 $$ 在摄影空间\(\mathbb{P}^2\)中,写成齐次坐标的形式就是: $$ ax_1^2 + b x_1 x_2 + c x_2^2 + d x_1 x_3 + e x_2 x_3 + f x_3^2 = 0 $$ 令: $$ C = \begin{bmatrix} a & b/2 & d/2 \\ b/2 & c & e/2 \\ d/2 & e/2 & f \\ \end{bmatrix}, \boldsymbol{x} = \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} $$ 有矩阵形式的圆锥曲线方程: $$ \begin{equation} \label{conic} \boldsymbol{x}^T C \boldsymbol{x} = 0 \end{equation} $$ 我们称 \(C\) 为系数矩阵,它是一个对称阵。虽然有6个量,但是它乘上任意一个非零常数 \(k\) 都有上式\((\ref{conic})\)成立,所以圆锥曲线实际只有5个自由度。 也因此只要有5个不同的点我们就可以确定一个圆锥曲线。 假设我们有正则化之后的齐次点坐标\(\begin{bmatrix} x_i, y_i, 1 \end{bmatrix}^T, i \in [1, 5]\),带入式\((\ref{conic})\)中,就可以得到一个\(5 \times 6\)的矩阵,构成如下的线性方程: $$ \begin{bmatrix} x_1^2 & x_1 y_1 & y_1^2 & x_1 & y_1 & 1 \\ x_2^2 & x_2 y_2 & y_2^2 & x_2 & y_2 & 1 \\ x_3^2 & x_3 y_3 & y_3^2 & x_3 & y_3 & 1 \\ x_4^2 & x_4 y_4 & y_4^2 & x_4 & y_4 & 1 \\ x_5^2 & x_5 y_5 & y_5^2 & x_5 & y_5 & 1 \\ \end{bmatrix} \begin{bmatrix} a \\ b \\ c \\ d \\ e \\ f \end{bmatrix} = \boldsymbol{0} $$ 通过高斯消元求解上述方程的解空间,即可求得圆锥曲线的各个系数。

对于圆锥曲线方程 \(\boldsymbol{x}^T C \boldsymbol{x} = 0\),令\(\boldsymbol{l} = C \boldsymbol{x}\) 则有\(\boldsymbol{x} \cdot \boldsymbol{l} = 0\),这正是直线方程的齐次表述。 这个\(\boldsymbol{l}\)就是圆锥曲线\(C\)上经过点\(\boldsymbol{x}\)的一条切线。如下面右图所示,圆锥曲线上所有点的切线可以包络出该圆锥曲线。

我们已经了解到在摄影空间\(\mathbb{P}^2\)中,直线与点是对偶的。这种对偶特性在圆锥曲线中也能够体现出来。 \(\boldsymbol{x}^T C \boldsymbol{x} = 0\) 形式的圆锥曲线被称为点圆锥曲线(point conic)。 其对偶形式的圆锥曲线也被称为线圆锥曲线(line conic 或者对偶圆锥曲线 dual conic)。 用 \(C\)的伴随矩阵(adjoint matrix)\(C^*\) 表示。由于 \(C\) 是一个可逆的对称矩阵,所以有 \(C^* = C^{-1}\)。 线圆锥曲线方程可以写作 \(\boldsymbol{l}^T C^* \boldsymbol{l} = 0\),\(\boldsymbol{l}\) 是与圆锥曲线相切的直线。 根据对偶原理,我们可以很容易求得切线\(\boldsymbol{l}\)与圆锥曲线\(C\)的交点\(\boldsymbol{x} = C^* \boldsymbol{l}\)。

4. 完




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