天天看點

關于齊次坐标的了解

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

在歐氏幾何空間,同一平面的兩條平行線不能相交,這是我們都熟悉的一種場景。

然而,在透視空間裡面,兩條平行線可以相交,例如:火車軌道随着我們的視線越來越窄,最後兩條平行線在無窮遠處交于一點。

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

如果一個點在無窮遠處,這個點的坐标将會(∞,∞),在歐氏空間,這變得沒有意義。平行線在透視空間的無窮遠處交于一點,但是在歐氏空間卻不能,數學家發現了一種方式來解決這個問題。

方法:齊次坐标

簡而言之,齊次坐标就是用N+1維來代表N維坐标

我們可以在一個2D笛卡爾坐标末尾加上一個額外的變量w來形成2D齊次坐标,是以,一個點(X,Y)在齊次坐标裡面變成了(x,y,w),并且有

X = x/w

Y = y/w

例如,笛卡爾坐标系下(1,2)的齊次坐标可以表示為(1,2,1),如果點(1,2)移動到無限遠處,在笛卡爾坐标下它變為(∞,∞),然後它的齊次坐标表示為(1,2,0),因為(1/0, 2/0) = (∞,∞),我們可以不用”∞"來表示一個無窮遠處的點了,哈哈。

為什麼叫齊次坐标?

我們把齊次坐标轉化為笛卡爾坐标的方法是前面n-1個坐标分量分别除以最後一個分量即可。

關于齊次坐标的了解

轉化齊次坐标到笛卡爾坐标的過程中,我們有一個發現,例如:

關于齊次坐标的了解

你會發現(1, 2, 3), (2, 4, 6) 和(4, 8, 12)對應同一個Euclidean point (1/3, 2/3),任何标量的乘積,例如(1a, 2a, 3a) 對應 笛卡爾空間裡面的(1/3, 2/3) 。是以,這些點是“齊次的”,因為他們代表了笛卡爾坐标系裡面的同一個點。換句話說,齊次坐标有規模不變性。

證明:兩條直線可以相交

考慮如下方程組:

關于齊次坐标的了解

我們知道在笛卡爾坐标系裡面,該方程組無解,因為C ≠ D,如果C=D,兩條直線就相同了。

讓我們在透視空間裡面,用齊次坐标x/w, y/w代替x ,y,

關于齊次坐标的了解

現在我們有一個解(x, y, 0),兩條直線相交于(x, y, 0),這個點在無窮遠處。