計算機圖形學(xué)_第七章_幾何變換_第1頁
計算機圖形學(xué)_第七章_幾何變換_第2頁
計算機圖形學(xué)_第七章_幾何變換_第3頁
計算機圖形學(xué)_第七章_幾何變換_第4頁
計算機圖形學(xué)_第七章_幾何變換_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Lecture 7幾何變換幾何變換 概述概述在計算機圖形學(xué)中,通常需要將畫出的圖形平移到某一在計算機圖形學(xué)中,通常需要將畫出的圖形平移到某一位置,或改變圖形的大小和形狀,或利用已有圖形生成位置,或改變圖形的大小和形狀,或利用已有圖形生成復(fù)雜圖形,這種圖形處理的過程就是圖形的幾何變換,復(fù)雜圖形,這種圖形處理的過程就是圖形的幾何變換,簡稱圖形變換。簡稱圖形變換。 二維圖形和三維圖形都可以進行圖形變換。圖形變換通二維圖形和三維圖形都可以進行圖形變換。圖形變換通常采用矩陣的方法,圖形所做的變換不同其變換矩陣也常采用矩陣的方法,圖形所做的變換不同其變換矩陣也不同。變換的實質(zhì)是對由圖形上各點的坐標組成的矩

2、陣不同。變換的實質(zhì)是對由圖形上各點的坐標組成的矩陣進行運算,因此在討論各種具體圖形幾何變換時,可以進行運算,因此在討論各種具體圖形幾何變換時,可以歸結(jié)為一個點的變換。歸結(jié)為一個點的變換。 7.1 二維基本變換二維基本變換 二維基本變換包括:二維基本變換包括:平移平移比例比例旋轉(zhuǎn)旋轉(zhuǎn) 7.1.1 平移變換平移變換 平移是一物體從一個位置到另一位置所作的直線移動。平移是一物體從一個位置到另一位置所作的直線移動。如果要把一個位于的點移到新位置時,只要在原坐標上如果要把一個位于的點移到新位置時,只要在原坐標上加上平移距離加上平移距離Tx及及Ty即可即可 平移變換平移變換表示成數(shù)學(xué)形式:表示成數(shù)學(xué)形式:

3、表示成向量形式:表示成向量形式:可以用矩陣相加來表示可以用矩陣相加來表示P點的位移點的位移計為:計為: yxTyyTxxxPy xPyxyTTTxyTxxTyyPPT7.1.2 比例變換比例變換 用來改變一物體大小的變換稱為比例變換(縮放變換)用來改變一物體大小的變換稱為比例變換(縮放變換)。如果要對一個多邊形進行比例變換,那么可把各頂點。如果要對一個多邊形進行比例變換,那么可把各頂點的坐標(的坐標(x,y)均乘以比例因子)均乘以比例因子Sx、Sy,以產(chǎn)生變換后,以產(chǎn)生變換后的坐標(的坐標(x,y) 比例變換比例變換表示成數(shù)學(xué)形式:表示成數(shù)學(xué)形式:如果令如果令 則比例變換可以表示成以下的矩陣形

4、式:則比例變換可以表示成以下的矩陣形式:記為:記為: xyxSxySy 00 xySSS00 xySxxSyy PS P7.1.3 旋轉(zhuǎn)變換旋轉(zhuǎn)變換 物體上的各點繞一固定點沿圓周路徑作轉(zhuǎn)動稱為旋轉(zhuǎn)變物體上的各點繞一固定點沿圓周路徑作轉(zhuǎn)動稱為旋轉(zhuǎn)變換。我們可用旋轉(zhuǎn)角表示旋轉(zhuǎn)量的大小。換。我們可用旋轉(zhuǎn)角表示旋轉(zhuǎn)量的大小。一個點由位置(一個點由位置(x、y)旋轉(zhuǎn)到()旋轉(zhuǎn)到(xy)如下圖所示,)如下圖所示,為為旋轉(zhuǎn)角旋轉(zhuǎn)角 。 旋轉(zhuǎn)變換旋轉(zhuǎn)變換由圖可得到如下三角關(guān)系式:由圖可得到如下三角關(guān)系式:則相對于坐標原點的旋轉(zhuǎn)變換公式如下:則相對于坐標原點的旋轉(zhuǎn)變換公式如下: os()cos cossinsi

5、ncossinxrcrrxysin()cos sinsincossincosyrrrxycossincossinxxyyyx旋轉(zhuǎn)變換旋轉(zhuǎn)變換如果令如果令 則有則有 記為記為 sinsincoscosRcossinsincosxxyy cossincossinxxyyyxPR P7.2 二維幾何變換的齊次坐標表示二維幾何變換的齊次坐標表示 可以看出,平移變換的處理方法與其他兩種變換的形可以看出,平移變換的處理方法與其他兩種變換的形式不一樣,但我們希望能夠用一種一致的或同類的方法式不一樣,但我們希望能夠用一種一致的或同類的方法來處理這三種變換,使得這三種基本變換能很容易地結(jié)來處理這三種變換,使得這

6、三種基本變換能很容易地結(jié)合在一起,形成各種復(fù)雜的組合變換。為了解決這個問合在一起,形成各種復(fù)雜的組合變換。為了解決這個問題,引入齊次坐標這一概念。題,引入齊次坐標這一概念。 基本思想基本思想:把一個把一個n維空間的幾何問題維空間的幾何問題, 轉(zhuǎn)換到轉(zhuǎn)換到n+1維空間維空間中去解決。即用一個有中去解決。即用一個有n+1個分量的向量去表示一個有個分量的向量去表示一個有n個分量的向量。個分量的向量。 進一步分析知,平移變換是對常數(shù)項的變換,而比例進一步分析知,平移變換是對常數(shù)項的變換,而比例和旋轉(zhuǎn)則是對和旋轉(zhuǎn)則是對x和和y項的變換。項的變換。二維幾何變換的齊次坐標表示二維幾何變換的齊次坐標表示如果我

7、們既要對常數(shù)項進行變換,也要對如果我們既要對常數(shù)項進行變換,也要對x和和y項進行變項進行變換,我們進行如何的處理呢?換,我們進行如何的處理呢?觀察如下的表達式:觀察如下的表達式:則有:則有:x=a1x+ a2y+ a3c y=b1x+ b2y+ b3c c=c1x+ c2y+ c3ccyxcccbbbaaacyx321321321二維幾何變換的齊次坐標表示二維幾何變換的齊次坐標表示如果我們令:如果我們令: a1=1,a2=0,a3=Tx b1=0,b2=1,b3=Ty c1=0,c2=0,c3=1,c=1則有:則有:x=x+ Tx y=y+ Ty 1=1上兩式正好是坐標的平移變換。上兩式正好是

8、坐標的平移變換。二維幾何變換的齊次坐標表示二維幾何變換的齊次坐標表示使用這種表示方法,坐標的平移變換可以表示為:使用這種表示方法,坐標的平移變換可以表示為:平移變換的矩陣形式縮寫:平移變換的矩陣形式縮寫: 這樣,我們就把矩陣的加法運算轉(zhuǎn)化為矩陣的乘法運算這樣,我們就把矩陣的加法運算轉(zhuǎn)化為矩陣的乘法運算,我們使用的這種表達坐標的方法就叫,我們使用的這種表達坐標的方法就叫齊次坐標表示齊次坐標表示。(x,y)表達為表達為(hx,hy,h),當當h=1時稱為時稱為規(guī)格化齊次坐標規(guī)格化齊次坐標。100110011xyxTxyTy (, )xyPT TTP二維幾何變換的齊次坐標表示二維幾何變換的齊次坐標表

9、示使用使用規(guī)格化齊次坐標,我們可以表示另外兩種變換:規(guī)格化齊次坐標,我們可以表示另外兩種變換:比例比例變換的矩陣形式變換的矩陣形式 :縮寫為縮寫為 :旋轉(zhuǎn)旋轉(zhuǎn)變換的矩陣形式變換的矩陣形式 :縮寫為縮寫為 :000010011xyxSxySy ()xyPS SSP,cos-sin0sincos010011xxyy ( )PRP7.2.3 其他變換其他變換 反射變換反射變換 :反射是用來產(chǎn)生物體的鏡象的一種變換。物反射是用來產(chǎn)生物體的鏡象的一種變換。物體的鏡象一般是相對于一對稱軸生成的體的鏡象一般是相對于一對稱軸生成的 。關(guān)于關(guān)于x軸對稱變換軸對稱變換 關(guān)于關(guān)于y軸對稱變換軸對稱變換 關(guān)于坐標原點

10、的對稱變換關(guān)于坐標原點的對稱變換 關(guān)于關(guān)于x軸對稱變換軸對稱變換 關(guān)于關(guān)于x軸的對稱變換,是一種特殊形式的縮放變換,其中軸的對稱變換,是一種特殊形式的縮放變換,其中,Sx=1,Sy= -1,如圖所示,其變換矩陣為:,如圖所示,其變換矩陣為: 100010001xRF關(guān)于關(guān)于y軸對稱變換軸對稱變換 關(guān)于關(guān)于y軸的對稱變換,是一種特殊形式的縮放變換,其中軸的對稱變換,是一種特殊形式的縮放變換,其中,Sx=-1,Sy=1,如圖所示,其變換矩陣為:,如圖所示,其變換矩陣為: 100010001yRF關(guān)于坐標原點的對稱變換關(guān)于坐標原點的對稱變換 關(guān)于關(guān)于y軸對稱變換,是一種特殊形式的縮放變換,其中,軸對

11、稱變換,是一種特殊形式的縮放變換,其中,Sx=-1,Sy= -1,如圖所示,其變換矩陣為:,如圖所示,其變換矩陣為: 100010001ORF錯切變換錯切變換 這種變換可使物體產(chǎn)生變形,即物體產(chǎn)生扭轉(zhuǎn)或稱為錯這種變換可使物體產(chǎn)生變形,即物體產(chǎn)生扭轉(zhuǎn)或稱為錯切。常用的兩種錯切變換是沿切。常用的兩種錯切變換是沿x向或沿向或沿y向錯切變換。向錯切變換。沿沿x方向關(guān)于方向關(guān)于y軸的錯切軸的錯切 沿沿y方向關(guān)于方向關(guān)于x軸的錯切軸的錯切 沿沿x方向關(guān)于方向關(guān)于y軸的錯切軸的錯切 在下圖中,對矩形在下圖中,對矩形ABCD沿沿x軸方向進行錯切變換,得到軸方向進行錯切變換,得到矩形矩形ABCD。錯切的角度為。

12、錯切的角度為,令,令shx=tan假定點假定點(x, y)經(jīng)錯切變換后變?yōu)椋ń?jīng)錯切變換后變?yōu)椋▁, y),由下圖可知:),由下圖可知:從而沿從而沿x方向關(guān)于方向關(guān)于y軸的錯切軸的錯切的變換矩陣為:的變換矩陣為: xxxy shyy10()010001xyxshSHsh沿沿y方向關(guān)于方向關(guān)于x軸的錯切軸的錯切 在下圖中,對矩形在下圖中,對矩形ABCD沿沿y軸方向進行錯切變換,得到軸方向進行錯切變換,得到矩形矩形ABCD。錯切的角度為。錯切的角度為,令,令shy=tan,假定點,假定點(x, y)經(jīng)錯切變換后變?yōu)椋ń?jīng)錯切變換后變?yōu)椋▁, y),由下圖可知),由下圖可知:從而沿從而沿y方向關(guān)于方向關(guān)

13、于x軸的錯切軸的錯切的變換矩陣為:的變換矩陣為: yxxyyx sh100()10001xyySHshsh7.2.4 二維幾何變換的一般形式二維幾何變換的一般形式 設(shè)圖形上一點的坐標為設(shè)圖形上一點的坐標為P(x,y),經(jīng)過二維幾何變換后的坐標為,經(jīng)過二維幾何變換后的坐標為P(x, y),變換矩陣一般可寫為:,變換矩陣一般可寫為:即:即:這樣的變換在數(shù)學(xué)上稱為這樣的變換在數(shù)學(xué)上稱為仿射變換仿射變換(Affine Transformation)。前。前面介紹的幾種變換都是仿射變換的特例。面介紹的幾種變換都是仿射變換的特例。 10011xabcxydefy xaxbycydxeyf7.3 組合變換組

14、合變換 任意一個變換序列均可表示為一個組合變換矩陣。組合任意一個變換序列均可表示為一個組合變換矩陣。組合變換矩陣可由基本變換矩陣的乘積求得。由若干基本變變換矩陣可由基本變換矩陣的乘積求得。由若干基本變換矩陣相乘求得組合變換矩陣的方法稱為換矩陣相乘求得組合變換矩陣的方法稱為矩陣的級聯(lián)矩陣的級聯(lián)。 單個基本變換的組合變換單個基本變換的組合變換 多個基本變換的組合變換多個基本變換的組合變換 7.3.1 單個基本變換的組合變換單個基本變換的組合變換 組合平移變換組合平移變換 對一物體連續(xù)平移兩次,假定兩次平移的距離為(對一物體連續(xù)平移兩次,假定兩次平移的距離為(Tx1,Ty1)及()及(Tx2,Ty2

15、),則),則由此可計算出組合矩陣為:由此可計算出組合矩陣為:上式表明,進行連續(xù)兩次平移,實際上是把平移距離相上式表明,進行連續(xù)兩次平移,實際上是把平移距離相加,即加,即 22112211(,) (,) (,)(,)xyxyxyxyPT TTT TTPT TTT TTP21122112101010010101001001001xxxxyyyyTTTTTTTT22111212(, )(, )(, )xyxyxxyyT TTT TTT TTTT1212(,)xxyyPT TTTTP組合比例變換組合比例變換 作用于點作用于點P的兩次連續(xù)的比例變換的變換矩陣為:的兩次連續(xù)的比例變換的變換矩陣為:即:即:

16、連續(xù)進行兩次比例變換,實際上是把相應(yīng)的比例因子相連續(xù)進行兩次比例變換,實際上是把相應(yīng)的比例因子相乘。乘。 21122112000000000000001001001xxxxyyyySSSSSSSS 22111212(, )(, )(, )xyxyxxyyS SSS SSS SSSS組合旋轉(zhuǎn)變換組合旋轉(zhuǎn)變換 連續(xù)兩次旋轉(zhuǎn)的組合變換矩陣可用下式表示連續(xù)兩次旋轉(zhuǎn)的組合變換矩陣可用下式表示與組合平移的情況相似,連續(xù)旋轉(zhuǎn)實際上是把旋轉(zhuǎn)角相與組合平移的情況相似,連續(xù)旋轉(zhuǎn)實際上是把旋轉(zhuǎn)角相加。加。 2112()()()RRR7.3.2 多個基本變換的組合變換多個基本變換的組合變換 相對于任一固定點的比例變換

17、相對于任一固定點的比例變換 首先把圖形及固定點一起平移,使固定點移到坐標原點上;然后把圖形首先把圖形及固定點一起平移,使固定點移到坐標原點上;然后把圖形相對于原點進行比例變換;最后把圖形及固定點一起平移,使固定點又相對于原點進行比例變換;最后把圖形及固定點一起平移,使固定點又回到原來位置?;氐皆瓉砦恢?。 相對于任一固定點的比例變換相對于任一固定點的比例變換此變換序列可表示為:此變換序列可表示為:其中變換矩陣為:其中變換矩陣為: (,)AxyPSSSP(,)(,)(,)(,)1000100100010010010010(1)0(1)001AxyAAxyAAAxAAyAxAxyAySS ST xy

18、S S STxyxSxySySxSSyS OPENGL程序中的變換順序程序中的變換順序glMatrixMode(GL_MODELVIEW); /指定當前操作矩陣類型指定當前操作矩陣類型glLoadIdentity(); /設(shè)置當前操作矩陣為單位矩陣設(shè)置當前操作矩陣為單位矩陣glMultMatrix(TT(XA,YA); /用當前矩陣乘以函數(shù)所提供矩陣用當前矩陣乘以函數(shù)所提供矩陣glMultMatrix(TS(Sx,Sy); glMultMatrix(TT(-XA,-YA);glBegin(GL_POINTS); glVertex3f(x,y,x);glEnd();圍繞任一基準點的旋轉(zhuǎn)變換圍繞任

19、一基準點的旋轉(zhuǎn)變換 下圖所示的為圍繞任一基準點下圖所示的為圍繞任一基準點A(xA,yA)旋轉(zhuǎn)時,由一變換序列得到一)旋轉(zhuǎn)時,由一變換序列得到一組合矩陣的過程。首先,把物體平移,使基準點與坐標原點重合,然后組合矩陣的過程。首先,把物體平移,使基準點與坐標原點重合,然后,把物體繞原點旋轉(zhuǎn),最后,把物體平移,使基準點回到原來位置。,把物體繞原點旋轉(zhuǎn),最后,把物體平移,使基準點回到原來位置。圍繞任一基準點的旋轉(zhuǎn)變換圍繞任一基準點的旋轉(zhuǎn)變換此變換序列可以用以下矩陣的乘積表示:此變換序列可以用以下矩陣的乘積表示: ( )( ,)( )(,)1 0cossin0 1 00 1sincos0 0 10 010

20、01 0 01cossin(1 cos )sinsincos(1 cos )sin001AAAAAAAAAAAAART x yRTxyxxyyxyyx 關(guān)于任意軸的對稱變換關(guān)于任意軸的對稱變換 以任一直線以任一直線l為對稱軸的對稱變換可以用變換合成的方法按如下步驟建立為對稱軸的對稱變換可以用變換合成的方法按如下步驟建立。平移使平移使l過坐標原點,記變換為過坐標原點,記變換為T1,圖形,圖形A被變換到被變換到A1。旋轉(zhuǎn)旋轉(zhuǎn)角,使角,使l和和ox軸重合,記變換為軸重合,記變換為R1,圖形,圖形Al被變換到被變換到A2。求圖形求圖形A關(guān)于關(guān)于x軸的對稱圖形軸的對稱圖形A3,記變換為,記變換為RFx。

21、旋轉(zhuǎn)旋轉(zhuǎn)-角,記變換為角,記變換為R2,圖形,圖形A3被變換到被變換到A4。 平移使平移使l回到其原先的位置,記變換為回到其原先的位置,記變換為T2,圖形,圖形A4被變換到被變換到As。As即為即為A關(guān)于關(guān)于l的對稱圖形。的對稱圖形??偟淖儞Q為:總的變換為: 2211xT RRF R T變換矩陣的級聯(lián)特性變換矩陣的級聯(lián)特性 矩陣相乘是符合結(jié)合律的,即在求矩陣相乘是符合結(jié)合律的,即在求A、B、C三個矩陣的三個矩陣的積時,可以先把積時,可以先把A及及B相乘,也可以先把相乘,也可以先把B及及C相乘,即相乘,即但矩陣相乘是不符合交換律的,即一般矩陣積但矩陣相乘是不符合交換律的,即一般矩陣積AB與與BA

22、不相等。這樣,如果我們要對一物體進行平移及旋轉(zhuǎn)變不相等。這樣,如果我們要對一物體進行平移及旋轉(zhuǎn)變換,則要特別注意矩陣級聯(lián)的次序。采用不同的變換次換,則要特別注意矩陣級聯(lián)的次序。采用不同的變換次序,其最后結(jié)果是不一樣的。序,其最后結(jié)果是不一樣的。)()(CBACBACBA7.4 三維幾何變換三維幾何變換 三維圖形的平移,三維圖形的平移,比例及旋轉(zhuǎn)比例及旋轉(zhuǎn)變換是對二維變換的擴展變換是對二維變換的擴展 三維三維旋轉(zhuǎn)旋轉(zhuǎn)一般不能直接由二維變換擴展得到,因為三維一般不能直接由二維變換擴展得到,因為三維旋轉(zhuǎn)可圍繞空間任何方位的軸進行。旋轉(zhuǎn)可圍繞空間任何方位的軸進行。三維幾何變換方程也可以用變換矩陣表示。

23、任何一個變?nèi)S幾何變換方程也可以用變換矩陣表示。任何一個變換序列均可用一個矩陣表示,此矩陣是把序列中的各個換序列均可用一個矩陣表示,此矩陣是把序列中的各個矩陣級聯(lián)到一起而得到的矩陣級聯(lián)到一起而得到的 .對于三維空間點需要用對于三維空間點需要用4個數(shù)來表示,而相應(yīng)的變換矩個數(shù)來表示,而相應(yīng)的變換矩陣是陣是44階矩陣。階矩陣。 7.4.1 三維坐標系的建立三維坐標系的建立 右手坐標系右手坐標系 :伸出右手,當用大姆指指向伸出右手,當用大姆指指向x軸的正方向,食指指向軸的正方向,食指指向y軸的正軸的正方向,則與手心垂直的中指方向就是方向,則與手心垂直的中指方向就是z軸正向。在計算機圖形學(xué)中,兩種軸正

24、向。在計算機圖形學(xué)中,兩種坐標系都可以使用。坐標系都可以使用。右手坐標系為大多數(shù)人所熟悉,因此在討論圖形的數(shù)學(xué)問題時常使用右右手坐標系為大多數(shù)人所熟悉,因此在討論圖形的數(shù)學(xué)問題時常使用右手坐標系。本課程中沒有指明時,均指右手坐標系。手坐標系。本課程中沒有指明時,均指右手坐標系。 7.4.2 三維圖形幾何變換三維圖形幾何變換 三維幾何變換也可利用齊次坐標的概念,變換可以用一三維幾何變換也可利用齊次坐標的概念,變換可以用一個個44的變換矩陣來表示。設(shè)三維空間中的點的變換矩陣來表示。設(shè)三維空間中的點P(x,y,z),其規(guī)格化齊次坐標為其規(guī)格化齊次坐標為(x,y,z,1) 。若變換矩陣為若變換矩陣為T

25、,T為為44的矩陣,則變換后的點的矩陣,則變換后的點P=TP。 平移變換平移變換 在用三維齊次坐標表示時,把一個點由位置(在用三維齊次坐標表示時,把一個點由位置(x,y,z)平移至位置(平移至位置(x,y,z)可用以下矩陣運算實現(xiàn):)可用以下矩陣運算實現(xiàn):所示的矩陣表達式與以下三式等效:所示的矩陣表達式與以下三式等效:100010001100011xyzxTxyTyzTz xyzx = x+Ty = y+Tz = z+T比例變換比例變換 設(shè)空間一點設(shè)空間一點P(x,y,z)以原點為中心,在三根軸上分)以原點為中心,在三根軸上分別放大或縮小別放大或縮小Sx、Sy,Sz倍,變換矩陣為:倍,變換矩陣

26、為: 000000(,)0000001xxyyxyzzzSSS S S SS旋轉(zhuǎn)變換旋轉(zhuǎn)變換 三維空間的旋轉(zhuǎn):三維空間的旋轉(zhuǎn):繞繞x軸的旋轉(zhuǎn)軸的旋轉(zhuǎn) 繞繞y軸的旋轉(zhuǎn)軸的旋轉(zhuǎn) 繞繞z軸的旋轉(zhuǎn)軸的旋轉(zhuǎn) 繞空間一條任意軸的旋轉(zhuǎn)繞空間一條任意軸的旋轉(zhuǎn) 繞繞x軸的旋轉(zhuǎn)軸的旋轉(zhuǎn) 當點當點P (x,y,z)繞繞x軸旋轉(zhuǎn)軸旋轉(zhuǎn)角到角到P (x,y,z )時,點的時,點的x坐標值不變坐標值不變 ,則有:則有:變換矩陣為:變換矩陣為: cossinsincosxxyyzzyz 10000cossin0( )0sincos00001xR繞繞y軸的旋轉(zhuǎn)軸的旋轉(zhuǎn) 當點當點P (x,y,z)繞繞y軸旋轉(zhuǎn)軸旋轉(zhuǎn)角到角到P

27、(x,y,z )時,點的時,點的y坐標值不變坐標值不變 ,則有:,則有:變換矩陣為:變換矩陣為:cossinsincosxxzyyzxz cos0sin00100( )sin0cos00001yR繞繞z軸的旋轉(zhuǎn)軸的旋轉(zhuǎn) 當點當點P (x,y,z)繞繞y軸旋轉(zhuǎn)軸旋轉(zhuǎn)角到角到P (x,y,z )時,點的時,點的z坐標值不變坐標值不變 ,則有:,則有:變換矩陣為:變換矩陣為:cossinsincosxxyyxyzz cossin0 0sincos0 0( )0010000 1zR反射變換反射變換 如果要對于如果要對于x y平面進行變換,此變換實際上是改變平面進行變換,此變換實際上是改變z坐標坐標的符

28、號而保持的符號而保持x、y坐標不變,一點相對于坐標不變,一點相對于x y平面反射變平面反射變換矩陣為:換矩陣為:同樣可定義相對于同樣可定義相對于y z平面或平面或x z平面進行變換的矩陣平面進行變換的矩陣 : 1000010000100001xyRF1000010000100001yzRF1000010000100001zxRF錯切變換錯切變換 三維錯切變換是指對定義一個點的三個坐標值中的兩個三維錯切變換是指對定義一個點的三個坐標值中的兩個進行變換,使三維形體發(fā)生錯切變形的變換進行變換,使三維形體發(fā)生錯切變形的變換 .下面是以下面是以z軸為依賴軸(軸為依賴軸(z值不變)產(chǎn)生三維錯切的變換值不變

29、)產(chǎn)生三維錯切的變換矩陣矩陣 :100010(,)00100001xyzxyshshSHsh sh圍繞任意軸的旋轉(zhuǎn)變換圍繞任意軸的旋轉(zhuǎn)變換在給定旋轉(zhuǎn)軸的特征及旋轉(zhuǎn)角之后,可用以下在給定旋轉(zhuǎn)軸的特征及旋轉(zhuǎn)角之后,可用以下5步完成對步完成對任意軸的旋轉(zhuǎn):任意軸的旋轉(zhuǎn): 平移物體使旋轉(zhuǎn)軸通過坐標原點。平移物體使旋轉(zhuǎn)軸通過坐標原點。旋轉(zhuǎn)物體使旋轉(zhuǎn)軸與某一坐標軸重合。旋轉(zhuǎn)物體使旋轉(zhuǎn)軸與某一坐標軸重合。進行規(guī)定的旋轉(zhuǎn)。進行規(guī)定的旋轉(zhuǎn)。進行反旋轉(zhuǎn)使放置軸回到原來的方位。進行反旋轉(zhuǎn)使放置軸回到原來的方位。進行反平移使旋轉(zhuǎn)軸回到原來的位置。進行反平移使旋轉(zhuǎn)軸回到原來的位置。圍繞任意軸的旋轉(zhuǎn)變換圍繞任意軸的旋轉(zhuǎn)變

30、換首先,假定旋轉(zhuǎn)軸用兩點定義首先,假定旋轉(zhuǎn)軸用兩點定義P1(x1,y1,z1) 和和P2(x2,y2,z2),由此兩點定義一向量:由此兩點定義一向量:用此向量可求得沿旋轉(zhuǎn)軸的單位向量:用此向量可求得沿旋轉(zhuǎn)軸的單位向量:用以下平移矩陣可把物體平移使旋轉(zhuǎn)軸通過坐標原點:用以下平移矩陣可把物體平移使旋轉(zhuǎn)軸通過坐標原點: ),(121212zzyyxxV) , ,(cbaVVu111111100010(,)0010001xyTxyzz圍繞任意軸的旋轉(zhuǎn)變換圍繞任意軸的旋轉(zhuǎn)變換要使旋轉(zhuǎn)軸與要使旋轉(zhuǎn)軸與z軸重合,可通過以下兩步實現(xiàn),首先,圍軸重合,可通過以下兩步實現(xiàn),首先,圍繞繞x軸旋轉(zhuǎn)使向量軸旋轉(zhuǎn)使向量u

31、轉(zhuǎn)到轉(zhuǎn)到xz平面中;然后圍繞平面中;然后圍繞y軸旋轉(zhuǎn)使軸旋轉(zhuǎn)使u與與z軸重合。軸重合。 首先確定使首先確定使u轉(zhuǎn)到轉(zhuǎn)到xz平面所需的旋轉(zhuǎn)角的正弦及余弦值。平面所需的旋轉(zhuǎn)角的正弦及余弦值。 coszzu ucu ud22= (+ )dbcdbsin圍繞任意軸的旋轉(zhuǎn)變換圍繞任意軸的旋轉(zhuǎn)變換上面已由的各個分量確定了及的值,由此可得到繞上面已由的各個分量確定了及的值,由此可得到繞x軸的軸的旋轉(zhuǎn)矩陣為:旋轉(zhuǎn)矩陣為: 10000/00/00001)(dcdbdbdcRx圍繞任意軸的旋轉(zhuǎn)變換圍繞任意軸的旋轉(zhuǎn)變換下面確定把下面確定把xz平面中的單位向量圍繞軸旋轉(zhuǎn)到正軸的變平面中的單位向量圍繞軸旋轉(zhuǎn)到正軸的變換

32、矩陣。換矩陣。因此首先確定因此首先確定 的的sin和和cos值:值:sin =a, cos =d由此可得到繞由此可得到繞y軸的旋轉(zhuǎn)矩陣為:軸的旋轉(zhuǎn)矩陣為:100000001000)(daadRy圍繞任意軸的旋轉(zhuǎn)變換圍繞任意軸的旋轉(zhuǎn)變換用上述變換矩陣,可使旋轉(zhuǎn)軸與用上述變換矩陣,可使旋轉(zhuǎn)軸與z軸重合。然后,按給定軸重合。然后,按給定的旋轉(zhuǎn)角的旋轉(zhuǎn)角繞繞 z 軸旋轉(zhuǎn),此旋轉(zhuǎn)矩陣為:軸旋轉(zhuǎn),此旋轉(zhuǎn)矩陣為:為完成繞任意軸的旋轉(zhuǎn),最后要把旋轉(zhuǎn)軸變換回原來位為完成繞任意軸的旋轉(zhuǎn),最后要把旋轉(zhuǎn)軸變換回原來位置。這樣,圍繞任意軸旋轉(zhuǎn)的變換矩陣可表示為以下七置。這樣,圍繞任意軸旋轉(zhuǎn)的變換矩陣可表示為以下七個獨立

33、變換的組合:個獨立變換的組合: 1000010000cossin00sincos)(zR111111( )( ,)()()( )( )( )(,)xyzyxRT x y zRRRRRTxyz三維幾何變換的一般形式三維幾何變換的一般形式 設(shè)圖形上一點的坐標為設(shè)圖形上一點的坐標為P (x,y,z),經(jīng)過二維幾何變換,經(jīng)過二維幾何變換后的坐標為后的坐標為P (x,y,z ),變換矩陣一般可寫為:,變換矩陣一般可寫為:即即 100011xabcdxyefghyzijklz xaxbyczdyexfygzhzixjykzl三維幾何變換的一般形式三維幾何變換的一般形式我們可以得到以下結(jié)論:我們可以得到以下

34、結(jié)論: 的作用是對點的坐標進行比例、旋轉(zhuǎn)等變的作用是對點的坐標進行比例、旋轉(zhuǎn)等變換。換。 的作用是對點進行平移變換。的作用是對點進行平移變換。 abcefgijkdhl 7.4.3 三維坐標系變換三維坐標系變換 實現(xiàn)圖形變換可采用實現(xiàn)圖形變換可采用兩種思想兩種思想:第一種就是在同一個坐標系中實現(xiàn)圖形的平移、旋轉(zhuǎn)等第一種就是在同一個坐標系中實現(xiàn)圖形的平移、旋轉(zhuǎn)等變換,變換后的圖形與變換前的圖形在同一個坐標系中變換,變換后的圖形與變換前的圖形在同一個坐標系中.另一種等效的方法是把變換看成是坐標系的變動,變換另一種等效的方法是把變換看成是坐標系的變動,變換前和變換后的圖形在不同的坐標系中。前和變換后

35、的圖形在不同的坐標系中。 三維坐標系變換三維坐標系變換假定有兩個坐標系假定有兩個坐標系Oxyz和,其中在坐標系和,其中在坐標系Oxyz中,中, 的坐標為的坐標為 。 分別為三個單位向量(分別為三個單位向量(ux,uy,uz),(),(vx,vy,vz)和()和(nx,ny,nz),現(xiàn)在用變換合成的方法將坐標系),現(xiàn)在用變換合成的方法將坐標系Oxyz中的圖形變換到坐標系中中的圖形變換到坐標系中去(見下圖):去(見下圖): 三維坐標系變換三維坐標系變換變換步驟如下:變換步驟如下:平移使平移使 落于原點落于原點O,變換為,變換為 ;繞繞x軸旋轉(zhuǎn)角度軸旋轉(zhuǎn)角度x,使,使n軸落于軸落于xOz平面,變換為

36、平面,變換為Rx(x);繞繞y軸旋轉(zhuǎn)角度軸旋轉(zhuǎn)角度y,使,使n軸與軸與z軸同向且重合,變換為軸同向且重合,變換為Ry(y);繞繞z軸旋轉(zhuǎn)角度軸旋轉(zhuǎn)角度z,使,使u軸和軸和x軸同向且重合,變換為軸同向且重合,變換為Rz(z)。 三維坐標系變換三維坐標系變換則變換矩陣為:則變換矩陣為:其實,由線性代數(shù)知識可知,從坐標系其實,由線性代數(shù)知識可知,從坐標系Oxyz到的正交變到的正交變換為:換為:所以上述矩陣變換,所以上述矩陣變換,可以表示為:可以表示為: ( )( )( )(,)xyzxyzuvnzzyyxxMRRRT OOO0000001xyzxyzxyzuuuvvvRnvv00(,)00001xy

37、zxyzxyzxyzuvnxyzuuuvvvMTOOOnvv從三維空間到二維平面從三維空間到二維平面 在真實世界里,所有的物體都在真實世界里,所有的物體都是三維的。但是,這些三維物體是三維的。但是,這些三維物體在計算機世界中卻必須以二維平在計算機世界中卻必須以二維平面物體的形式表現(xiàn)出來。那么,面物體的形式表現(xiàn)出來。那么,這些物體是怎樣從三維變換到二這些物體是怎樣從三維變換到二維的呢?下面我們采用相機維的呢?下面我們采用相機(Camera)模擬的方式來講述模擬的方式來講述這個概念這個概念從三維空間到二維平面從三維空間到二維平面從三維空間到二維平面,就如同用相機拍照一樣,通常都要經(jīng)歷從三維空間到二

38、維平面,就如同用相機拍照一樣,通常都要經(jīng)歷以下幾個步驟:以下幾個步驟: 第一步,將相機置于三角架上,讓它對準三維景物第一步,將相機置于三角架上,讓它對準三維景物 第二步,將三維物體放在適當?shù)奈恢茫P妥儞Q,第二步,將三維物體放在適當?shù)奈恢茫P妥儞Q,Modeling Transformation );); 第三步,選擇相機鏡頭并調(diào)焦,使三維物體投影在二維膠片上第三步,選擇相機鏡頭并調(diào)焦,使三維物體投影在二維膠片上(投影變換,(投影變換,Projection Transformation );); 第四步,決定二維像片的大?。ㄒ暱谧儞Q,第四步,決定二維像片的大?。ㄒ暱谧儞Q,Viewport Tr

39、ansformation )。)。視點方向:相機初始方向都指向視點方向:相機初始方向都指向Z負軸負軸 glFrustum 投影函數(shù)投影函數(shù)這個函數(shù)原型為:這個函數(shù)原型為:void glFrustum(GLdouble left,GLdouble Right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);它創(chuàng)建一個透視視景體。其操作是創(chuàng)建一個透視投影矩陣,并且用這個它創(chuàng)建一個透視視景體。其操作是創(chuàng)建一個透視投影矩陣,并且用這個矩陣乘以當前矩陣。這個函數(shù)的參數(shù)只定義近裁剪平面的左下角點和右矩陣乘以當前矩陣。這個函數(shù)的參數(shù)只定義近裁

40、剪平面的左下角點和右上角點的三維空間坐標,即上角點的三維空間坐標,即(left,bottom,-near)和和(right,top,-near);near和和far表示離視點的遠近,它們總為正值。表示離視點的遠近,它們總為正值。矩陣函數(shù)解釋矩陣函數(shù)解釋 void glLoadMatrixfd(const TYPE *m)設(shè)置當前矩陣中的元素值。函數(shù)參數(shù)設(shè)置當前矩陣中的元素值。函數(shù)參數(shù)*m是一個指向是一個指向16個個元素元素(m0,m1,.,m15)的指針,的指針,這這16個元素就是當前矩陣個元素就是當前矩陣 M 中的元素,其排中的元素,其排 列方式如列方式如下:下: 1511731410621

41、395112840mmmmmmmmmmmmmmmmM矩陣函數(shù)解釋矩陣函數(shù)解釋void glMultMatrixfd(const TYPE *m) 用當前矩陣去乘用當前矩陣去乘*m所指定的矩陣,并將結(jié)果存放于所指定的矩陣,并將結(jié)果存放于*m中。當前矩陣可以是用中。當前矩陣可以是用glLoadMatrix()指定的矩陣,也指定的矩陣,也可以是其它矩陣變換函數(shù)的綜合結(jié)果。可以是其它矩陣變換函數(shù)的綜合結(jié)果。void glLoadIdentity(void)功能:設(shè)置當前操作矩陣為單位矩陣功能:設(shè)置當前操作矩陣為單位矩陣(當前矩陣即為以后當前矩陣即為以后圖形變換所要使用的矩陣圖形變換所要使用的矩陣)。幾何變換函數(shù)幾何變換函數(shù)當幾何變換時,調(diào)用當幾何變換時,調(diào)用OpenGL的三個變換函數(shù)的三個變換函數(shù)glTranslate*()glRotate*()glScale*()實質(zhì)上相當于產(chǎn)生了一個平移、旋轉(zhuǎn)和比例矩陣,然后實質(zhì)上相當于產(chǎn)生了一個平移、旋轉(zhuǎn)和比例矩陣,然后調(diào)用調(diào)用glMultMatrix()與當前矩陣相乘。與當前矩陣相乘。平移函數(shù)平移函數(shù)平移變換函數(shù)如下:平移變換函數(shù)如下:void glTranslatefd(TYPE x,TYPE y,TYP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論