齊次坐標

<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