齊次坐標(biāo)的理解一直對齊次坐標(biāo)這個(gè)概念的理解不夠徹底,只見大部分的書中說道“齊次坐標(biāo)在仿射變換中非常的方便”,然后就沒有了后文,今天在一個(gè)叫做“三百年 重生”的博客上看到一篇關(guān)于透視投影變換的探討的文章,其中有對齊次坐標(biāo)有非常精辟的說明,特別是針對這樣一句話進(jìn)行了有力的證明:“齊次坐標(biāo)表示是計(jì)算機(jī)圖形學(xué)的重要手段之一,它既能夠用來明確區(qū)分向量和點(diǎn),同時(shí)也更易用于進(jìn)行仿射(線性)幾何變換。”—— F.S. Hill, JR。 由于作者對齊次坐標(biāo)真的解釋的不錯(cuò),我就原封不動(dòng)的摘抄過來: 對于一個(gè)向量v以及基oabc,可以找到一組坐標(biāo)(v1,v2,v3),使得v = v1 a + v2 b + v3 c (1)
從上面對向量和點(diǎn)的表達(dá),我們可以看出為了在坐標(biāo)系中表示一個(gè)點(diǎn)(如p),我們把點(diǎn)的位置看作是對這個(gè)基的原點(diǎn)o所進(jìn)行的一個(gè)位移,即一個(gè)向量——p – o(有的書中把這樣的向量叫做位置向量——起始于坐標(biāo)原點(diǎn)的特殊向量),我們在表達(dá)這個(gè)向量的同時(shí)用等價(jià)的方式表達(dá)出了點(diǎn)p:p = o + p1 a + p2 b + p3 c (3) (1)(3)是坐標(biāo)系下表達(dá)一個(gè)向量和點(diǎn)的不同表達(dá)方式。這里可以看出,雖然都是用代數(shù)分量的形式表達(dá)向量和點(diǎn),但表達(dá)一個(gè)點(diǎn)比一個(gè)向量需要額外的信息。如果我寫出一個(gè)代數(shù)分量表達(dá)(1, 4, 7),誰知道它是個(gè)向量還是個(gè)點(diǎn)! 我們現(xiàn)在把(1)(3)寫成矩陣的形式:v = (v1 v2 v3 0) X (a b c o) p = (p1 p2 p3 1) X (a b c o),這里(a,b,c,o)是坐標(biāo)基矩陣,右邊的列向量分別是向量v和點(diǎn)p在基下的坐標(biāo)。這樣,向量和點(diǎn)在同一個(gè)基下就有了不同的表達(dá):3D向量的第4個(gè)代數(shù)分量是0,而3D點(diǎn)的第4個(gè)代數(shù)分量是1。像這種這種用4個(gè)代數(shù)分量表示3D幾何概念的方式是一種齊次坐標(biāo)表示。
這樣,上面的(1, 4, 7)如果寫成(1,4,7,0),它就是個(gè)向量;如果是(1,4,7,1),它就是個(gè)點(diǎn)。下面是如何在普通坐標(biāo)(Ordinary Coordinate)和齊次坐標(biāo)(Homogeneous Coordinate)之間進(jìn)行轉(zhuǎn)換: (1)從普通坐標(biāo)轉(zhuǎn)換成齊次坐標(biāo)時(shí) 如果(x,y,z)是個(gè)點(diǎn),則變?yōu)?/span>(x,y,z,1); 如果(x,y,z)是個(gè)向量,則變?yōu)?/span>(x,y,z,0) (2)從齊次坐標(biāo)轉(zhuǎn)換成普通坐標(biāo)時(shí) 如果是(x,y,z,1),則知道它是個(gè)點(diǎn),變成(x,y,z); 如果是(x,y,z,0),則知道它是個(gè)向量,仍然變成(x,y,z)
以上是通過齊次坐標(biāo)來區(qū)分向量和點(diǎn)的方式。從中可以思考得知,對于平移T、旋轉(zhuǎn)R、縮放S這3個(gè)最常見的仿射變換,平移變換只對于點(diǎn)才有意義,因?yàn)槠胀ㄏ蛄繘]有位置概念,只有大小和方向.
而旋轉(zhuǎn)和縮放對于向量和點(diǎn)都有意義,你可以用類似上面齊次表示來檢測。從中可以看出,齊次坐標(biāo)用于仿射變換非常方便。
由于齊次坐標(biāo)使用了4個(gè)分量來表達(dá)3D概念,使得平移變換可以使用矩陣進(jìn)行,從而如F.S. Hill, JR所說,仿射(線性)變換的進(jìn)行更加方便。由于圖形硬件已經(jīng)普遍地支持齊次坐標(biāo)與矩陣乘法,因此更加促進(jìn)了齊次坐標(biāo)使用,使得它似乎成為圖形學(xué)中的一個(gè)標(biāo)準(zhǔn)。
以上很好的闡釋了齊次坐標(biāo)的作用及運(yùn)用齊次坐標(biāo)的好處。其實(shí)在圖形學(xué)的理論中,很多已經(jīng)被封裝的好的API也是很有研究的,要想成為一名專業(yè)的計(jì)算機(jī)圖形學(xué)的學(xué)習(xí)者,除了知其然必須還得知其所以然。這樣在遇到問題的時(shí)候才能迅速定位問題的根源,從而解決問題。 |
|
|