1. 程式人生 > >圖形學空間座標變化之二維圖形觀察及變換

圖形學空間座標變化之二維圖形觀察及變換

一、二維圖形變化之基本知識 本章涉及向量、世界座標系、使用者座標系、視窗與視區、齊次座標、二維變換等 。需要掌握的知識點有: 
  • 向量、矩陣以及它們的運算 
  • 座標系的概念和座標系之間的變換
  • 齊次座標的概念
  • 二維圖形的各種變換
  • 視窗與視區的變換
1 、引言向量對於圖形學的重要性,計算機圖形學中,主要處理三維世界中的物體物件。所有需要繪製的物件,都擁有形狀、位置和方向等屬性 。需要編寫合適的計算機程式來大致描述這些物件,並描述出圍繞在物體周圍的光線強度 。計算出最終在顯示器上的每一個畫素的值 。如果沒有向量,則會遇到比較棘手的問題 。比如:                         在給定圓錐體、立方體和攝像
機位置的前提下,怎樣才能獲得反射影像的準確位置,它的顏色和形狀又如何?        在圖形學中,我們可以使用兩大基本工具去解決相關的問題:向量分析                  圖形變換        通過使用這些工具,我們可以把相關的幾何方法轉換成數字去描述 。2 、向量的一些相關的基礎知識從幾何的角度看,向量是具有長度和方向的實體,但是沒有位置 。而點是隻有位置,沒有長度和方向 。在幾何中把向量看成從一個點到另一個點的位移。向量算法提供了一種統一的方法來對幾何思想進行代數的表示 。其次:我們所使用的所有點和向量都是基於某一座標系定義的 。
  • 向量的表示
                  
從P點到Q點的位移用向量v = (3, -2)表示 ,v是從點P到點Q的向量。兩個點的差是一個向量:V = Q - P 。或者說是 點Q是由點P平移向量v得到的;或者說v 偏移(offset) P得到Q 。Q = P + V 。可以把向量表示成它所有分量的列表,一個n維向量就是一個n元組:
  • 向量基本運算
 向量相加          標量(實數)與向量的數乘        如果 a 和 b 是兩個向量, s是一個標量, 則 a+b 和 sa 都是有意義的 。向量的加(減)法可以採用“平行四邊形法則”
  • 向量線性組合
掌握了向量的加法和數乘,就可以定義任意多個向量的線性組合 。m個向量v1,v2,...,vm的線性組合具有如下形式的向量: 
                有兩種特殊的線性組合在計算機圖形學中很重要 :                        仿射組合      凸組合仿射組合:如果線性組合的係數a1,a2,...,am的和等於1,那麼它就是仿射組合。                    向量的凸組合 : 凸組合在數學中具有重要的位置,在圖形學中也有很多應用。凸組合是對仿射組合加以更多的限制得來的 。             
  • 向量的點積和叉積
點積得到一個標量,叉積產生一個新的向量向量的點積               也就是說,計算點積時,只需將兩個向量相應的分量相乘,然後將結果相加即可 。                  點積最重要的應用就是計算兩個向量的夾角,或者兩條直線的夾角 。

         

由於兩個向量的點積和它們之間夾角的餘弦成正比,可以得出以下關於兩個非零向量夾角與點積的關係:               向量的叉積兩個向量的叉積是另一個三維向量。叉積只對三維向量有意義。它有許多有用的屬性,但最常用的一個是它與原來的兩個向量都正交。            兩個向量的叉積a×b是另一個向量,但是這個向量與原來的兩個向量在幾何上有什麼關係 ?
  • a×b和a、 b兩個向量都正交
  • a×b的長度等於由a和b決定的平行四邊形面積

利用叉積求平面的法向量 ,法向量是空間解析幾何的一個概念,垂直於平面的直線所 表示的向量為該平面的法向量 。                                將向量分析應用到幾何場景處理中是值得研究的內容,把一個場景中眾多向量的各種屬性蒐集起來,並將它們與在圖形學中遇到的實際幾何問題相結合,尋找出一個解決方案,將是非常有用的 。二、圖形座標系圖形學中,有兩大基本工具: 向量分析   、 圖形變換1、座標系簡述座標系是建立圖形與數之間對應聯絡的參考系從維度上看,可分為一維、二維、三維座標系 。從座標軸之間的空間關係來看,可分為直角座標系、極座標系、圓柱座標系、球座標系等 。在計算機圖形學中,從物體(場景)的建模,到在不同顯示裝置上顯示、處理圖形時同樣使用一系列的座標系 。對一個給定的問題,並不總是按畫素座標來考慮 。顯然,希望將程式中用於描述物件幾何資訊的數值,和那些用於表示物件中大小和位置的數值區分開來 。前者通常被看作一個建模(modeling)的任務,後者是一個觀察(viewing)的任務。圖形顯示的過程就是幾何(物件)模型在不同座標系之間的對映變換 。2、圖形學中座標系的分類
  • 世界座標系
    • 程式設計師可以用最適合他們手中問題的座標系來描述物件,並且可以自動的縮放和平移圖形,使得其能正確地在螢幕視窗中顯示這個描述物件的空間被稱為世界座標系,即場景中物體在實際世界中的座標 。世界座標系是一個公共座標系,是現實中物體或場景的統一參照系,計算機圖形系統中涉及的其它坐 z標系都是參照它進行定義的 。
  • 建模座標系
    • 又稱為區域性座標系。每個物體(物件)有它自己的區域性中心和座標系。建模座標系獨立於世界座標系來定義物體的幾何特性 。
    • 一旦定義了“區域性” 物體,就可以很容易地將“區域性” 物體放入世界座標系內,使它由區域性上升為全域性座標系 
  • 觀察座標系
    • 觀察座標系主要用於從觀察者的角度對整個世界座標系內的物件進行重新定位和描述 。依據觀察視窗的方向和形狀在世界座標系中定義的座標系稱為觀察座標系。觀察座標系用於指定圖形的輸出範圍 。
    • 二維觀察變換的一般方法是在世界座標系中指定一個觀察座標系統,以該系統為參考通過選定方向和位置來制定矩形剪裁視窗 。
                                 
  • 裝置座標系
    • 適合特定輸出裝置輸出物件的座標系。比如螢幕座標系在多數情況下,對於每一個具體的顯示裝置,都有一個單獨的座標系統 。注意:裝置座標是整數 。
  • 規範化座標系
    • 規範化座標系獨立於裝置,能容易地轉變為裝置座標系,是一箇中間座標系。為使圖形軟體能在不同的裝置之間移植,採用規範化坐標,座標軸取值範圍是0 - 1 。
                          
  • 要想建立觀察座標系,需要已知三個要素:
    • 觀察點的位置
    • 觀察的方向
    • 世界座標系的上向量
  • 觀察座標系通常以視點的位置為原點,由視點的位置和觀察的方向即可確定Z軸 。
  • 確定與X軸垂直的平面,世界座標系的上向量在該平面上的投影即Y軸;由Z軸和Y軸,通過左手定則即可確定X軸 。
三、二維圖形變換        圖形變換和觀察是計算機圖形學的基礎內容之一,也是圖形顯示過程中不可缺少的一個環節 。一個簡單的圖形, 通過各種變換(如:比例、 旋轉、 鏡象、 錯切、 平移等) 可以形成一個豐富多彩的圖形或圖案 。圖形變換的用途:
  • 由一個基本的圖案, 經過變換組合成另外一個復雜圖形 。
  • 用很少的物體組成一個場景
  • 可以通過圖形變換組合得到動畫效果 。在計算機動畫中, 經常有幾個物體之間的相對運動, 可以通過平移和旋轉這些物體的區域性座標系得到這種動畫效果 。
          圖形變換的基本原理:
  • 圖形變化了 ,但原圖形的連邊規則沒有改變 。
  • 圖形的變化, 是因為頂點位置的改變決定的
                                          變換圖形就是要變換圖形的幾何關係,即改變頂點的座標;同時,保持圖形的原拓撲關係不變 。       
  • 仿射變換(Affine Transformation或 Affine Map) 是一種二維座標到二維座標之間的線性變換 。
    •  “平直性” 。 即:直線經過變換之後依然是直線
    • 平行性” 。 即:平行線依然是平行線, 且直線上點的位置順序不變)   
稱為二維仿射變換(affine transformation ),其中座標x’ 和y’ 都是原始座標x和y的線性函式 。引數a, b, c, d, m和n是函式的係數  。 在幾何中把向量看成從一個點到另一個點的位移。向量演算法提供了一種統一的方法來對幾何思想進行代數的表示 。齊次座標在二維平面內,我們是用一對座標值(x,y) 來表示一個點在平面內的確切位置,或著說是用一個向量(x,y) 來標定一個點的位置 。 假如變換前的點座標為(x,y) ,變換後的點座標為(x*,y*) ,這個變換過程可以寫成如下矩陣形式 :            
上兩式是完全等價的。對於向量(x,y,1) ,可以在幾何意義上理解為是在第三維為常數的平面上的一個二維向量。這種用三維向量表示二維向量,或者一般而言,用一個n+1維的向量表示一個n維向量的方法稱為齊次座標表示法 。n維向量的變換是在n+1維的空間進行的,變換後的n維結果是被反投回到感興趣的特定的維空間內而得到的。如n維向量(P1,P2,...,Pn)表示為(hp1,hp2,...,hpn, h ),其中h稱為啞座標 。
  •  普通座標與齊次座標的關係為“一對多”
    • 普通座標×h → 齊次座標
    • 齊次座標÷h → 普通座標
當h = 1時產生的齊次座標稱為“規格化座標” ,因為前n個座標就是普通座標系下的n維座標 .
  • 為什麼要採用齊次座標?
    • 在笛卡兒座標系內,向量(x,y) 是位於z=0的平面上的點;而向量(x,y,1) 是位於z=1的等高平面上的點 。
    • 對於圖形來說,沒有實質性的差別,但是卻給後面矩陣運算提供了可行性和方便性 。  
    • 採用了齊次座標表示法,就可以統一地把二維線形變換表示如下式所示的規格化形式 :
            對於一個圖形,可以用頂點表來描述圖形的幾何關係,用連邊表來描述圖形的拓撲關係。所以對圖形的變換,最後是隻要變換圖形的頂點表 。四、基本幾何變換圖形的幾何變換是指對圖形的幾何資訊經過平移、比例、旋轉等變換後產生新的圖形 。                       
  • 平移變換 
    • 平移是指將p點沿直線路徑從一個座標位置移到另一個座標位置的重定位過程 。
    • 即新的座標分別在x方向和y方向增加了一個增量和,使得:
                                             平移是一種不產生變形而移動物體的剛體變換,即物體上的每個點移動相同數量的座標 。
  • 比例變換 
    • 比例變換是指對p點相對於座標原點沿x方向放縮 Sx 倍,沿y方向放縮 Sy 倍。其中 Sx 和 Sy 稱為比例係數  。

  • 比例變換的齊次座標計算形式如下:
               縮放係數Sx和Sy可賦予任何正整數。值小於1縮小物體的尺寸,值大於1則放大物體,都指定為1,物體尺寸就不會改變 。
當Sx=Sy時,變換成為整體比例變換,用以下矩陣進行計算 :
整體比例變換時,若S>1, 圖形整體縮小;若0<S<1, 圖形整體放大;若S<0, 發生關於原點的對稱等比變換 。
  •  對稱變換 
    • 對稱變換也稱為反射變換或映象變換,變換後的圖形是原圖形關於某一軸線或原點的映象 。

  • 關於X軸對稱
    • 點P經過關於X軸的對稱變換後形成點P*, 則x*=x且y*=-y, 寫成齊次座標的計算形式為 :

  • 關於y軸對稱
    • 點P經過關於X軸的對稱變換後形成點P*, 則x*=-x且y*=y, 寫成齊次座標的計算形式為 :

  • 旋轉變換 
    • 二維旋轉是指將P點繞座標原點轉動某個角度θ(逆時針為正,順時針為負)得到新的點P*的重定位過程  。
    • 首先確定當基準點為座標原點時,點位置P旋轉的變換方程 。
                                   
  • 應用標準三角特性,利用角度α和θ將轉換後的座標表示為:


  • 二維圖形繞原點逆時針旋轉θ角的齊次座標計算形式可寫為:

  • 繞原點順 時針旋轉θ角的齊次座標計算形式可寫為:
  
  • 錯切變換 
    • 在圖形學的應用中,有時需要產生彈性物體的變形處理,這就要用到錯切變換 。

  • 變換矩陣中的非對角線元素大都為零,若變換矩陣中的非對角元素不為0,則意味著x,y同時對圖形的變換起作用。也就是說,變換矩陣中非對角線元素起著把圖形沿x方向或y方向錯切的作用  。

  • x值或y值越小,錯切量越小; x值或y值越大,錯切量越大。其變換矩陣為 :

                                                                         
  • 複合變換
          複合變換是指圖形作一次以上的幾何變換,變換結果是每次的變換矩陣相乘 ,從另一方面看,任何一個複雜的幾何變換都可以看作基本幾何變換的組合形式。                                         
  • 二維複合平移 
    • p點經過兩次連續平移後,其變換矩陣可寫為:

  • 二維複合比例平移 
    • p點經過兩個連續比例變換後,其變換矩陣可寫為:

    • 結果矩陣表明連續比例變換是相乘的
  • 二維複合旋轉 
    • p點經過兩個連續旋轉變換後,其變換矩陣可寫為:

    • 在進行復合變換時,需要注意的是矩陣相乘的順序由於矩陣乘法不滿足交換率,因此通常T1 * T2≠T2 * T1,即矩陣相乘的順序不可交換。  
  • 座標系之間的變換
    • 圖形變換經常需要從一個座標系變換到另一個座標系 , 如下例子所示 :
    • 例:下圖顯示了兩個笛卡兒座標系xOy和x’O’y’ , 而O’ 點在xOy座標系的(X0 y0) 處 。 為了將p(xpyp) 點從xOy座標系變換到x’O’y’ 座標系,如何進行計算?  需建立變換使x’O’y’ 座標系與xOy座標系重合  
                                
  • 可以分兩步來進行:
    • 將x’O’y’ 座標系的原點平移至xOy座標系的原點—平移變換
    • 將x’ 軸旋轉到x軸上—旋轉變換

  • 相對任意參考點的二維幾何變換 
    • 比例、旋轉變換等均與參考點相關。如要對某個參考點(xfyf) 作二維幾何變換,其變換過程如下:
      • 將固定點移至座標原點,此時進行平移變換
      • 針對原點進行二維幾何變換
      • 進行反平移,將固定點又移回到原來的位置
五、二維變換矩陣二維空間中某點的變化可以表示成點的齊次座標與3階的二維變換矩陣T2d相乘,即:                 
                                               
  • 二維圖形幾何變換的計算
    • 幾何變換均可表示成: P*=P·T的形式,其中, P為變換前二維圖形的規範化齊次座標, P*為變換後的規範化齊次座標 , T為變換矩陣。
    • 點的變換
                                                  
  • 直線的變換  : 直線的變換可以通過對直線兩端點進行變換,從而改變直線的位置和方向 。  

  • 多邊形的變換  : 多邊形變換是將變換矩陣作用到每個頂點的座標位置,並按新的頂點座標值和當前屬性設定來生成新的多邊形  。

六、視窗、視區及變換1、視窗和視區世界座標系中要顯示的區域(通常在觀察座標系內定義)稱為 視窗 視窗對映到顯示器(裝置)上的區域稱為視區視窗定義顯示什麼;視區定義在何處顯示 。
          世界座標系中的一個視窗可以對應於多個視區  。為了將視窗內的圖形在視區中顯示出來 ,必須經過將視窗到視區的變換處理,這種變換就是觀察變換 (Viewing Transformation) 。2、觀察變換
  • 變焦距效果

當視窗變小時,由於視區大小不變,就可以放大圖形物件的某一部分,從而觀察到在較大的視窗時未顯示出的細節 。 而當視窗變大,視區不變時, 這時就就類似於照相機的變焦處理 。
  • 整體縮放效果 
    • 當視窗大小不變而視區大小發生變化時,得到整體放縮效果。這種放縮不改變觀察物件的內容 。

如果把一個固定大小的視窗在一幅大圖形上移動,視區不變,就會產生漫遊效果 。
  • 視窗到視區的變換
    • 為了全部、如實地在視區中顯示出視窗內的圖形物件,就必須求出圖形在視窗和視區間的對映關係需要根據使用者所定義的引數,找到視窗和視區之間的座標對應關係  。

  • 這個對映是“保持比例”的對映,保持比例的性質使得這個對映有線性形式:
               
                    其中A、 B、 C、 D是常數                                                      
                               七、二維幾何變換小結          這裡主要複習一下向量的基本知識、座標系的分類、齊次座標、二維變換等、視窗與視區等知識 。 1 、向量基本知識           為了處理二維、三維圖形 ,引入了向量這一分析計算工具 。主要講解了向量的定義、基本運算、線性組合、叉積、點積等知識 。2、座標系的分類           座標系是建立圖形與數之間對應聯絡的參考系 ,在計算機圖形學中,從物體(場景)的建模,到在不同顯示裝置上顯示,需要使用一系列不同的座標系 。
  •  世界座標系:是一個公共座標系,是現實中物體或場 景的統一參照系  。
  • 區域性座標系:又稱為區域性座標系。每個物體(物件)有它自己的區域性中心和座標系 。 
  • 除此之外, 還有觀察座標系、裝置座標系、規格化座標系等 。 
3、 二維圖形幾何變換           圖形變換和觀察是計算機圖形學的基礎內容之一,也是圖形顯示過程中不可缺少的一個環節 。
  • 齊次座標
    • 用一個n+1維的向量表示一個n維向量的方法稱為齊次座標表示法。對於圖形來說,沒有實質性的差別,但是卻給後面矩陣運算提供了可行性和方便性 。
  • 二維幾何變換 
  • 物體變換和座標變換 
    • 有兩種方式去看待一個變換:一種是物體變換,另一種是座標變換。物體變換使用同一個規則改變物體上所有的點,但是保證底層座標系不變 。
      座標變換按照原座標系統定義了一個全新的座標系統,然後在新座標系下表示物體上所有的點 。
      兩種變換緊密聯絡,各有各的長處 。
  • 複合座標
    • 也稱組合變換。實際應用中很少只需要單一的基本變換,通常要構造一個幾種基本變換的組合變換 。
      組合變換的變換矩陣是幾個單獨變換矩陣的乘積 。
      由於矩陣乘法不滿足交換率,因此在進行復合變換時,需要注意的是矩陣相乘的順序 。

4、 視窗視區及變換
  • 視窗
    • 世界座標系中要顯示的區域稱為視窗  。
  • 視區
    • 視窗對映到顯示器(裝置)上的區域稱為視區 。
  • 視窗到視區的變換
    • 為了全部、如實地在視區中顯示出視窗內的圖形物件,就必須求出圖形在視窗和視區間的對映關係 。