圖形學中座標點和座標系的變換

關於這方面之前看了好2次,雖然內容很簡單,但是每次看了就忘了,只有大概的印象。等到下次做什麼東西的時候需要用到座標變換,又要把書重新看一遍。所以這次打算把看的東西記下來,以後找起來方便。


參考書 Computer Graphics OpenGL 版本,3rd Edition


************************************ 齊次座標

齊次座標的意義:如果沒有齊次座標,對於任何一個點(x,y,z)和向量(x,y,z),我們是無法區分的。如果把非齊次座標的形式直接應用到算法裏面,編程過程中要區分二者不是不可以,但是很麻煩。 但是一旦有了齊次座標,我們就可以很容易區分二者了


齊次座標的引入:爲了區分一個tuple到底是點還是向量,我們可以這樣看。假設座標系C基向量爲 i,j,k,原點爲 。那麼一個向量 

.  (1)

如果這個向量的起點爲原點,終點爲P,那麼

所以 

  (2)

把上面(1)(2)寫成矩陣形式就是

其中(x,y,z,0)就是向量v在座標系C下的座標。(x,y,z,1)就是點P在座標系C下的座標。

注意:

1. 如果要把基向量i,j,k的座標和原點 的座標找到,則還需要定義一個參考座標系R,在R裏面去量化 i,j,k, ;否則它們只能用符號表示。

2. 在齊次座標下,向量的任何線性組合都有意義,都是向量。 但是點只有放射組合纔有意義,纔是點。 一個點和起始於該點的向量的線性組合是一個線性插值。


*********************************  仿射變換

放射變換一般形式:


仿射變換的一個性質是 (M*P,M*P2,...,M*Pn) = M*(P1,P2,...,Pn),這個性質帶來的好處就是,對目標圖形的一批點,我們只需要計算一次變換矩陣M,而不是對每一個點都算!


1. 平移

2. 縮放

3. 錯切

形式太多,略


4. 旋轉

繞x軸,pitch

繞y軸,yaw

繞z軸,roll

其中,c=cos( ), s=sin( )

定理:一個點繞過原點的軸u 旋轉等價於分別繞x y z軸旋轉特定的角度。

由該定理可以得到繞u軸旋轉角度的一步變換矩陣:

其中,c=cos, s=sin,x y z是u向量的座標


5. 連續的進行放射變換 M1,M2,M3,。。。Mn,最後的變換矩陣爲: 


6. 把新的點變回原來的點,變換矩陣爲M的逆


*************************************** 座標系變換

1. 先考慮上面仿射變換矩陣M。設

其中,mi 是M的各個列向量

如果我們設在一個參考座標系R下,該座標系C的基向量  i,j,k 是單位正交基並且原點=(0, 0, 0 | 1)^T,那麼把M本別作用於向量 i,j,k (其次座標表示的),得到

m1=M*i m2=M*j m3=M*k m4=M*

從而新座標系的基向量爲 m1 m2 m3 m4。 如果Q=MP,那麼Q=(m1, m2, m3, m4)*(Px, Py, Pz, 1)^T,原來在新座標系下,Q的座標值等於P !!!! exciting


再仔細看m1~m3,除了錯切,其餘三種得到的m1~m3保持原基向量組的正交性!


2. 下面考慮一般的座標變換。

設 仿射變換爲T, 由原座標系C和變換T 得到新座標系C‘


其中 新舊座標系的基向量和原點座標均在一個參考座標系R下刻畫。如果我們在參考系R下找一個點P,那麼分別在座標系C和座標系C’ 下,同一個點P的座標值是不同的。因爲度量標準(座標系)不同。

設P在C下的座標爲(a,b,c,1),在C‘ 下座標爲(a’,b‘,c’,1),所以


所以,即 

因爲i 非零向量,所以 a=T*a‘。 同理可得其他分量的關係,從而


注意到T是仿射變換,所以T的第四行是(0,0,0,1),所以上式第四個等式是成立的。


3.  連續的座標變換 T1,T2,。。。Tn 後,最後的變換矩陣爲 


4. 從新座標變回舊座標,變換矩陣爲T的逆矩陣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章