第5章 圖形變換_第1頁
第5章 圖形變換_第2頁
第5章 圖形變換_第3頁
第5章 圖形變換_第4頁
第5章 圖形變換_第5頁
已閱讀5頁,還剩193頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章圖形變換5.1圖形變換基礎(chǔ)5.2二維圖形變換5.3三維圖形變換5.4窗口—視區(qū)變換5.5正投影三視圖變換5.6軸測投影變換5.7透視投影與視圖變換5.8參數(shù)圖形的幾何變換5.9圖形變換實(shí)例習(xí)題

5.1圖形變換基礎(chǔ)圖形變換是指對計(jì)算機(jī)生成的圖形進(jìn)行變換的技術(shù),它是計(jì)算機(jī)圖形學(xué)中較為基礎(chǔ)的內(nèi)容之一。通過圖形變換可以從簡單圖形生成復(fù)雜圖形;可以從某一個(gè)圖形得到多個(gè)其它圖形;可用二維圖形表示三維形體;可對靜態(tài)圖形經(jīng)過快速變換而獲得圖形的動態(tài)顯示效果;當(dāng)圖形具有一定的規(guī)律性時(shí),還可以使繪圖程序簡單化。所以,為了提高圖形程序的設(shè)計(jì)效率和質(zhì)量,開拓圖形程序應(yīng)用范圍的新領(lǐng)域,深入學(xué)習(xí)圖形變換是十分必要的。圖形變換應(yīng)用的例子如圖5.1所示。目前,較為完善的圖形軟件中,都包含有圖形幾何變換的一些功能。圖5.1圖形變換應(yīng)用示例5.1.1齊次坐標(biāo)所謂齊次坐標(biāo),就是將一個(gè)原本是n維的向量用一個(gè)n+1維向量來表示。例如,向量(x1,x2,…,

xn)的齊次坐標(biāo)表示為(Hx1,Hx2,…,

Hxn,H),其中H是一個(gè)不為0的實(shí)數(shù)。由點(diǎn)或向量的齊次坐標(biāo)(Hx1,Hx2,…,

Hxn,H)求它的規(guī)范化齊次坐標(biāo),可根據(jù)如下公式求得現(xiàn)設(shè)點(diǎn)P(x,y)進(jìn)行平移后移到P*(x*,y*),其中x方向的平移量為l,y方向的平移量為m。那么,點(diǎn)P*(x*,y*)的坐標(biāo)為,如圖5.2所示。圖5.2點(diǎn)的平移圖5.3齊次坐標(biāo)的幾何意義引入齊次坐標(biāo)的主要優(yōu)點(diǎn)如下:(1)如上所述,齊次坐標(biāo)提供了用矩陣運(yùn)算把二維、三維甚至高維空間中的一個(gè)點(diǎn)集(圖形)從一個(gè)坐標(biāo)空間變換到另一個(gè)坐標(biāo)空間的有效而統(tǒng)一的方法。二維圖形齊次坐標(biāo)變換矩陣的一般形式是(5-2)三維圖形齊次坐標(biāo)變換矩陣的一般形式是(5-3)(2)用齊次坐標(biāo)可以表示無窮遠(yuǎn)點(diǎn)。(3)齊次坐標(biāo)在圖形幾何變換中的另一個(gè)應(yīng)用是:如某點(diǎn)S(60000,50000)在16位計(jì)算機(jī)上表示則大于32767的最大坐標(biāo)值,需要進(jìn)行復(fù)雜的操作。5.1.2坐標(biāo)系1.世界坐標(biāo)系(WCS-WorldCoordinateSystem)

世界坐標(biāo)系一般是三維右手直角坐標(biāo)系,它的單位根據(jù)所描述的實(shí)際對象的大小來確定,通常使用實(shí)數(shù),取值范圍并無限制。它是一般用戶繪圖時(shí)所取的坐標(biāo)系,有時(shí)也稱為用戶坐標(biāo)系或物體坐標(biāo)系。通常表示為圖5.4(a),它也可以是二維的,表示為圖5.4(b)。圖5.4世界坐標(biāo)系(WCS)(a)3D右手直角坐標(biāo)系;(b)2D右手直角坐標(biāo)系2.目坐標(biāo)系(ECS/VCS-EyeCoordinateSystem)

目坐標(biāo)系一般是三維左手直角坐標(biāo)系,通過變換可在用戶坐標(biāo)系的任何位置,任何方向定義。它的單位根據(jù)所描述的實(shí)際對象的大小來確定,一般使用實(shí)數(shù)。它是一般用戶觀察圖形對象時(shí)所取的坐標(biāo)系,有時(shí)也稱為觀察坐標(biāo)系(VCS-ViewCoordinateSystem)。建立目坐標(biāo)系的主要作用有兩個(gè),第一個(gè)是用于指定裁剪空間,確定三維立體的哪部分要顯示輸出;第二個(gè)是通過定義觀察(投影)平面,把可顯示部分的用戶坐標(biāo)變換成規(guī)格化的設(shè)備坐標(biāo)。用戶坐標(biāo)與目坐標(biāo)之間的關(guān)系,如圖5.5所示。圖5.5目坐標(biāo)系(ECS)圖5.6設(shè)備坐標(biāo)系(DCS)3.設(shè)備坐標(biāo)系(DCS-DeviceCoordinateSystem)

為了便于輸出真實(shí)圖形,設(shè)備坐標(biāo)系(DCS)有時(shí)也采用左手三維直角坐標(biāo)系,但它不全都是左手的、三維的。它的單位根據(jù)輸出設(shè)備的實(shí)際大小來確定,一般使用整數(shù),如圖5.6所示。4.規(guī)格化設(shè)備坐標(biāo)系(NDCS-NormalizedDeviceCoordinateSystem)

在早期的圖形系統(tǒng)中,圖形程序(或軟件包)大多是在用戶坐標(biāo)系(WCS)中畫圖,然后直接映射到設(shè)備坐標(biāo)空間(DCS)顯示輸出。這就給設(shè)備的更換和軟件的移植帶來不方便。為此,在WCS和DCS之間定義了一個(gè)與設(shè)備無關(guān)的規(guī)格化設(shè)備坐標(biāo)系,考慮到且坐標(biāo)系與設(shè)備坐標(biāo)系,它常被取為三維或二維左手直角坐標(biāo)系,取值范圍約定為(0.0,0.0,0.0)到(1.0,1.0,1.0)或者(0.0,0.0)到(1.0,1.0),如圖5.7所示。用戶的繪圖數(shù)據(jù)經(jīng)過轉(zhuǎn)換成NDCS中的值,使得圖形有了統(tǒng)一的設(shè)備空間。這對圖形的統(tǒng)一處理,帶來很大的方便,從而提高圖形程序的可移植性。圖5.7規(guī)格化設(shè)備坐標(biāo)系(NDCS)以上介紹的坐標(biāo)系均為三維坐標(biāo)系,但在顯示器屏幕上或繪圖機(jī)上,則要求用戶定義一個(gè)平面。較為簡單方便的辦法是使z坐標(biāo)值取零。因此在三維直角坐標(biāo)系中,xOy平面也可以看作是基本工作平面。任何不在xOy平面內(nèi)的圖形可以通過本章介紹的圖形變換來處理。

國際圖形標(biāo)準(zhǔn)GKS(GraphicsKernelSystem)是圖形程序和各種圖形輸入/輸出設(shè)備之間的一個(gè)標(biāo)準(zhǔn)軟件接口。為便于圖形程序的使用和對設(shè)備的處理,GKS設(shè)置了三種坐標(biāo)系,即世界坐標(biāo)系(WCS)、規(guī)范化設(shè)備坐標(biāo)系(NDCS)和設(shè)備坐標(biāo)系(DCS)。它們之間的轉(zhuǎn)換如圖5.8所示。圖5.8WCS、ECS、NDCS和DCS間的轉(zhuǎn)換5.2二維圖形變換5.2.1二維圖形幾何變換的矩陣?yán)谬R次坐標(biāo)以及式(5-2)中的變換矩陣T2D,實(shí)現(xiàn)平面圖形幾何變換的基本變換的一般過程是:將n×2階的二維點(diǎn)集矩陣[xiyi]n×2表示成齊次坐標(biāo)[xiyi1]n×2的形式,然后乘以相應(yīng)的變換矩陣即可完成,即變換后的點(diǎn)集矩陣=變換前的點(diǎn)集矩陣×變換矩陣T

(圖形上各點(diǎn)的新齊次坐標(biāo))(圖形上各點(diǎn)的原齊次坐標(biāo))設(shè)變換矩陣T為式(5-2)中的T2D,則上述變換可以用公式表示為(5-4)圖形上各點(diǎn)的新齊次坐標(biāo)規(guī)范化后的點(diǎn)集矩陣為1.二維圖形變換子矩陣的功能引入齊次坐標(biāo)后,表示平面圖形幾何變換的3×3矩陣T2D的功能就完善了,我們可以用它完成二維圖形的各種基本幾何變換。下面我們討論式(5-2)表示的3×3變換矩陣T2D中各元素在變換中的功能。T2D的一般形式為2.圖形幾何變換的性質(zhì)在式(5-2)或式(5-5)的3×3矩陣T2D中,除p≠0,q≠0(透視變換)外,其余各變換具有以下性質(zhì):(1)從屬性:變換前在直線或圖形上的點(diǎn),變換后在直線或圖形上有確定的對應(yīng)點(diǎn),且其從屬關(guān)系不變。(2)同素性:變換前后,幾何要素(點(diǎn)或直線)不變。(3)平行性:互相平行的直線(段),變換后仍保待平行。(4)等比性:變換前兩線段之比等于變換后對應(yīng)線段之比。5.2.2二維圖形的基本幾何變換下面介紹二維圖形的各種基本幾何變換。1.恒等變換平面圖形的恒等變換保持原圖形的大小、形狀、位置不變,其變換矩陣為2.比例變換平面圖形的比例變換是將圖形放大、縮小(壓縮),如圖5.9所示。比例變換的矩陣為其中,a,d>0。圖5.9比例變換圖5.102D圖形的比例變換(a)三角形等比例變換;(b)三角形畸變(1)將已知三角形放大為原來的兩倍。此時(shí),只要選擇a=d=2,變換矩陣為則(2)如果選擇a=2,d=3,變換矩陣為則3.反射變換平面圖形的反射變換是指變換前后的平面圖形對稱于x軸,y軸或某個(gè)特定軸。反射變換的矩陣為(1)如果要把圖5.10(a)中所示的三角形P1P2P3相對于x軸作反射變換,只要在上述變換矩陣T2D中選擇a=1,d=-1,則(2)同樣,要把圖5.10(a)中所示的三角形P1P2P3相對于y軸作反射變換,只要在上述變換矩陣T2D中選擇a=-1,d=1,則(3)如圖5.11(c)所示,只要在上述變換矩陣T2D中選擇a=-1,d=-1,便可對三角形P1P2P3作關(guān)于原點(diǎn)的反射變換,變換后的三角形為P*1P*2P*3。圖5.112D圖形的反射變換(a)三角形對稱于x軸;(b)三角形對稱于y軸;(c)三角形對稱于坐標(biāo)原點(diǎn)4.錯(cuò)切變換平面圖形的錯(cuò)切變換是指變換前后的平面圖形沿x軸方向或y軸方向錯(cuò)切。錯(cuò)切變換的變換矩陣為(1)如果取a=d=1,b=0,c為正數(shù)或負(fù)數(shù),則由公式(5-4)可知,變換后點(diǎn)的y坐標(biāo)不變,而變換后的橫坐標(biāo)x*=x+cy,即x*是在原橫坐標(biāo)x上加上cy,也就是沿+x方向或-x方向移動cy,如圖5.12(a)所示。點(diǎn)(0,0)在錯(cuò)切變換中保持不變,c是一個(gè)常數(shù),所以

,即表示平行于y軸的直線段錯(cuò)切后相對于y軸的傾斜θ角度。當(dāng)θ=45°時(shí),c=1,如果此時(shí)對圖5.12(b)所示的矩形P1P2P3P4進(jìn)行錯(cuò)切變換,則(2)如果取a=d=1,c=0,b為正數(shù)或負(fù)數(shù),令b=1,對圖5.12(c)所示的矩形P1P2P3P4進(jìn)行錯(cuò)切變換,則圖5.122D圖形的錯(cuò)切變換示意圖(a)錯(cuò)切角;(b)沿x方向錯(cuò)切;(c)沿y方向錯(cuò)切(3)如果取a=d=1,b,c為正數(shù)或負(fù)數(shù),令b=2,c=1,對圖5.13所示的矩形P1P2P3P4進(jìn)行錯(cuò)切變換,則圖5.13x、y方向同時(shí)錯(cuò)切的變換5.旋轉(zhuǎn)變換平面圖形的基本旋轉(zhuǎn)變換是指圖形繞坐標(biāo)原點(diǎn)旋轉(zhuǎn)任意角θ,并且規(guī)定逆時(shí)針方向旋轉(zhuǎn)時(shí),θ取正值,順時(shí)針方向旋轉(zhuǎn)時(shí),θ取負(fù)值,如圖5.14(a)所示。圖5.142D圖形的旋轉(zhuǎn)變換示意圖(a)點(diǎn)的旋轉(zhuǎn);(b)三角形的旋轉(zhuǎn)圖5.15三角形的平移變換示意圖6.平移變換平面圖形的平移變換是將平面圖形從一個(gè)位置平移到另一位置,形狀沒有任何改變。平移變換的矩陣就是式(5-1)中的矩陣T。下面是平移變換的一個(gè)例子。如圖5.15所示,設(shè)△P1P2P3的三個(gè)頂點(diǎn)分別為

P1(15,30),P2(60,30),P3(30,60),平移量為l=20,m=50。

5.2.3平面圖形的復(fù)合變換(級聯(lián)變換)1.復(fù)合平移給定某個(gè)平面圖形,先平移(l1,m1)到新的位置后,再將所得圖形平移(l2,m2)到下一位置,則這個(gè)復(fù)合平移的矩陣為2.復(fù)合比例對某個(gè)給定的平面圖形連續(xù)進(jìn)行比例變換,最后合成的復(fù)合比例矩陣,只要對比例常量作乘法運(yùn)算即可,復(fù)合比例變換矩陣如下:3.復(fù)合旋轉(zhuǎn)對某個(gè)平面圖形連續(xù)兩次施行旋轉(zhuǎn)變換,最后合成的旋轉(zhuǎn)變換的旋轉(zhuǎn)角度等于兩次旋轉(zhuǎn)角度的和,復(fù)合旋轉(zhuǎn)變換矩陣如下:5.2.4平面圖形變換舉例設(shè)△P1P2P3的三個(gè)頂點(diǎn)分別為P1(10,20),P2(20,20),P3(15,30),它繞點(diǎn)Q(5,25)逆時(shí)針方向旋轉(zhuǎn)30°,它的復(fù)合變換由如下三種變換組成:(1)先將給定點(diǎn)Q(5,25)及△P1P2P3一起移動,Q移到原點(diǎn)O,平移常量l=-5,m=-25,△P1P2P3也跟著平移到新位置P′1P′2P′3,平移變換矩陣為(2)再將△P′1P′2P′3繞原點(diǎn)逆時(shí)針旋轉(zhuǎn)30°,旋轉(zhuǎn)變換矩陣為旋轉(zhuǎn)變換后的△P″1P″2P″3如圖5.16(b)所示。(3)最后將Q點(diǎn)移回原來位置Q(5,25),△P″1P″2P″3也平移l=5,m=25,平移變換矩陣為變換后,△P*1P*2P*3如圖5.16(b)所示。圖5.16三角形的復(fù)合變換示意圖(a)先平移;(b)旋轉(zhuǎn)后再平移5.3三維圖形變換三維空間立體圖形的基本變換與二維平面圖形的基本變換,在幾何概念上十分相似,同樣可以利用矩陣處理方法。通常用規(guī)范化的四維齊次坐標(biāo)(x,y,z,1)來表示三維空間點(diǎn)(x,y,z)。因此,三維空間點(diǎn)的變換的一般公式為[x*y*z*1]=[x

y

z1]·T3D(5-7)式中,T3D是式(5-3)中的三維圖形的變換矩陣,它是一個(gè)4×4階方陣,即(5-8)

5.3.1三維平移變換平移變換是指三維立體沿x、y、z三個(gè)方向分別移動l,m,n到一個(gè)新的空間位置。平移變換后,立體的大小和形狀保持不變。三維平移變換的矩陣為圖5.17三棱錐的平移變換示意圖5.3.2三維比例變換1.比例變換比例變換是指三維立體在x、y、z三個(gè)方向以原點(diǎn)為中心,分別放大或縮小a,e,i倍,得到一個(gè)新的三維立體。比例變換后,三維立體的大小和形狀可能發(fā)生改變。比例變換的變換矩陣為其中主對角線上的元素a,e,i,使三維立體以原點(diǎn)為中心,沿x、y、z三個(gè)方向進(jìn)行放大或縮小。當(dāng)a=e=i時(shí),三維立體在三個(gè)方向以相等比例放大或縮小。圖5.18正方體的等比例變換示意圖圖5.19三棱錐的不等比例變換示意圖2.全比例變換在式(5-8)中,變換矩陣主對角線上的元素s能使三維立體在空間各方向等比例放大或縮小。全比例變換矩陣為5.3.3三維反射變換1.對xOy坐標(biāo)平面的反射變換把給定圖形對于xOy坐標(biāo)平面作反射變換時(shí),變換前后相應(yīng)點(diǎn)的x、y坐標(biāo)保持不變,z坐標(biāo)互為相反數(shù),所以僅需將單位矩陣中z坐標(biāo)的元素值取為-1。因此,反射變換的矩陣為圖5.20反射變換示意圖(a)對xOy面的反射;(b)對yOz面的反射;(c)對xOz面的反射2.對yOz坐標(biāo)平面的反射把給定圖形對于yOz坐標(biāo)平面作反射變換時(shí),僅需將單位矩陣中x坐標(biāo)的元素值取為-1,因此,反射變換矩陣為3.對xOz坐標(biāo)平面的反射把給定圖形對于xOz坐標(biāo)平面作反射變換時(shí),僅需將單位矩陣中y坐標(biāo)的元素值取為-1,因此,反射變換矩陣為

5.3.4三維錯(cuò)切變換三維錯(cuò)切變換是指三維立體在空間沿x、y、z三個(gè)方向?qū)崿F(xiàn)錯(cuò)切變形,三維錯(cuò)切是二維錯(cuò)切變換的一個(gè)擴(kuò)充。三維錯(cuò)切變換矩陣為圖5.21錯(cuò)切變換示意圖5.3.5三維旋轉(zhuǎn)變換三維立體的旋轉(zhuǎn)變換是指給定的三維立體繞三維空間某個(gè)指定的坐標(biāo)軸旋轉(zhuǎn)θ角度。旋轉(zhuǎn)后,立體的空間位置將發(fā)生變化,但形狀不變。

θ角的正負(fù)按右手規(guī)則確定,右手大姆指指向旋轉(zhuǎn)軸的正向,其余四個(gè)手指指向旋轉(zhuǎn)角的正向,如圖5.22(a)所示。下面主要討論三維立體分別繞三個(gè)坐標(biāo)軸旋轉(zhuǎn)的旋轉(zhuǎn)變換,如圖5.22所示。圖5.22旋轉(zhuǎn)變換示意圖(a)繞z軸正向旋轉(zhuǎn);(b)繞x軸正旋轉(zhuǎn);(c)繞y軸正向旋轉(zhuǎn)1.繞x軸正向旋轉(zhuǎn)角θx

三維空間立體繞x軸旋轉(zhuǎn)時(shí),立體上各頂點(diǎn)的y,z坐標(biāo)改變,而x坐標(biāo)不變,因此,變換矩陣在第一行和第一列中,除去主對角線上元素為1以外,所有元素均為0,而y,z坐標(biāo)可由二維點(diǎn)繞原點(diǎn)旋轉(zhuǎn)公式(5-6)得到,因此可得x*=xy*=ycosθx-zsinθxz*=ysinθx

+z

cosθx將上式改寫成矩陣形式,則繞x軸旋轉(zhuǎn)的旋轉(zhuǎn)變換矩陣為(5-9)

2.繞y軸正向旋轉(zhuǎn)角θy

三維空間立體繞y軸正向旋轉(zhuǎn)時(shí),立體上各頂點(diǎn)的x,z坐標(biāo)改變,而y坐標(biāo)不變,因此,變換矩陣在第二行和第二列中,除去主對角線上元素為1以外,所有元素均為0,而x,z坐標(biāo)可由二維點(diǎn)繞原點(diǎn)旋轉(zhuǎn)公式(5-6)得到,因此可得

x*=x

cosθy

+zsinθyy*=yz*=-xsinθy+z

cosθy

將上式改寫成矩陣形式,則繞y軸旋轉(zhuǎn)的旋轉(zhuǎn)變換矩陣為3.繞z軸正向旋轉(zhuǎn)角θz

三維空間立體繞z軸正向旋轉(zhuǎn)時(shí),立體上各頂點(diǎn)的x,y坐標(biāo)改變,而z坐標(biāo)不變,因此,變換矩陣在第三行和第三列中,除去主對角線上元素為1以外,所有元素均為0,而x,y坐標(biāo)可由二維點(diǎn)繞原點(diǎn)旋轉(zhuǎn)公式(5-6)得到,因此可得

x*=x

cosθz

-ysinθzy*=xsinθz

+y

cosθzz*=z將上式改寫成矩陣形式,則繞z軸旋轉(zhuǎn)的旋轉(zhuǎn)變換矩陣為(5-11)

4.三維旋轉(zhuǎn)舉例如圖5.23所示,設(shè)三棱柱ABCDEF的各頂點(diǎn)為A(0,0,0),B(20,0,0),C(0,10,0),D(0,0,10),E(20,0,10),F(0,10,10),試求三棱柱ABCDEF繞x,y,z各軸正向旋轉(zhuǎn)90°后各頂點(diǎn)的新坐標(biāo)。圖5.23旋轉(zhuǎn)變換5.3.6三維復(fù)合變換與二維圖形的復(fù)合變換一樣,三維立體圖形也可通過三維基本變換矩陣,按一定順序依次相乘而得到一個(gè)組合矩陣(稱級聯(lián)),完成復(fù)合變換。同樣,三維復(fù)合平移、復(fù)合旋轉(zhuǎn)和復(fù)合比例變換與二維復(fù)合平移、復(fù)合旋轉(zhuǎn)和復(fù)合比例變換具有類似的規(guī)律,請讀者自己推導(dǎo)有關(guān)結(jié)果。下面通過一個(gè)例子說明三維復(fù)合變換。設(shè)給定如圖5.21所示的三棱錐ABCD,它的點(diǎn)集矩陣為圖5.24三棱錐的復(fù)合變換5.3.7三維圖形變換程序?qū)嵗?.3.5節(jié)三維旋轉(zhuǎn)變換中,曾經(jīng)給出將各頂點(diǎn)為A(0,0,0),B(20,0,0),C(0,10,0),D(0,0,10),E(20,0,10),F(0,10,10)的三棱柱ABCDEF,繞x,y,z各軸正向旋轉(zhuǎn)90°后,求各頂點(diǎn)的新坐標(biāo)的一個(gè)例子,如圖5.23所示。圖5.25三棱錐的各種變換示例5.4窗口—視區(qū)變換5.4.1基本概念在第3章的引言以及3.5節(jié)中,我們曾經(jīng)提到窗口和視區(qū)的概念。通常所說的窗口是指在Windows操作系統(tǒng)中,由應(yīng)用軟件設(shè)置的一個(gè)虛擬區(qū)域,它可以被激活、變?yōu)闊o效、在屏幕上移動和改變大小等。在計(jì)算機(jī)圖形學(xué)中,把在用戶坐標(biāo)系中需要進(jìn)行觀察和處理的一個(gè)坐標(biāo)區(qū)域稱為窗口,如圖5.26所示。格化設(shè)備坐標(biāo)系(NDCS)來方便計(jì)算,如圖5.28所示。圖5.26窗口與視區(qū)示意圖圖5.27邊與坐標(biāo)軸不平行的窗口及其視區(qū)示意圖圖5.28ECS或VCS中的窗口和NDCS中的視區(qū)示意圖5.4.2窗口—視區(qū)變換1.窗口-視區(qū)變換公式如圖5.29所示,設(shè)在用戶坐標(biāo)系中,取窗口為邊與坐標(biāo)軸平行的矩形,它的左下頂點(diǎn)和右上頂點(diǎn)坐標(biāo)分別為(Wxl,Wyb)、(Wxr,Wyt),度量單位由用戶定義,相應(yīng)的視區(qū)也取成邊與坐標(biāo)軸平行的矩形,它的左下頂點(diǎn)和右上頂點(diǎn)坐標(biāo)分別為(Vxl,Vyb)、(Vxr,Vyt),度量單位為像素單位。圖5.29窗口-視區(qū)變換示意圖窗口-視區(qū)變換的要求在保持一定比例關(guān)系的前提下,把窗口中的點(diǎn)(xW,yW)變換為視區(qū)中的點(diǎn)(xV,yV)。更確切地說,在窗口中點(diǎn)(xW,yW)到左邊線的距離和窗口在x方向的長度之比,與在視區(qū)中相應(yīng)點(diǎn)(xV,yV)到左邊線的距離和視區(qū)在x方向的長度之比,應(yīng)該是相等的。同樣,在y方向也保持這種比例關(guān)系。即化簡后得變換公式(5-12)如果窗口邊長用Sx,

Sy表示,視區(qū)邊長用Vx,

Vy表示,則公式(5-12)表示為(5-14)圖5.30圖形窗口與屏幕視區(qū)的對應(yīng)關(guān)系2.開窗變換的選擇開窗變換是指先將圖形關(guān)于窗口進(jìn)行裁剪,然后將裁剪后的保留在窗口內(nèi)的圖形,變換成顯示器屏幕上指定視區(qū)內(nèi)的圖形。開窗變換也叫取景變換,它包括裁剪運(yùn)算和窗口到視區(qū)的變換。由于窗口的選取位置和大小不同,開窗變換后,可在視區(qū)內(nèi)顯示出不同部位和不同大小的圖形。如圖5.31(a)所示,以汽車的不同位置、選取兩個(gè)不同的窗口(窗口1和窗口2)。開窗變換后產(chǎn)生相應(yīng)的顯示圖形,如圖5.31(b)、(c)所示。應(yīng)當(dāng)指出,對于窗口(或視區(qū))的大小以及長寬比例,用戶都可以分別改變,從而在視區(qū)內(nèi)產(chǎn)生放大、縮小或畸變的顯示圖形,以滿足各種作圖的需要。此外,還可以在用戶坐標(biāo)系中選取斜置窗口,使顯示圖形得到旋轉(zhuǎn)。根據(jù)所選取窗口的不同,將出現(xiàn)以下幾種情況。

圖5.31開窗變換(1)窗口與視區(qū)的形狀相似,即二者的長與寬之比相同,變換后在視區(qū)產(chǎn)生均勻縮小或均勻放大的圖形。如圖5.32所示。(2)窗口與視區(qū)的形狀不相似,即二者的長與寬之比不相等,變換后在視區(qū)產(chǎn)生畸變的圖形。圖形將沿水平及垂直方向以不同比例發(fā)生變化——畸變。如圖5.33所示。(3)窗口斜置,即窗口繞坐標(biāo)原點(diǎn)旋轉(zhuǎn)一個(gè)角度,變換后視區(qū)的圖形也相應(yīng)地旋轉(zhuǎn)一個(gè)角度。如圖5.34所示。圖5.32窗口與視區(qū)形狀相似圖5.33窗口與視區(qū)形狀不相似圖5.34窗口斜置5.4.3窗口-規(guī)格化設(shè)備坐標(biāo)-視區(qū)變換考慮到輸出設(shè)備的分辨率,對不同型號和規(guī)格的圖形顯示器或繪圖機(jī),其分辨率是不一樣的。因此,進(jìn)行窗口-視區(qū)變換時(shí)應(yīng)盡可能得使圖形程序設(shè)計(jì)與設(shè)備無關(guān),將視區(qū)設(shè)置在規(guī)格化設(shè)備坐標(biāo)系中。規(guī)格化設(shè)備坐標(biāo)系的坐標(biāo)原點(diǎn)在它的左下角,它的x與y坐標(biāo)度量分別在0~1的范圍。如圖5.35所示。圖5.35窗口-規(guī)格化設(shè)備坐標(biāo)-視區(qū)變換用戶設(shè)計(jì)的圖形,它的窗口內(nèi)的全部點(diǎn)坐標(biāo)首先變換到規(guī)格化設(shè)備坐標(biāo)系上,它能適應(yīng)任何一種具體的圖形輸出設(shè)備。此時(shí),由于Vx=Vy=1,

Vxl=Vyb=0,變換公式(5-13)表示如下:(5-15)然后,根據(jù)物理輸出設(shè)備坐標(biāo)或具體顯示器屏幕尺寸和分辨率,再將規(guī)格化設(shè)備坐標(biāo)變換到具體視區(qū)內(nèi),顯示輸出圖形。在全屏顯示情況下,視區(qū)原點(diǎn)與屏坐標(biāo)系原點(diǎn)重合,視區(qū)邊長即屏幕的寬與高,且設(shè)屏幕的顯示分辨率為1024×1024像素單位時(shí),則顯示點(diǎn)坐標(biāo)為(5-16)

5.4.4窗口到視區(qū)的變換過程引入觀察坐標(biāo)系和規(guī)格化設(shè)備坐標(biāo)系后,窗口到視區(qū)的變換分為如圖5.36所示的幾個(gè)步驟,通常稱為二維觀察流程。圖5.36窗口—規(guī)格化設(shè)備坐標(biāo)—視區(qū)變換流程5.5正投影三視圖變換5.5.1投影變換及其分類由于顯示器和繪圖機(jī)只能用二維空間來表示圖形,因此要顯示三維圖形就要用投影的方法來降低其維數(shù)。把三維物體變?yōu)槎S圖形表示的過程稱為投影變換。根據(jù)投影中心與投影平面之間距離的不同,投影可分為平行投影和透視投影。平行投影的投影中心與投影平面之間的距離為無窮大,而對透視投影,這個(gè)距離是有限的。不同投影的情況如圖5.37所示。圖5.37投影變換分類(a)平行投影;(b)透視投影投影變換的分類如下:5.5.2三視圖變換1.正面(V面)投影的主視圖變換及其矩陣正面投影是將三維立體向xOz平面(V面)作垂直投影,立體上的各點(diǎn)的y坐標(biāo)為零(y=0),如圖5.38(a)所示。因此,變換矩陣的第二列元素均為零,此時(shí),V面投影的主視圖變換矩陣為(5-17)圖5.38正投影三視圖變換(a)三面投影;(b)三面投影展開;(c)三面投影平移2.水平面(H面)投影的俯視圖變換及其矩陣水平面投影是將立體向xOy平面(H面)作垂直投影,立體上各點(diǎn)的z坐標(biāo)為零(z=0),因此,變換矩陣第三列元素均為零,即3.側(cè)面(W面)投影的左視圖變換及其矩陣側(cè)面投影是將立體向yOz平面(W面),作垂直投影,立體上各頂點(diǎn)的x坐標(biāo)為零(x=0),因此,變換矩陣的第一列元素均取為零,即5.5.3三視圖變換的實(shí)例設(shè)六面體各頂點(diǎn)的坐標(biāo)位置為A(0,2,0),B(2,2,0),C(2,0,0),D(0,0,0),E(0,2,2),F(2,2,2),G(2,0,2),H(0,0,2),如圖5.39(a)所示。在V面投影圖與H面以及W面投影間的距離均為10。試求六面體各頂點(diǎn)在V、H、W面上的投影坐標(biāo)。

圖5.39六面體的三視圖(a)原六面體;(b)六面體的三視圖1.V面投影的主視圖變換矩陣為TV,變換結(jié)果為2.H面投影的俯視圖變換矩陣為TH,變換結(jié)果為3.W面投影的左視圖變換矩陣為TW,變換結(jié)果為5.6軸測投影變換5.6.1正軸測投影下面先介紹工程制圖中得到正軸測投影圖的投影過程。對圖5.40所示的立方體,若直接向V面投影就得到圖5.40(a),若將立方體繞z軸正向旋轉(zhuǎn)一個(gè)角度,再向V面投影,就得到圖5.40(b),若將其再繞x軸反向旋轉(zhuǎn)一個(gè)角度,然后再向V面投影就可得到圖5.40(c),這個(gè)平面圖形就是正軸測投影圖。圖5.40正軸測投影圖的生成(a)V面投影;(b)旋轉(zhuǎn)后的V面投影;(c)正軸測投影圖5.41六面體正等測投影圖5.6.2斜軸測投影常用的斜軸測投影過程是先將三維立體沿x軸正向錯(cuò)切,如5.42(a)所示,即離開y軸且沿x方向移動dy;然后再沿z軸反向錯(cuò)切,如圖5.42(b)所示,即錯(cuò)切平面離開y軸,且沿z軸反向移動fy;最后向xOz平面(V面)垂直投影。因此,斜軸測投影變換矩陣,由上述三種變換的變換矩陣按順序相乘而得,即(5-22)

圖5.42斜軸測投影中的錯(cuò)切變換圖5.43六面體的斜二測投影(a)原六面體;(b)六面體的斜二測投影5.7透視投影與視圖變換5.7.1透視投影在大量的計(jì)算機(jī)圖形學(xué)應(yīng)用中,需要加以處理的往往是三維空間的立體對象,即三維立體。為了對三維對象作透視投影,先要在三維空間給定一個(gè)投影平面和一個(gè)視點(diǎn)。從視點(diǎn)發(fā)出的所有通過對象的射線和投影平面的交點(diǎn)形成了對象的透視投影。圖5.37(b)是一個(gè)透視投影的例子。一般地,以某個(gè)觀察點(diǎn)(視點(diǎn))為投影中心,將稱為“景”的三維立體投影于垂直于觀察方向的投影平面內(nèi),產(chǎn)生三維立體的“像”,這就是透視投影,如圖5.44所示。圖5.44透視投影圖5.45透視投影的分類(a)一點(diǎn)透視;(b)二點(diǎn)透視;(c)三點(diǎn)透視下面討論一點(diǎn)透視。一點(diǎn)透視只有一個(gè)主滅點(diǎn),即投影面與一個(gè)坐標(biāo)軸正交,與另外兩個(gè)坐標(biāo)軸平行,如圖5.45(a)所示。進(jìn)行一點(diǎn)透視投影變換,要很好地考慮圖面布局,以避免三維形體或?qū)ο蟮钠矫嬗颉椿蛑本€〉積聚成直線〈或點(diǎn)〉而影響直觀性。具體的說,就是要考慮下列幾點(diǎn):(1)三維形體或?qū)ο笈c畫面(投影面)的相對位置。(2)視距,即視點(diǎn)(投影中心)與畫面的距離。(3)視點(diǎn)的高度。由此,我們假設(shè)視點(diǎn)(投影中心)在坐標(biāo)原點(diǎn),z坐標(biāo)軸方向與觀察方向重合一致,三維形體或?qū)ο笊夏骋稽c(diǎn)為P(x,y,z),一點(diǎn)透視變換后在投影面(觀察平面)UO*V上的對應(yīng)點(diǎn)為P*(x*,y*,z*),投影面與z軸垂直,且與視點(diǎn)的距離為d,z軸過投影面窗口的中心,窗口是邊長為2S的正方形,如圖5.46所示。圖5.46一點(diǎn)透視投影根據(jù)相似三角形對應(yīng)邊成比例的關(guān)系,有于是(5-24)利用齊次坐標(biāo),與三維幾何變換類似,將該過程寫成變換矩陣形式為事實(shí)上,把公式(5-25)的結(jié)果進(jìn)行齊次坐標(biāo)的規(guī)范化后得:這與公式(5-24)的結(jié)果相一致。所以,式(5-25)就是一點(diǎn)透視的變換。5.7.2視圖變換引入目坐標(biāo)和規(guī)格化設(shè)備坐標(biāo)后,把世界坐標(biāo)(用戶坐標(biāo))中三維物體上點(diǎn)的坐標(biāo)變換為設(shè)備坐標(biāo)系里視區(qū)內(nèi)的像素的變換,稱為視圖變換。視圖變換包括順次進(jìn)行的觀察變換、裁剪坐標(biāo)變換、透視變換和視區(qū)變換等四個(gè)變換,即視圖變換是由觀察變換、裁剪坐標(biāo)變換、透視變換和視區(qū)變換依次構(gòu)成的復(fù)合變換,如圖5.47所示。其中觀察方向由a,b,c

三個(gè)方向數(shù)決定。圖5.47視圖變換示意圖圖5.48觀察變換與透視變換1.觀察變換觀察變換就是將世界坐標(biāo)系定義的三維立體,通過平移、旋轉(zhuǎn)等復(fù)合變換,變換到目坐標(biāo)系,即在目坐標(biāo)里描述三維立體。用齊次坐標(biāo)來表示觀察變換,其表達(dá)式為[xe

ye

ze

1]=[x

y

z1]·Te

(5-26)

圖5.49觀察變換2.透視變換從坐標(biāo)變換角度來說,透視變換就是將三維立體各點(diǎn)在目坐標(biāo)系中的坐標(biāo),變換到觀察平面(或稱透視投影平面)中去的過程。在5.7.1節(jié)中已說明過,在透視變換中,一般把觀察平面坐標(biāo)系的原點(diǎn)設(shè)在觀察平面的窗口的中心,并假定目坐標(biāo)系的ze軸通過該中心且垂直于觀察平面(如圖5.48、圖5.50所示),如果把觀察平面設(shè)置在距離視點(diǎn)E為D處,此時(shí)三維立體中某一點(diǎn)Pe(xe,ye,

ze),它在觀察平面上的透視投影為點(diǎn)P*(u,v,d)(此時(shí)d=D),它由觀察平面上的(u,v)值來確定。由圖5.48中的兩相似三角形的幾何關(guān)系可得因此(5-28)圖5.50觀察錐如果以窗口半長S除式(5-28),得(5-29)3.視區(qū)變換通過透視變換在觀察平面的單位窗口(即邊長為1的窗口)中得到的投影點(diǎn)PN(u*,v*),是一種規(guī)格化設(shè)備坐標(biāo),要將像點(diǎn)PN(u*,v*)變換到具體的顯示器的視區(qū)內(nèi),從而產(chǎn)生一個(gè)顯示像素時(shí),還必須進(jìn)行由規(guī)格化設(shè)備坐標(biāo)到物理設(shè)備坐標(biāo)的變換,即變換到屏幕坐標(biāo)系,這一變換的效果相當(dāng)于將單位窗口內(nèi)的像映射為顯示屏幕視區(qū)內(nèi)的圖形,如前所述,通常稱這種變換為視區(qū)變換。

設(shè)顯示器的屏幕坐標(biāo)系及視區(qū)位置關(guān)系如圖5.51所示。圖5.51屏幕坐標(biāo)系及視區(qū)位置關(guān)系4.小結(jié)綜上所述,為了產(chǎn)生三維物體的透視線架圖,首先要根據(jù)視點(diǎn)在用戶坐標(biāo)系中的位置和觀察方向建立目坐標(biāo)系,并對三維物體上的點(diǎn)通過觀察變換用目坐標(biāo)系表示,然后按已定義的比值D/S所規(guī)定的觀察范圍進(jìn)行裁剪坐標(biāo)變換,剪去舍棄部分,保留的三維物體上的點(diǎn),通過透視投影,使在觀察平面上產(chǎn)生相應(yīng)的像點(diǎn),然后根據(jù)繪圖機(jī)和顯示器的設(shè)備坐標(biāo)及指定顯示區(qū)域,將這些像點(diǎn)轉(zhuǎn)換為屏幕坐標(biāo)系上的顯示像素,并在相應(yīng)像素之間畫線連接,便生成三維物體的透視線架圖,整個(gè)變換過程,可用三維物體輸出流水線圖5.52表示出來。圖5.52三維物體輸出流水線圖5.7.3視圖變換舉例例如圖5.53(a)所示,從物體坐標(biāo)空間一視點(diǎn)E(6,8,7.5)觀察六面體ABCDEFGH,觀察方向指向坐標(biāo)原點(diǎn),試按視圖變換求該六面體ABCDEFGH在顯示器屏幕視區(qū)中產(chǎn)生的透視線架圖(不要求編程,但要根據(jù)計(jì)算結(jié)果畫出所生成的透視線架圖)。圖5.53六面體及其透視線架圖(a)六面體;(b)六面體的透視線架圖已知D/S=2,Vcx=320,

Vcy=100,

Vsx=319,

Vsy=99(光柵單位)。設(shè)物體的點(diǎn)集矩陣為表5.1六面體各頂點(diǎn)的裁剪坐標(biāo)值

表5.2光柵單位表示的各點(diǎn)屏幕坐標(biāo)5.8參數(shù)圖形的幾何變換5.8.1圓錐曲線的幾何變換設(shè)圓錐曲線的二次方程是Ax2+Bxy+Cy2+Dx+Ey+F=0,其相應(yīng)的矩陣表達(dá)式是簡記為XSXT=0。1.平移變換若對圓錐曲線進(jìn)行平移變換,平移矩陣是則平移后的圓錐曲線矩陣方程是XTtSTTtXT=0。2.旋轉(zhuǎn)變換若對圓錐曲線相對坐標(biāo)原點(diǎn)作旋轉(zhuǎn)變換,旋轉(zhuǎn)變換矩陣是則旋轉(zhuǎn)后的圓錐曲線矩陣方程是XTrSTTrXT=0。3.比例變換若對圓錐曲線相對(m,n)點(diǎn)作比例變換,則比例變換矩陣為則變換后圓錐曲線的矩陣方程是

XTtTsT-1tS(T-1t)TTTsTtXT=05.8.2參數(shù)曲線、曲面的幾何變換1.平移變換若指定一個(gè)平移矢量t,對曲線平移t,即對曲線上的每一點(diǎn)P都平移t。平移后的點(diǎn)P*滿足

P*=P+t

對于參數(shù)曲線和曲面的幾何系數(shù)矩陣B和代數(shù)系數(shù)矩陣A,可以直接實(shí)現(xiàn)平移變換,即有

A*=A+MT,B*=B+T,T=[t

t

00]T

B*是經(jīng)過平移后參數(shù)曲線的幾何系數(shù)矩陣,變換結(jié)果如圖5.54所示。因?yàn)殡p三次曲面片的系數(shù)矩陣是4×4的,故其平移變換矩陣為圖5.54幾何系數(shù)矩陣變換結(jié)果圖2.旋轉(zhuǎn)變換形體的旋轉(zhuǎn)變換,有繞坐標(biāo)軸的旋轉(zhuǎn),或繞空間任意一條直線為軸的旋轉(zhuǎn)等多種形式。若令Rθ表示繞x軸旋轉(zhuǎn)θ角,Rβ表示繞y軸旋轉(zhuǎn)β角,Rγ表示繞z軸旋轉(zhuǎn)γ角,則點(diǎn)P分別繞x、y、z軸旋轉(zhuǎn)θ、β、γ角的變換公式分別是此時(shí),對于參數(shù)曲線或曲面的代數(shù)系數(shù)矩陣和幾何系數(shù)矩陣的變換公式是

A*=A·R,B*=B·R點(diǎn)P依次繞x、y、z軸旋轉(zhuǎn)θ、β、γ角的變換公式是3.比例變換若設(shè)比例系數(shù)為s,對參數(shù)曲線作變比例變換,只要對幾何系數(shù)矩陣B作變比例變換即可,也就是

B*=sB

或者B*=[sP0

sP1

sPu0

sPu1]T

圖5.55中定義的曲線P(μ)和P*(μ)是相似的,它們相對原點(diǎn)作了變比例變換。圖5.56所示參數(shù)曲線對Q點(diǎn)作變比例變換的情況,其變換表達(dá)式是

B*=sB+Ts

其中Ts=[-Q(s-1)

-Q(s-1)

0

0]T圖5.55參數(shù)曲線相對于原點(diǎn)的比例變換圖5.56參數(shù)曲線相對于空間一點(diǎn)Q的比例變換4.反射變換反射變換可用下式表示:

B*=B·Rf

其中(1)對x=0、y=0、z=0的平面分別作反射變換,則Rf分別為(2)對x軸、y軸、z軸分別作反射變換,則Rf分別為(3)對坐標(biāo)原點(diǎn)作反射變換,則圖5.57表示對在xOy平面上的曲線作反射變換的例子,圖5.58(a)表示一條參數(shù)曲線對空間任一點(diǎn)Q作反射變換的情況,其中

P*=P+2(Q-P),P*u=-Pu

對應(yīng)的幾何系數(shù)矩陣B*為

B*=[2Q-P02Q-P1-Pu0

-Pu1]圖5.57已知參數(shù)曲線在xOy平面上作各種反射變換圖5.58參數(shù)曲線對空間一點(diǎn)作反射變換圖5.58(b)表示一條參數(shù)曲線對任一點(diǎn)Q作反射放大變換的情況,放大系數(shù)為m,其幾何系數(shù)矩陣表達(dá)式是

B*=[mQ-(m-1)P0

mQ-(m-1)P1-mPu0-mPu1]T5.9圖形變換實(shí)例

編寫一個(gè)繪制如圖5.59所示的房屋的透視線架圖的VC++程序。圖5.59給定的房屋已知房屋各頂點(diǎn)在用戶坐標(biāo)系中的點(diǎn)集矩陣PS為了從不同觀察方向透視(觀察)它,使用球面坐標(biāo)E(r,θ,φ)表示視點(diǎn)E(e1,e2,e3)。直角坐標(biāo)系與球面坐標(biāo)系之間的關(guān)系如下:e1=rcosθsinφe2=r

sinθsinφe3=r

cosφ(5-43)其中圖5.60視圖變換后房屋的透視線架圖習(xí)題1.己知四邊形ABCD各頂點(diǎn)的坐標(biāo)為A(0,0)、B(20,0),C(20,15),D(0,15),試求:(1)x方向縮小一半,y方向增長1倍后的坐標(biāo);(2)將ABCD比例放大原

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論