唐飛 楊偉 查長(zhǎng)禮
摘要:三維圖形變換需要對(duì)形體頂點(diǎn)的齊次坐標(biāo)矩陣進(jìn)行復(fù)合計(jì)算,計(jì)算繁瑣且變換過(guò)程晦澀抽象,使用傳統(tǒng)的程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)圖形變換的可視化非常困難。因?yàn)樵谌S圖形變換中引入MATLAB工具,利用其強(qiáng)大的矩陣運(yùn)算能力和豐富的圖形處理能力,能夠快速準(zhǔn)確地計(jì)算矩陣和輸出圖形,清晰直觀地展現(xiàn)圖形變換的方法和過(guò)程。
關(guān)鍵詞:三維圖形變換;矩陣;MATLAB;投影;計(jì)算機(jī)圖形學(xué)
中圖分類號(hào):TH126.2文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1672-1098(2016)02-0036-04
Abstract:A very complex calculation of homogeneous coordinate vertex matrix is needed in 3D graphic transformations. The process of calculation is complicated and obscure. It is very difficult to realize 3D visualization by using the traditional programming language. MATLAB is introduced into 3D graphic transformations. By using its ability of powerful matrix operation and rich graphic processing, we can calculate matrix and output graphic rapidly, and show the method and process of graphic transformation clearly and intuitively.
Key words:3D graphics transformation; matrix; MATLAB; projection; computer graphics
幾何圖形是CAD系統(tǒng)中的基本元素,無(wú)論以何種方式建立的模型,最終都需要轉(zhuǎn)換為幾何圖形進(jìn)行顯示和輸出。幾何圖形由頂點(diǎn)坐標(biāo)、頂點(diǎn)間的拓?fù)潢P(guān)系和組成圖形的線面模型共同決定[1]。圖形變換是計(jì)算機(jī)圖形處理的基礎(chǔ),是計(jì)算機(jī)圖形學(xué)的重要組成部分,圖形的處理、顯示和形體構(gòu)造等都需要使用到圖形變換。圖形變換的實(shí)質(zhì)是對(duì)圖形頂點(diǎn)的坐標(biāo)進(jìn)行變換,這種變換不改變圖形各元素的屬性和它們之間的拓?fù)潢P(guān)系,僅改變各點(diǎn)的坐標(biāo)。
三維圖形變換包括比例變換、對(duì)稱變換、錯(cuò)切變換、平移變換、旋轉(zhuǎn)變換、投影變換和透視變換等基本變換,更復(fù)雜的變換可以通過(guò)基本變換組合而成。每一個(gè)變換都可以表示為矩陣計(jì)算的形式,通過(guò)矩陣的相乘構(gòu)造更復(fù)雜的變換[2]。在圖形變換中需要進(jìn)行大量的矩陣運(yùn)算,計(jì)算繁瑣且變換過(guò)程晦澀抽象,使用C語(yǔ)言等傳統(tǒng)的計(jì)算機(jī)語(yǔ)言實(shí)現(xiàn)可視化程序設(shè)計(jì)十分困難。因此在圖形
變換中使用MATLAB軟件,利用其強(qiáng)大的矩陣運(yùn)算能力和豐富的圖形處理能力,快速準(zhǔn)確地進(jìn)行矩陣計(jì)算和圖形輸出,直觀地展現(xiàn)圖形變換的方法和過(guò)程。
1三維圖形變換矩陣
三維空間的點(diǎn)具有三個(gè)坐標(biāo),可以用矩陣的行向量[x y z]或列向量[x y z]T來(lái)表示,稱為點(diǎn)的位置向量,點(diǎn)的位置向量的集合構(gòu)成位置矩陣。矩陣記錄了三維空間的形體的頂點(diǎn)坐標(biāo)信息,可以由此構(gòu)建三維形體的數(shù)學(xué)模型。
為了對(duì)三維形體進(jìn)行圖形變換,需要引入齊次坐標(biāo)的概念。將n維空間的點(diǎn)用n+1維坐標(biāo)表示,即為該點(diǎn)的齊次坐標(biāo)。例如將點(diǎn)的三維坐標(biāo)(x, y, z)表示為四維坐標(biāo)(H×x, H×y, H×z, H),當(dāng)H=1時(shí)為齊次坐標(biāo)的規(guī)格化表示形式[3]。齊次坐標(biāo)為圖形變換提供統(tǒng)一的矩陣運(yùn)算基礎(chǔ),同時(shí)也可以方便地表示無(wú)窮遠(yuǎn)點(diǎn)等通常難以處理的信息。
空間點(diǎn)的三維坐標(biāo)(x, y, z)使用齊次坐標(biāo)的規(guī)格化表示為(x, y, z, 1)。坐標(biāo)變換可以對(duì)點(diǎn)的齊次坐標(biāo)集合構(gòu)成的矩陣進(jìn)行乘法運(yùn)算來(lái)實(shí)現(xiàn),形如[x, y, z, 1] = [x, y, z, 1]×T,T為變換矩陣,得到變換后的坐標(biāo)矩陣。三維圖形變換就是對(duì)圖形頂點(diǎn)的坐標(biāo)進(jìn)行矩陣變換,變換矩陣T是一個(gè)4×4的矩陣,形如abcp
2投影變換的MATLAB實(shí)現(xiàn)
在CAD系統(tǒng)的圖形顯示和輸出中,三維形體需要投影到二維平面上,才能將圖形在屏幕上顯示和打印輸出。“投影”是三維形體的二維表示方法,投影變換能夠?qū)⑷S形體投射到平面上,生成二維平面圖形。通常使用的投影圖主要有三視圖、類似“三維”性質(zhì)的軸測(cè)圖和立體感強(qiáng)的透視圖[4]。通過(guò)MATLAB軟件進(jìn)行矩陣運(yùn)算和圖形顯示,可以形象直觀地展現(xiàn)出變換的過(guò)程和最終結(jié)果。
2.1正投影變換
在工程制圖中需要采用國(guó)家標(biāo)準(zhǔn)規(guī)定的三視圖來(lái)表達(dá)形體。利用垂直于坐標(biāo)平面的投射線將三維形體分別投射到三個(gè)坐標(biāo)平面,即為正投影變換,得到形體的主視圖、俯視圖和左視圖。
已知三維棱臺(tái)的各頂點(diǎn)坐標(biāo),使用MATLAB建立頂點(diǎn)的齊次坐標(biāo)矩陣M,創(chuàng)建棱臺(tái)的線框模型,根據(jù)坐標(biāo)矩陣M繪制棱臺(tái)的線框模型,如圖1所示。
對(duì)棱臺(tái)的三維模型進(jìn)行正投影變換得到三視圖,主視圖坐標(biāo)變換矩陣為M×TV,俯視圖坐標(biāo)變換矩陣為M×TH,左視圖坐標(biāo)變換矩陣為M×TW。根據(jù)圖形的大小和位置選擇其中l(wèi)、m、n的數(shù)值,在MATLAB中使用變換后的矩陣?yán)L制正投影圖,如圖2所示。
2.2軸測(cè)投影變換
將三維形體連同直角坐標(biāo)系沿不平行于坐標(biāo)平面的方向,用平行投影法投射到投影面上所得的圖形,就是軸測(cè)投影圖。軸測(cè)圖在一個(gè)投影面上同時(shí)反映出物體三個(gè)坐標(biāo)面的信息,更接近于人的視覺(jué)觀察習(xí)慣,所得圖形形象、逼真,富有立體感,在工程設(shè)計(jì)和生產(chǎn)中常用作輔助圖樣,用來(lái)彌補(bǔ)正投影視圖的不足。
正軸測(cè)投影變換:以正平面作為投影平面,先將形體繞Z軸逆時(shí)針旋轉(zhuǎn)γ角,再繞X軸順時(shí)針旋轉(zhuǎn)α角,然后向V面投影,得到正軸測(cè)投影圖。其變換矩陣為旋轉(zhuǎn)、投影變換組成的復(fù)合矩陣TZ=T旋轉(zhuǎn)×T旋轉(zhuǎn)×T投影:
對(duì)棱臺(tái)的三維模型進(jìn)行軸測(cè)投影變換,得到軸測(cè)投影圖,正等軸測(cè)圖坐標(biāo)變換矩陣為M×TZ,斜二軸測(cè)圖坐標(biāo)變換矩陣為M×TX。選擇合適的α和γ角度,以及d和f的數(shù)值,在MATLAB中使用變換后的矩陣?yán)L制軸測(cè)投影圖,如圖3和圖4所示。
2.3透視變換
透視變換產(chǎn)生三維形體在不同視點(diǎn)位置和視線方向下的投影圖。透視圖從一個(gè)視點(diǎn)透過(guò)一個(gè)平面觀察物體,其視線不平行,給人產(chǎn)生一種漸遠(yuǎn)漸小的深度感。透視圖采用中心投影法繪制,將投射的視線與投影平面相截交即得到透視圖[5]。通過(guò)投影中心將三維形體投影到平面上的變換稱為透視變換。為了使透視圖立體感強(qiáng)、圖像逼真,要先對(duì)形體進(jìn)行平移、旋轉(zhuǎn)等操作,然后進(jìn)行中心投影,得到逼真的透視投影圖。
將形體繞Z軸旋轉(zhuǎn)γ角,再相對(duì)X、Y、Z三個(gè)坐標(biāo)軸平移l、m、n距離,然后使用兩點(diǎn)透視矩陣進(jìn)行坐標(biāo)變換,最后將向V面作正投影,得到棱臺(tái)的透視圖。其變換矩陣為旋轉(zhuǎn)、平移、透視、投影變換組成的復(fù)合矩陣TT=T旋轉(zhuǎn)×T平移×T透視×T投影,該矩陣還需正常化后得到透視投影的變換矩陣。
對(duì)棱臺(tái)的三維模型進(jìn)行透視變換,得到透視投影圖,坐標(biāo)變換矩陣為M×TT。選擇合適的γ值以及p、q、r的數(shù)值,在MATLAB中使用變換后的矩陣?yán)L制透視投影圖,如圖5所示。
3總結(jié)
三維圖形變換包括了幾何變換和投影變換等,是計(jì)算機(jī)圖形處理領(lǐng)域中的重要內(nèi)容,矩陣運(yùn)算是進(jìn)行多種圖形變換的統(tǒng)一方法。圖形變換時(shí)需要對(duì)三維形體頂點(diǎn)的齊次坐標(biāo)矩陣進(jìn)行復(fù)合運(yùn)算,計(jì)算過(guò)程繁瑣且變換過(guò)程晦澀抽象,使用傳統(tǒng)的程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)變換過(guò)程的三維可視化非常困難。在計(jì)算機(jī)圖形變換中引入MATLAB工具,利用其強(qiáng)大的矩陣運(yùn)算能力和豐富的圖形處理能力,快速準(zhǔn)確地進(jìn)行矩陣計(jì)算和圖形輸出,清晰直觀地展現(xiàn)出圖形變換的方法和過(guò)程,降低了學(xué)習(xí)的難度,增強(qiáng)了對(duì)圖形變換方法的深層次理解,并將研究的重心轉(zhuǎn)移到概念的理解和原理的運(yùn)用上,有效地提高了系統(tǒng)開發(fā)的效率。
參考文獻(xiàn):
[1]王隆太,朱燈林,戴國(guó)洪.機(jī)械CAD/CAM技術(shù)[M].第3版.北京:機(jī)械工業(yè)出版社,2013:8-200.
[2]劉極峰.計(jì)算機(jī)輔助設(shè)計(jì)與制造[M].北京:高等教育出版社,2011:5-150.
[3]姚英學(xué),蔡穎.計(jì)算機(jī)輔助設(shè)計(jì)與制造[M].北京:高等教育出版社,2011:10-50.
[4]何援軍.投影與任意軸測(cè)圖的生成——論圖形變換和投影的若干問(wèn)題之二[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2005,17(4):729-733.
[5]何援軍.透視和透視投影變換——論圖形變換和投影的若干問(wèn)題之三[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2005,17(4):734-739.
[6]田秀萍,高慧.三維圖形變換的統(tǒng)一矩陣[J].太原理工大學(xué)學(xué)報(bào),1999,20(2):130-132.
[7]連瑞梅.三維圖形的幾何變換及其變換矩陣[J].濰坊學(xué)院學(xué)報(bào),2005,5(4):76-78.
[8]馬麗麗,張光輝,李杏粉.矩陣在計(jì)算機(jī)三維圖形變換中的應(yīng)用[J].石家莊鐵路職業(yè)技術(shù)學(xué)院學(xué)報(bào),2008,7(3):42-47.
(責(zé)任編輯:李麗范君)