天天看點

計算機圖形學——變換

幾何變換

觀察角度和物體位置的改變可以通過在世界坐标系中對物體進行各種變換來實作,如平移、放縮、旋轉等。  

二維視窗的裁剪

選擇顯示的内容--圖形在視窗内的部分被顯示出來,視窗外的部分被裁剪掉

裁剪算法:Sutherland-Cohen算法、Cyrus-Beck算法、梁友棟-Barsky算法、 Sutherland-Hodgman算法等。

坐标系

世界坐标系(world coordinate):一個圖形場景往往由多個對象組成,為了描述它們之間的空間關系,需要把它們置于一個統一的坐标系中,該坐标系稱為世界坐标系。

模型坐标系(modeling coordinate)或局部坐标系(local coordinate):當構造單個對象的數字模型時,為了友善可以将其置于一個特定的坐标系下,即模型坐标系或局部坐标系。

裝置坐标系(device coordinate):圖形輸出時,則應在輸出裝置上建立一個坐标系,這個坐标系稱為裝置坐标系。裝置坐标系依據裝置的種類有不同的形式,如二維的螢幕坐标系,描述機械手運動軌迹的三維坐标系。

标準化裝置坐标系(normalized device coordinate):有些圖形系統,對裝置坐标系進行了規範化,将坐标範圍限定在區間{x,y,z | 0≤x≤1, 0≤y≤1, 0≤z≤1}内,稱為标準化裝置坐标系。

1、平移

點(x’, y’, z’)由點(x, y, z)在x, y和z軸方向分别移動距離Δx, Δy和Δz得到。兩點坐标間的關系為:

        x′=x+Δx

        y′=y+Δy        

        z′=z+Δz

計算機圖形學——變換

其矩陣形式為:

計算機圖形學——變換

2、放大和縮小

設點(x, y, z)經縮放變換後得點(x′,y′,z′)。兩點坐标間的關系為

計算機圖形學——變換

其中sx,sy和sz 為沿x, y和z軸方向放縮的比例

計算機圖形學——變換

其矩陣形式是

計算機圖形學——變換

比例因子sx、sy和sz相等時,式是以原點為相似中心的相似變換,如圖是對一三角形作相似比為2的相似變換的情形。

為了使縮放變換後的圖形仍在原位置附近,可另外定義一個相似中心點(xp, yp, zp) 。

先把整個圖形沿x, y和z方向平移–xp, –yp和–zp,相似中心就移到了坐标原點。

然後再對每一點按照式(4.3)作變換。

最後再沿x, y和z方向平移xp, yp和zp,把經過縮放的圖形移回原處。

計算機圖形學——變換

 這樣做的綜合效果是圖形以(xp, yp, zp)為中心作了縮放變換.

計算機圖形學——變換
計算機圖形學——變換

比例變換:

計算機圖形學——變換
計算機圖形學——變換

 一個問題:把直線ax+by+c=0平移到原點的變換矩陣?

1.沿y軸,平移直線使之通過原點,平移量為c/b,變換矩陣:

計算機圖形學——變換

2.沿x軸,平移直線使之通過原點,平移量為c/a,變換矩陣:

計算機圖形學——變換

3、旋轉變換

 設給定點的坐标為

(x, y, z)= (rcos   , rsin   , z)

它繞z軸旋轉α角後,可得點(x′, y′, z′)

計算機圖形學——變換

該變換的矩陣形式為

計算機圖形學——變換

繞y軸和x軸的旋轉變換公式分别為

計算機圖形學——變換

繞空間任一通過坐标原點的軸,做旋轉變換,需給出這根軸的方向(Ax,Ay,Az),下面要求(x,y,z)繞(Ax, Ay, Az)旋轉α後得到(x’,y’,z’)。

1)首先建立一個新的坐标系Ouvw, Ow軸的指向和(Ax,Ay,Az)的指向一緻.

--實際上就是将(Ax, Ay, Az)變成前面的z軸。

2)把要作旋轉變換的對象從坐标系oxyz變到坐标系Ouvw, 在坐标系Ouvw把物體繞Ow軸旋轉要求轉動的角度;

3)再把旋轉後的對象從坐标系Ouvw變換到原坐标系oxyz中,這樣繞給定的、通過原點的軸的旋轉便完成了。

計算機圖形學——變換

具體計算:

計算機圖形學——變換
計算機圖形學——變換

 注意到這裡使用轉置矩陣AT來替換逆矩陣A-1

計算機圖形學——變換

式2獲得的是xyz坐标轉換成uvw坐标後,uvw坐标下選擇α後得到的(u’,v’,w’)

式3和4的目的是将(u’,v’,w’)表示為xyz坐标下對應的('x’,'y’,z’)

 4)如果旋轉軸不通過坐标原點,而通過(xp, yp, zp)??

       可先調用平移變換移動(xp, yp, zp)成原點,然後再沿着(Ax, Ay, Az) 旋轉α 。

即象縮放變換一樣,先作變換平移(-xp, -yp,-zp),再按前頁的式5作旋轉變換,最後将其平移(xp, yp, zp)。

例題

計算機圖形學——變換

 繞x軸旋轉,将a=0,觀察上圖中的V1向量V1(0,b,c)可以得到α的旋轉角表達式

計算機圖形學——變換
計算機圖形學——變換
計算機圖形學——變換

4、錯切變換

計算機圖形學——變換

 錯切變換常用于圖形彈性形變的處理上。錯切變換矩陣對角線上的坐标全為1!

5、鏡像

鏡像變換也稱為對稱變換。變換後的圖形是原圖形關于某一軸線或原點的鏡像 。

計算機圖形學——變換

 寫出關于xy平面對稱面的鏡面反射變換

計算機圖形學——變換
計算機圖形學——變換

6、總結

觀察上述的圖形變換:

圖形變化了, 但是原圖形的連邊規則沒有改變,隻是頂點位置改變了。

我們可以得出結論:變換圖形就是要改變圖形的幾何關系,即改變頂點坐标,同時保持圖形的拓撲關系不變。

齊次坐标與變換的矩陣表示

在實際繪圖時,常要對對象連續做幾次變換,例如作了平移後,作旋轉,再作放大等。這樣對每一點的坐标要依次用式(4.2),式(4.8)和式(4.4)作計算,這樣計算量較大。

如果隻有旋轉和放縮,則可把旋轉矩陣表達式和放縮矩陣表達式合并成一個矩陣。可寫成如下形式:

計算機圖形學——變換

 但如果再加上平移變換,變換矩陣就不容易合并了。

計算機圖形學——變換

齊次坐标表示法就是用n+1維向量表示n維向量。

n維向量的變換是在n+1維的空間進行的,變換後的n維結果是被反投回到感興趣的特定的維空間内而得到的。

 例如,我們使用齊次坐标(xh,yh,zh,h)來表示每個三維空間坐标位置(x,y,z)。

 其中參數h可取為任意非零值。最簡單的選擇是取h=1,是以每個三維位置都可用齊次坐标(x,y,z,1)進行表示。

為使平移變換也能象變換上述矩陣變換式那樣容易合并,可以采用齊次坐标。

平移變換

計算機圖形學——變換

 旋轉變換

計算機圖形學——變換

 其中h稱為啞坐标 。

普通坐标與齊次坐标的關系為“一對多”

普通坐标×h → 齊次坐标

齊次坐标÷h → 普通坐标

計算機圖形學——變換

 答案:D

其次坐标最後一個次元h不在三維空間上有對應,是以不需要考慮。普通坐标×h → 齊次坐标,這裡h=2

是以三維空間坐标為(4,3)

判斷:

所謂齊次坐标表示,就是用 n+1 維向量表示n維向量,那麼普通坐标與齊次坐标的關系為“多對一”的關系。

錯誤,是“一對多”

使用齊次坐标可以将n維空間的一個點向量唯一的映射到n+1維空間中。

錯誤,“一對多”

變換的模式

具體應用中,有些圖形軟體包提供了兩種圖形的變換模式——圖形模式和空間模式,使我們可以友善地控制變換的次序。

兩種圖形的變換模式

圖形模式:

    矩陣合并時,先調用的矩陣放在右邊,後調用的矩陣放在左邊,也稱為固定坐标系模式。

    特點:每一次變換均可看成相對于原始坐标系中執行的。

空間模式:

  也稱為活動坐标系模式,矩陣的合并方式和圖形模式相反。

  特點:在連續執行幾次變換時,每一次變換均可看成是在上一次變換所形成的新坐标系中進行的。

圖形模式

1、先把圖形繞z軸旋轉30°,然後再沿x軸平移距離7

計算機圖形學——變換

矩陣合并時,先調用的矩陣放在右邊,後調用的矩陣放在左邊。

計算機圖形學——變換

2、先把圖形沿x軸平移距離7,然後再繞z軸旋轉30°

計算機圖形學——變換
計算機圖形學——變換

空間模式

先把圖形繞z軸旋轉30°,然後再沿x軸平移距離7

計算機圖形學——變換
計算機圖形學——變換

可看成先對坐标系oxy作旋轉,得到相應的坐标系ox′y′,然後再相對于新坐标系ox′y′作平移得到最後結果。

經變換後得到的三角形相對于原始坐标系的位置與圖4.10(c)是一樣的,隻是考慮變換的方式不同。

計算機圖形學——變換

不同的應用要用不同的變換模式

在繪圖的情況下多用圖形模式,因為使用者比較容易估計變換後的結果。

整體變換的基礎上再作一些較獨立的局部變換時,常用空間模式。

      如機械手經過變換後移動到适當位置,手腕和手指的運動是相對于手臂的,如果在手臂上建立了一個坐标,考慮手腕手指的運動就簡單多了。當手臂作移動後,固定在手臂上的坐标便成為新坐标,手腕和手指的運動就可以在新坐标中考慮。這種多次變換的情況要用空間模式.