問(wèn)題:兩條平行線可以相交于一點(diǎn)
- 在歐式幾何空間中,處于同一平面的兩條平行直線不能相交,這是我們中學(xué)就學(xué)的知識(shí)。
- 然而在透視空間中,兩條平行直線可以相交,例如:火車(chē)軌道隨著我們的視線越來(lái)越窄,最后兩條平行線在無(wú)窮遠(yuǎn)處交于一點(diǎn)。
- 在歐式幾何(笛卡爾)空間中,描述2D/3D幾何非常合適,但是這種方法卻不合適處理透視空間的問(wèn)題(實(shí)際上,笛卡爾空間是透視幾何的一個(gè)子集),2D笛卡爾坐標(biāo)可以表示為(x, y)。
- 如果一個(gè)點(diǎn)在無(wú)窮遠(yuǎn)處,這個(gè)點(diǎn)的坐標(biāo)將會(huì)(∞,∞),在歐氏空間,這變得沒(méi)有意義。平行線在透視空間的無(wú)窮遠(yuǎn)處交于一點(diǎn),但是在歐氏空間卻不能,數(shù)學(xué)家發(fā)現(xiàn)了一種方式來(lái)解決這個(gè)問(wèn)題。
方法:齊次坐標(biāo)
簡(jiǎn)而言之,齊次坐標(biāo)就是用N+1維來(lái)代表N維坐標(biāo)
- 我們可以在一個(gè)2D笛卡爾坐標(biāo)末尾加上一個(gè)額外的變量w來(lái)形成2D齊次坐標(biāo),因此,一個(gè)點(diǎn)(X,Y)在齊次坐標(biāo)里面變成了(x,y,w),并且有
X = x/w
Y = y/w
- 例如,笛卡爾坐標(biāo)系下(1,2)的齊次坐標(biāo)可以表示為(1,2,1),如果點(diǎn)(1,2)移動(dòng)到無(wú)限遠(yuǎn)處,在笛卡爾坐標(biāo)下它變?yōu)?∞,∞),然后它的齊次坐標(biāo)表示為(1,2,0),因?yàn)?1/0, 2/0) = (∞,∞),我們可以不用”∞"來(lái)表示一個(gè)無(wú)窮遠(yuǎn)處的點(diǎn)了。是不是豁然開(kāi)朗的感覺(jué)。
為什么叫齊次坐標(biāo)?
-
我們把齊次坐標(biāo)轉(zhuǎn)化為笛卡爾坐標(biāo)的方法是前面n-1個(gè)坐標(biāo)分量分別除以最后一個(gè)分量即可。
image.png -
轉(zhuǎn)化齊次坐標(biāo)到笛卡爾坐標(biāo)的過(guò)程中,我們有一個(gè)發(fā)現(xiàn),例如:
image.png 你會(huì)發(fā)現(xiàn)(1, 2, 3), (2, 4, 6) 和(4, 8, 12)對(duì)應(yīng)同一個(gè)Euclidean point (1/3, 2/3),任何標(biāo)量的乘積,例如(1a, 2a, 3a) 對(duì)應(yīng) 笛卡爾空間里面的(1/3, 2/3) 。因此,這些點(diǎn)是“齊次的”,因?yàn)樗麄兇砹说芽栕鴺?biāo)系里面的同一個(gè)點(diǎn)。換句話說(shuō),齊次坐標(biāo)有規(guī)模不變性。
證明:兩條直線可以相交
-
考慮如下方程組:
image.png 我們知道在笛卡爾坐標(biāo)系里面,該方程組無(wú)解,因?yàn)镃 ≠ D,如果C=D,兩條直線就相同了。
-
讓我們?cè)谕敢暱臻g里面,用齊次坐標(biāo)x/w, y/w代替x ,y,
image.png
現(xiàn)在我們有一個(gè)解(x, y, 0),兩條直線相交于(x, y, 0),這個(gè)點(diǎn)在無(wú)窮遠(yuǎn)處。
小結(jié):齊次坐標(biāo)在圖形學(xué)中是一個(gè)非常基礎(chǔ)的概念,例如3D場(chǎng)景映射到2D場(chǎng)景的過(guò)程中。
參考: http://www.songho.ca/math/homogeneous/homogeneous.html



