問題:兩條平行線可以相交于一點(diǎn)
- 在歐式幾何空間中企量,處于同一平面的兩條平行直線不能相交炸站,這是我們中學(xué)就學(xué)的知識俄周。
- 然而在透視空間中吁讨,兩條平行直線可以相交,例如:火車軌道隨著我們的視線越來越窄峦朗,最后兩條平行線在無窮遠(yuǎn)處交于一點(diǎn)建丧。
- 在歐式幾何(笛卡爾)空間中,描述2D/3D幾何非常合適波势,但是這種方法卻不合適處理透視空間的問題(實(shí)際上翎朱,笛卡爾空間是透視幾何的一個(gè)子集),2D笛卡爾坐標(biāo)可以表示為(x, y)。
- 如果一個(gè)點(diǎn)在無窮遠(yuǎn)處艰亮,這個(gè)點(diǎn)的坐標(biāo)將會(∞,∞)闭翩,在歐氏空間,這變得沒有意義迄埃。平行線在透視空間的無窮遠(yuǎn)處交于一點(diǎn)疗韵,但是在歐氏空間卻不能,數(shù)學(xué)家發(fā)現(xiàn)了一種方式來解決這個(gè)問題侄非。
方法:齊次坐標(biāo)
簡而言之蕉汪,齊次坐標(biāo)就是用N+1維來代表N維坐標(biāo)
- 我們可以在一個(gè)2D笛卡爾坐標(biāo)末尾加上一個(gè)額外的變量w來形成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)到無限遠(yuǎn)處算利,在笛卡爾坐標(biāo)下它變?yōu)?∞,∞),然后它的齊次坐標(biāo)表示為(1泳姐,2效拭,0),因?yàn)?1/0, 2/0) = (∞,∞)胖秒,我們可以不用”∞"來表示一個(gè)無窮遠(yuǎn)處的點(diǎn)了缎患。是不是豁然開朗的感覺。
為什么叫齊次坐標(biāo)阎肝?
-
我們把齊次坐標(biāo)轉(zhuǎn)化為笛卡爾坐標(biāo)的方法是前面n-1個(gè)坐標(biāo)分量分別除以最后一個(gè)分量即可挤渔。
-
轉(zhuǎn)化齊次坐標(biāo)到笛卡爾坐標(biāo)的過程中,我們有一個(gè)發(fā)現(xiàn)风题,例如:
你會發(fā)現(xiàn)(1, 2, 3), (2, 4, 6) 和(4, 8, 12)對應(yīng)同一個(gè)Euclidean point (1/3, 2/3)蚂蕴,任何標(biāo)量的乘積,例如(1a, 2a, 3a) 對應(yīng) 笛卡爾空間里面的(1/3, 2/3) 俯邓。因此,這些點(diǎn)是“齊次的”熔号,因?yàn)樗麄兇砹说芽栕鴺?biāo)系里面的同一個(gè)點(diǎn)稽鞭。換句話說,齊次坐標(biāo)有規(guī)模不變性引镊。
證明:兩條直線可以相交
-
考慮如下方程組:
我們知道在笛卡爾坐標(biāo)系里面朦蕴,該方程組無解,因?yàn)镃 ≠ D,如果C=D,兩條直線就相同了弟头。
-
讓我們在透視空間里面吩抓,用齊次坐標(biāo)x/w, y/w代替x ,y,
現(xiàn)在我們有一個(gè)解(x, y, 0),兩條直線相交于(x, y, 0)赴恨,這個(gè)點(diǎn)在無窮遠(yuǎn)處疹娶。
小結(jié):齊次坐標(biāo)在圖形學(xué)中是一個(gè)非常基礎(chǔ)的概念伦连,例如3D場景映射到2D場景的過程中雨饺。
參考: http://www.songho.ca/math/homogeneous/homogeneous.html