1. 程式人生 > >齊次座標系

齊次座標系

問題:兩條平行線可以相交於一點

在歐氏空間(幾何),同一平面的兩條平行線不能相交,或永遠不能相遇。這是我們都熟悉的常識。

然而,在透視空間裡面,兩條平行線可以相交,例如:在下圖中,火車軌道離我們的視線越遠,變得越窄。最後,兩條平行線相交於地平線處,即無窮遠處的一點。

railroad.jpg

歐氏空間(或笛卡爾空間)描述 2D / 3D 幾何非常適合,但是這種方法卻不適合處理透視空間的問題(實際上,歐氏幾何是透視幾何的一個子集合),2D 點的笛卡爾座標可以表示為 (

x , y )

如果一個點在無窮遠處,這個點的座標將會是 (

, ) ,在歐氏空間,這變得沒有意義。平行線在透視空間的無窮遠處交於一點,但是在歐氏空間卻不能。數學家發現了一種方法來解決這個問題。


方法:齊次座標

August Ferdinand Möbius 引入了齊次座標,使得在透視空間進行圖形和幾何計算成為可能。齊次座標是一種使用N+1個數來代表N維座標的方法。

為了構建 2D 齊次座標,我們可以在現有笛卡爾座標基礎上,加一個額外的變數

w 。因此,笛卡爾座標系內的點 ( X , Y ) 在齊次座標系裡面變成了 ( x , y , z ) ,並且有

{ X = x / w Y = y / w
比如,笛卡爾座標系下的點(1,2)的齊次座標可以表示為(1,2,1)。如果點(1,2)移動到無限遠處,在笛卡爾座標下它變為 ( , ) ,然後它的齊次座標表示為(1,2,0),因為 ( 1/0,2/ 0 ) ( , ) 。注意,我們可以不用 “ “ 來表示一個無窮遠處的點了。


為什麼叫齊次座標?

如上所述,為了將齊次座標 ( x , y , z ) 轉化為笛卡爾座標 ( X , Y ) ,只需將 x y 除以 w 即可:

( x , y , w ) H o m o g e n e o u s ( x w , y w ) C a r t e s i a n
轉化齊次座標到笛卡爾座標的過程中,我們有一個重要發現,請看下面的例子: