齐次坐标

<image>

在数学里，齐次坐标（homogeneous coordinates），或投影坐标（projective coordinates）是指一个用于投影几何里的坐标系统，如同用于欧氏几何里的笛卡儿坐标一般。该词由奥古斯特·费迪南德·莫比乌斯于1827年在其著作《Der barycentrische Calcul》一书内引入。齐次坐标可让包括无穷远点的点坐标以有限坐标表示。使用齐次坐标的公式通常会比用笛卡儿坐标表示更为简单，且更为对称。齐次坐标有着广泛的应用，包括电脑图形及3D电脑视觉。使用齐次坐标可让电脑进行仿射变换，其投影变换通常能简单地使用矩阵来表示。

如一个点的齐次坐标乘上一个非零纯量，则所得之坐标会表示同一个点。因为齐次坐标也用来表示无穷远点，为此一扩展而需用来标示坐标之数值比投影空间之维度多一。例如，在齐次坐标里，需要两个值来表示在投影线上的一点，需要三个值来表示投影平面上的一点。

## 简介

实投影平面可以看作是一个具有额外点的欧氏平面，这些点称之为无穷远点，并被认为是位于一条新的线上（该线称之为无穷远线）。每一个无穷远点对应至一个方向（由一条线之斜率给出），可非正式地定义为一个点自原点朝该方向移动之极限。在欧氏平面里的平行线可看成会在对应其共同方向之无穷远点上相交。给定欧氏平面上的一点 $(x,y)$，对任意非零实数$Z$，三元组 $(xZ,yZ,Z)$ 即称之为该点的齐次坐标。依据定义，将齐次坐标内的数值乘上同一个非零实数，可得到同一点的另一组齐次坐标。例如，笛卡儿坐标上的点$(1,2)$在齐次坐标中即可标示成 $(1,2,1)$ 或 $(2,4,2)$。原来的笛卡儿坐标可透过将前两个数值除以第三个数值取回。因此，与笛卡儿坐标不同，一个点可以有无限多个齐次坐标表示法。

一条通过原点 $(0,0)$ 的线之方程可写作 $nx+my=0$，其中 $n$ 及 $m$ 不能同时为 0。以参数表示，则能写成 $x=mt$，$y=-nt$。令 $Z=\frac{1}{t}$，则线上的点之笛卡儿坐标可写作 $(\frac{m}{Z},-\frac{n}{Z})$。在齐次坐标下，则写成 $(m,-n,Z)$。当$t$趋向无限大，亦即点远离原点时，$Z$会趋近于 0，而该点的齐次坐标则会变成 $(m,-n,0)$。因此，可定义 $(m,-n,0)$ 为对应 $nx+my=0$ 这条线之方向的无穷远点之齐次坐标。因为欧氏平面上的每条线都会与透过原点的某一条线平行，且因为平行线会有相同的无穷远点，欧氏平面每条线上的无穷远点都有其齐次坐标。

概括来说：

- 投影平面上的任何点都可以表示成一三元组 $(X,Y,Z)$，称之为该点的齐次坐标或投影坐标，其中$X$、$Y$及$Z$不全为 0。
- 以齐次坐标表表示的点，若该坐标内的数值全乘上一相同非零实数，仍会表示该点。
- 相反地，两个齐次坐标表示同一点，当且仅当其中一个齐次坐标可由另一个齐次坐标乘上一相同非零常数得取得。
- 当$Z$不为 0，则该点表示欧氏平面上的该 $(\frac{X}{Z},\frac{Y}{Z})$。
- 当$Z$为 0，则该点表示一无穷远点。

注意，三元组 $(0,0,0)$ 不表示任何点。原点表示为 $(0,0,1)$。

### 符号

有些作者会使用不同的符号表示齐次坐标，以与笛卡儿坐标相区别，如以冒号代替逗号，以 $(x:y:z)$ 代替 $(x,y,z)$，以强调该坐标有着比例的性质。亦有以方括号代替括弧，以 $[x,y,z]$ 来强调有多个坐标表示同一个点。有些作者则会同时使用冒号与方括号，如 $[x:y:z]$。

## 其他维度

上一节的叙述可类比适用于平面以外的投影空间。因此，投影线上的点可表示成二元组 $(x,y)$，其中 $x$ 与 $y$ 不全为 0。在此情况下，无穷远点为 $(1,0)$。同样地，在投影 n 维空间内的点可表示成 $n+1$ 元组。

## 其他投影空间

齐次坐标的数值若为实数，则会得出一般实投影空间内的一个点。不过，该数值可以为任意的体，特别是在复投影空间里，使用的数值为复数。例如，复投影线在齐次坐标中以两个数值表示之，称之为黎曼球面。其他的体，包括有限体，也都可以被使用。

用于投影空间的齐次坐标亦可使用除环来建立。不过，在此情况下，必须小心考虑其乘法可能是不可交换的。

## 另一种定义

另一种实投影平面的定义可用等价类来给出。对$\mathrm{R}^3$内的非零元素，定义 $(x_1,y_1,z_1)\sim (x_2,y_2,z_2)$，表示存在一非零数 $\lambda$，使得 $(x_1,y_1,z_1)=(\lambda x_2,\lambda y_2,\lambda z_2)$。其中，~ 为等价关系，而投影平面则可被定义为 $\mathrm{R}^3 \backslash \{0\}$ 的等价类。若 $(x,y,z)$ 为等价类 $p$内的一元素，则可取之作为 $p$ 的齐次坐标。

此空间内的线可定义成由方程 $ax+by+cz=0$ 的解所组成之集合，其中$a$、$b$及 $c$不全为零。方程 $ax+by+cz=0$ 的非平凡解仅会由等价类所组成，所以该方程可定义投影平面上的线。映射 $(x,y)\rightarrow (x,y,1)$ 为一包含映射，可定义为$\mathrm{R}^3$内的等价类至投影平面的一个函式，$\mathrm{R}^3$内的其他元素则为 $z=0$ 的点。因此，该方程可定义为投影平面上的线，其他元素组成之集合则可称之为无穷远线。

等价类 $p$ 为通过原点的线，但不包括原点。因为原点在前面的讨论中并没有扮演着关键的角色，所以可以将原点加回，而不改变投影平面之性质。这会产生一个不同的定义，即投影平面可被定义为 $\mathrm{R}^3$ 内通过原点的线所组成的集合，且线上的非零元素之坐标 $(x,y,z)$ 可取之作为该线的齐次坐标。这些线现在被解释为投影平面上的点。

在其他维度里，也可以类推适用上述的推论。因此，n 维投影空间可被定义为 $\mathrm{R}^{n+1}$ 内通过原点的线所组成之集合。

## 齐次性

齐次坐标的值不是由点来唯一决定，所以定义在该坐标上的函式 $f(x,y,z)$ 并不会决定定义在笛卡儿坐标上的点之函式。不过，若函式是齐次的，则定义在齐次坐标上的方程 $f(x,y,z)=0$（可能用来表示一条曲线）可决定义于点上的方程。

具体来说，假设存在 $k$，使得

$$f(\lambda x, \lambda y, \lambda z) = \lambda^k f(x,y,z).\,$$

与坐标 $(x,y,z)$ 表示同一点的另一组坐标可写作 $(\lambda x,\lambda y,\lambda z)$，其中 $\lambda$为一非零值。则

$$f(x,y,z)=0 \iff f(\lambda x, \lambda y, \lambda z) = \lambda^k f(x,y,z)=0.$$

一 $k$次多项式 $g(x,y)$ 可透过将 $x$ 替代成 x/z、$y$替代成 y/z 及乘上 $z^k$ 来变换成一齐次多项式

$$f(x, y, z)=z^k g(x/z, y/z).\,$$

产生的函式 $f$为一多项式，将其定义域扩展为三元。此一过程可透过设定 $z=1$ 而倒转，即

$$g(x, y)=f(x, y, 1).\,$$

方程 $f(x,y,z)=0$ 因此可被视为 $g(x,y)=0$ 的齐次形式，且当限制在欧氏平面时，决定出同一条曲线。例如，线方程 $ax+by+c=0$ 的齐次形式为 $ax+by+cz=0$。

## 线坐标与对偶性

投影平面上的线方程可给定为 $sx+ty+uz=0$，其中$s$、$t$及$u$为常数。每个三元组 $(s,t,u)$ 可决定一条线，将三个值同乘上一非零纯量不会改变这条线，且$s$、$t$及$u$至少有一个值为非零。因此，三元组 $(s,t,u)$ 可取之作为投影平面上一条线的齐次坐标，为相对于点坐标的线坐标。若将 $sx+ty+uz=0$ 内的字母$s$、$t$及$u$作为变数，$x$、$y$及$z$作为常数，则该方程在由所有平面上之线组成的空间内的线之集合的方程。几何上来说，通过点$(x,y,z)$的线之集合可解释为线坐标内该点之方程。以同样的方式，在三维空间内之平面亦可给出四个数值的齐次坐标之集合，更高维度空间亦然。

同一关系式 $sx+ty+uz=0$ 可以被视为线的方式或点的方程。通常，点与线的齐次坐标在代数上或逻辑上并没有什么不同。因此，以点为基本元素的平面几何与以线为基本元素的平面几何，除了在解释上外，其他都一样。这导致了投影几何内的对偶性，该原则描述，将投影几何内一定理的点与线之角色互换，其结果也会是一个定理。类似 地，在三维投影空间内的点亦对偶于在三维投影空间内的平面，更高维度空间亦然。

## 普吕克坐标

在三维投影空间内为线配置坐标会较为复杂，因为似乎需要总计8个坐标值，两个处于该线上的点之坐标，或两个相交为该线的平面。尤利乌斯·普吕克提出了一个有用的方法，由两个点之齐次坐标 $(x_1,x_2,x_3,x_4)$ 及 $(y_1,y_2,y_3,y_4)$ 的行列式 $x_i y_j - x_j y_i \ (1\leq i<j\leq 4)$，建立其6个坐标值。普吕克嵌入为普吕克坐标的广义化，为在$n$维投影空间内建立任一 $m$维元素之齐次坐标。

## 贝祖定理的应用

贝祖定理预测两条曲线相交点之数量等于该多项式次数之相乘（假设一代数封闭体，且具某一计算相交次数的规则）。贝祖定理预测两条直线会相交于一点，而这通常是正确的，但当两条直线平行时，相交的点会在无穷远处。齐次坐标被用来定位此一情形之相交点。同样地，贝祖定理预测一条直线会与一条圆锥曲线相交于两个点，但在某些情形下，有其中一个点或两个点会在无穷远处，而必须使用齐次坐标定位这些点。例如， $y=x^2$ 及 $x=0$ 在有限（仿射）平面上只有一个点。为了找出另一个相交点，可将方程变换成齐次形式$yz=x^2$ 及 $x=0$。这会导出 $x=yz=0$，且假设$x$、$y$及$z$不全为 0，其解答为 $x=y=0, \ z\neq 0$ 及 $x=z=0, \ y\neq 0$。第一个解答为笛卡儿坐标内的点$(0,0)$，有限的相交点。第二个解答为齐次坐标内的 $(0,1,0)$，对应于 y 轴的方向。对方程 $xy=1$ 及 $x=0$ 则不存在有限的相交点。将此方程变换成齐次形式将给出 $xy=z^2$ 及 $x=0$。可导出方程 $z^2=0$，其中在 $z=0$ 有两个根。由原方程 $x=0$ 可知 $y\neq 0$，因为齐次坐标内至少有一值必须为非零。因此， $(0,1,0)$ 会是在符合此定理下，具重数 2 的相交点。

## 圆点

圆方程在实（或复）投影平面上之齐次形式为 $x^2 + y^2 +2axz+2byz+cz^2=0$。该圆与直线在无穷远处之相交点可透过设定 $z=0$ 而取得。这会导出方程 $x^2+y^2=0$，该方程有两个复数解，分别对应复投影平面内齐次坐标为 $(1,i,0)$ 及 $(1,-i,0)$ 的两点。这两点称之为虚圆点（circular points at infinity），且可被视为所有圆的共同相交点。圆点亦可扩展至更高次曲线，称之为圆代数曲线。

## 变更坐标系

如同可任意地选择笛卡儿坐标内的轴一般，亦可任一选择单一系统内所有可能的齐次坐标系。因此，能知道这些系统间是如何关连的将会很有用。

令 $(x,y,z)$为一点在投影平面上的齐次坐标，且对一固定矩阵

$$A=\begin{pmatrix}a&b&c\\d&e&f\\g&h&i\end{pmatrix},$$

其中 $\det(A)\neq 0$，透过下列方式定义一组新的坐标 $(X,Y,Z)$

$$\begin{pmatrix}X\\Y\\ Z\end{pmatrix}=A\begin{pmatrix}x\\y\\z\end{pmatrix}.$$

将 $(x,y,z)$ 乘上一纯量会导致 $(X,Y,Z)$ 乘上同一纯量，且因为 $A$ 的行列式不为零，除非$x$、$y$及$z$全为零，$X$、$Y$及 $Z$不会全为 0。因此，$(X,Y,Z)$ 是该点在投影平面上一组新的齐次坐标。若 $z$固定为 1，则

$$X=ax+by+c,\,Y=dx+ey+f,\,Z=gx+hy+i$$

会正比于该点至直线

$$ax+by+c=0,\,dx+ey+f=0,\,gx+hy+i=0.$$

有号距离（“有号距离”为距离乘上正负号 1 或 -1，该正负号取决为点在线在哪一方）。注意，当 $a=b=0$ 时，$X$的值只是个常数，这对$Y$及$Z$也一样。

在齐次坐标的三条线

$$ax+by+cz=0,\,dx+ey+fz=0,\,gx+hy+iz=0$$

或在 $(X,Y,Z)$ 系统的

$$X=0,\,Y=0,\,Z=0$$

会形成该系统的一个三角形，称之为“参考坐标三角形”。

## 重心坐标

莫比乌斯原本建立齐次坐标时，会指定一点位于置作为将重量放在一固定三角形之三个顶点的三个点组成之系统的重心。在三角形内的点会表示成具正的重量，而在三角形外的点则表示成负的重量。将该系统内的重量乘上一纯量不会影响其重心，因此为齐次坐标系统的一个特例。

## 三线坐标

令 $l$、$m$、$n$为平面上的三条线，并定义点$p$的坐标$X$、$Y$及$Z$为$p$至这三条线间的有号距离。这被称之为$p$相应于三条线两两相交之顶点组成的三角形之三线坐标。严格来说，该坐标并不是齐次的，因为$X$、$Y$及$Z$的值是绝对的，而不只有等比例而已。不过，在这些值间有着线性关系，所以可透过允许 $(X,Y,Z)$ 的倍数表示同一点来让该坐标变得齐次。更一般性地说，$X$、$Y$及$Z$可定义为常数 $p$、$r$及 $q$乘上至 $l$、$m$及$n$的距离，产生一个具相同参考坐标三角形的不同齐次坐标系。实际上，若没有线是无穷远线，则该坐标系为点在平面上之齐次坐标系最一般的类型。

## 电脑图形内之应用

齐次坐标在电脑图形内无处不在，因为该坐标允许平移、旋转、缩放及透视投影等可表示为矩阵与向量相乘的一般向量运算。依据链式法则，任何此类运算的序列均可相乘为单一个矩阵，从而实现简单且有效之处理。与此相反，若使用笛卡儿坐标，平移及透视投影不能表示成矩阵相乘，虽然其他的运算可以。现在的 OpenGL 及 Direct3D 图形卡均利用齐次坐标的优点，以具4个暂存器的向量处理器来实作顶点着色引擎，以完成顶点在电脑图学中的渲染。

例如，在透视投影里，空间中的位置与该位置至称为“投影中心”的固定点间的线相关联。该点可透过找出平面与该线之相交点被映射至该平面上。这是三维物件如何呈现于眼上的一精确表示。在最简单的情况下，投影中心会是原点，而点会映射至平面 z = 1上，如同在笛卡儿坐标上时一样。对空间内的一点 $(x,y,z)$，其线与平面相交的点为 (x/z, y/z, 1)。删掉现在显得多余的 z 坐标，即变成 $(x,y,z)$。在齐次坐标里，点 $(x,y,z)$ 表示为 $(xw,yw,zw,w)$，且该点映射至平面上的点表示为 $(xw,yw,zw)$，因此投影可以以矩阵形成表示为

$$\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{pmatrix}$$

表示其他几何变转的矩阵可与此一矩阵透过矩阵乘法结合。其结果是，任何空间的透视投影都能被表示为单一个矩阵。

## 外部链接

- Jules Bloomenthal and Jon Rokne, Homogeneous coordinates
- Ching-Kuang Shene, Homogeneous coordinates
- Wolfram MathWorld