計(jì)算機(jī)輔助設(shè)計(jì)與制造:第二章 計(jì)算機(jī)圖形處理技術(shù)_第1頁
計(jì)算機(jī)輔助設(shè)計(jì)與制造:第二章 計(jì)算機(jī)圖形處理技術(shù)_第2頁
計(jì)算機(jī)輔助設(shè)計(jì)與制造:第二章 計(jì)算機(jī)圖形處理技術(shù)_第3頁
計(jì)算機(jī)輔助設(shè)計(jì)與制造:第二章 計(jì)算機(jī)圖形處理技術(shù)_第4頁
計(jì)算機(jī)輔助設(shè)計(jì)與制造:第二章 計(jì)算機(jī)圖形處理技術(shù)_第5頁
已閱讀5頁,還剩122頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第二章計(jì)算機(jī)圖形處理技術(shù)本章學(xué)習(xí)目標(biāo)

掌握二維圖形處理技術(shù)基礎(chǔ)知識(shí)了解三維圖形變換方法理解圖形消隱技術(shù)和光照處理技術(shù)原理學(xué)習(xí)二維裁剪技術(shù)重點(diǎn):二維圖形幾何變換學(xué)習(xí)內(nèi)容概述

圖形變換圖形消隱技術(shù)

圖形的光照處理技術(shù)

圖形裁剪技術(shù)

OPENGL介紹學(xué)習(xí)內(nèi)容概述

圖形變換

圖形消隱技術(shù)

圖形的光照處理技術(shù)

圖形裁剪技術(shù)OPENGL介紹1.概述

構(gòu)成圖形的要素有兩個(gè):

幾何要素——刻畫形狀的點(diǎn)、線、面、體…

非幾何要素——反映物體表面屬性或材質(zhì)的明暗、灰度、色彩…

計(jì)算機(jī)圖形處理是利用計(jì)算機(jī)高速運(yùn)算能力和實(shí)時(shí)顯示功能處理各類圖形信息的技術(shù)。包括圖形的存儲(chǔ)、生成、顯示、輸出、以及圖形變換、組合、分解和運(yùn)算,控制繪圖儀等圖形輸出設(shè)備完成繪圖…

計(jì)算機(jī)圖形處理與數(shù)學(xué)中研究圖形不同,比數(shù)學(xué)中描述的圖形更為具體,但仍是一種抽象,因?yàn)橐恢徊AПc一只塑料杯只要形狀一樣,顏色一樣,透明度一樣,則從計(jì)算機(jī)圖形學(xué)的觀點(diǎn)來看,它們的圖形是一樣的。并具有一定的明暗、灰度、色彩、紋理、透明性、線型、線寬…

如:幾何方程表達(dá)的圖形滿足這個(gè)方程(形狀信息),學(xué)習(xí)內(nèi)容概述

圖形變換

圖形消隱技術(shù)

圖形的光照處理技術(shù)

圖形裁剪技術(shù)OPENGL介紹

2.圖形變換坐標(biāo)系統(tǒng)

窗口-視區(qū)變換

幾何變換基礎(chǔ)

二維圖形基本幾何變換二維圖形的復(fù)合變換三維圖形的幾何變換

圖形變換指對(duì)圖形的幾何信息經(jīng)過幾何變換后產(chǎn)生新的圖形,提出的構(gòu)造或修改圖形的方法。除圖形的位置變動(dòng)外,可以將圖形放大或縮小,或者對(duì)圖形作不同方向的拉伸來使其扭曲變形…

坐標(biāo)系統(tǒng)

從定義一個(gè)零件的幾何外形到圖形設(shè)備上生成相應(yīng)圖形,需要建立相應(yīng)的坐標(biāo)系統(tǒng)來描述,并通過坐標(biāo)變換來實(shí)現(xiàn)圖形的表達(dá)2.圖形變換世界坐標(biāo)系(WorldCoordinateSystem)設(shè)備坐標(biāo)系(DeviceCoordinateSystem)

規(guī)格化設(shè)備坐標(biāo)系(NormalizedDeviceCoordinateSystem)坐標(biāo)系統(tǒng)

從定義一個(gè)零件的幾何外形到圖形設(shè)備上生成相應(yīng)圖形,需要建立相應(yīng)的坐標(biāo)系統(tǒng)來描述,并通過坐標(biāo)變換來實(shí)現(xiàn)圖形的表達(dá)

實(shí)物物體所處空間中(二維或三維空間)用以協(xié)助用戶定義圖形所表達(dá)物體幾何尺寸的坐標(biāo)系,也稱用戶坐標(biāo)系,多用右手直角坐標(biāo)系理論上,世界坐標(biāo)系是無限大且連續(xù)的,即它的定義域?yàn)閷?shí)數(shù)域(-∞,+∞)。

O

X

Y

O

XYZ2.圖形變換世界坐標(biāo)系(WorldCoordinateSystem)坐標(biāo)系統(tǒng)

從定義一個(gè)零件的幾何外形到圖形設(shè)備上生成相應(yīng)圖形,通常需要建立相應(yīng)的坐標(biāo)系統(tǒng)來描述,并通過坐標(biāo)變換來實(shí)現(xiàn)圖形的表達(dá)

與圖形輸出設(shè)備相關(guān)聯(lián),用以定義圖形幾何尺寸及位置的坐標(biāo)系,也稱物理坐標(biāo)系設(shè)備坐標(biāo)系是一個(gè)二維平面坐標(biāo)系,通常使用左手直角坐標(biāo)系

度量單位:象素(顯示器)或步長(zhǎng)(繪圖儀)如顯示器通常為640×400、1024×768象素,繪圖儀的步長(zhǎng)為1μm、10μm等,于是設(shè)備坐標(biāo)系的定義域是整數(shù)域而且是有界的。

O

X

Y(顯示器)2.圖形變換設(shè)備坐標(biāo)系(DeviceCoordinateSystem)

坐標(biāo)系統(tǒng)

從定義一個(gè)零件的幾何外形到圖形設(shè)備上生成相應(yīng)圖形,通常需要建立相應(yīng)的坐標(biāo)系統(tǒng)來描述,并通過坐標(biāo)變換來實(shí)現(xiàn)圖形的表達(dá)。

人為規(guī)定的假想設(shè)備坐標(biāo)系,與設(shè)備無關(guān)

規(guī)格化設(shè)備坐標(biāo)系坐標(biāo)軸方向及原點(diǎn)與設(shè)備坐標(biāo)系相同,但其最大工作范圍的坐標(biāo)值規(guī)范化為1

。以屏幕坐標(biāo)為例,其原點(diǎn)仍是左上角(或左下角),坐標(biāo)為(0.0,0.0),距原點(diǎn)最遠(yuǎn)的屏幕右下角(或右上角),其坐標(biāo)是(1.0,1.0)。對(duì)于既定的圖形輸出設(shè)備來說,其規(guī)格化設(shè)備坐標(biāo)系與設(shè)備坐標(biāo)系相差一個(gè)固定倍數(shù),即相差該設(shè)備的分辨率。當(dāng)開發(fā)一個(gè)應(yīng)用于不同分辨率設(shè)備的圖形軟件時(shí),首先將輸出圖形轉(zhuǎn)換為規(guī)格化設(shè)備坐標(biāo)系,以控制圖形在設(shè)備顯示范圍內(nèi)的相對(duì)位置。當(dāng)轉(zhuǎn)換到具體的不同輸出設(shè)備時(shí),只須將圖形的規(guī)格化坐標(biāo)再乘以相應(yīng)的設(shè)備分辨率即可。這樣使圖形軟件與圖形設(shè)備隔離開,增加了圖形軟件的可移植性。

規(guī)格化設(shè)備坐標(biāo)系(NormalizedDeviceCoordinateSystem)2.圖形變換窗口-視區(qū)變換窗口:用戶坐標(biāo)系(世界坐標(biāo)系)中定義的確定顯示內(nèi)容的一個(gè)矩形區(qū)域

工程設(shè)計(jì)中,需要突出圖形的某一部分而用一個(gè)局部視圖單獨(dú)畫出來。在計(jì)算機(jī)圖形學(xué)里,如何把指定的局部圖形從整體中分離出來,并對(duì)這部分圖形進(jìn)行清晰、正確的顯示,我們把“窗口”這個(gè)詞引用到計(jì)算機(jī)圖形學(xué)中來,即通過在整圖中開“窗口”的方法解決上述問題。2.圖形變換視區(qū):設(shè)備坐標(biāo)系(通常是圖形顯示器)中定義的一個(gè)用于輸出所要顯示的圖形和文字的矩形區(qū)域窗口-視區(qū)變換

用矩形左下角點(diǎn)坐標(biāo)(XW1,YW1)和右上角點(diǎn)坐標(biāo)(XW2,YW2)確定窗口的大小和位置,只有在這個(gè)區(qū)域內(nèi)的圖形在設(shè)備坐標(biāo)系下輸出,窗口外的部分則被裁掉(XW1,YW1)(XW2,YW2)2.圖形變換

改變窗口的大小、位置和比例,用戶可以方便地觀察局部圖形,控制圖形的大小。除矩形窗口之外,還可以定義圓形窗口,多邊形窗口等異形窗口,由于矩形窗口定義方便,處理也較為簡(jiǎn)單,是各種圖形軟件常用的窗口形式。窗口窗口-視區(qū)變換視區(qū)若將窗口中的圖形顯示在屏幕視區(qū)范圍內(nèi),則視區(qū)決定了窗口內(nèi)的圖形在屏幕上顯示的位置和大小一個(gè)屏幕上定義四個(gè)視區(qū),同時(shí)輸出一個(gè)鼠標(biāo)的三視圖和軸測(cè)圖

2.圖形變換

視區(qū)是一個(gè)有限的整數(shù)域,它應(yīng)小于等于屏幕區(qū)域,而定義小于屏幕的視區(qū)是非常有用的,因?yàn)檫@樣可以在同一屏幕上定義多個(gè)視區(qū),用來同時(shí)顯示不同的圖形信息。窗口-視區(qū)變換

窗口和視區(qū)是在不同的坐標(biāo)系中定義的,窗口中的圖形信息送到視區(qū)輸出前,需進(jìn)行坐標(biāo)變換,即把用戶坐標(biāo)系的坐標(biāo)值轉(zhuǎn)化為設(shè)備(屏幕)坐標(biāo)系的坐標(biāo)值,此變換即窗口—視區(qū)變換

(XV,YV)

視區(qū)窗口(XW,YW)

(XV1,YV1)

(XV2,YV2)

(Xw1,Yw1)

(Xw2,Yw2)

YYooxxXV=XV1

+(XW

-XW1)YV=YV1

+(YW

-YW1)XW=XW1+(XV-XV1)YW=YW1

+(YV-YV1)

2.圖形變換窗口-視區(qū)變換(XV,YV)

視區(qū)窗口(XW,YW)

(XV1,YV1)

(XV2,YV2)

(Xw1,Yw1)

(Xw2,Yw2)

YYooxxXV=XV1

+(XW

-XW1)YV=YV1

+(YW

-YW1)XW=XW1+(XV-XV1)YW=YW1

+(YV-YV1)

2.圖形變換用于從窗口的用戶坐標(biāo)值求對(duì)應(yīng)的視區(qū)設(shè)備坐標(biāo)值;用于從視區(qū)的設(shè)備坐標(biāo)值求對(duì)應(yīng)的窗口中的用戶坐標(biāo)值。

(1)不是窗口中的內(nèi)容,就不會(huì)在視區(qū)中出現(xiàn)的;(2)假如要圖像不失真,應(yīng)使窗口的長(zhǎng)與寬之比等于視區(qū)的長(zhǎng)與寬之比;幾何變換基礎(chǔ)

圖形由圖形的頂點(diǎn)坐標(biāo)、頂點(diǎn)之間的拓?fù)潢P(guān)系以及組成圖形的面和線的表達(dá)模型所決定

任何一個(gè)圖形都可以認(rèn)為是點(diǎn)之間的連線構(gòu)成

對(duì)一個(gè)圖形作幾何變換,實(shí)際上就是對(duì)一系列點(diǎn)進(jìn)行變換點(diǎn)和圖形的表示

二維平面內(nèi),一個(gè)點(diǎn)通常用坐標(biāo)(x,y)來表示,矩陣形式為:

三角形的三個(gè)頂點(diǎn)坐標(biāo)a(x1,y1),b(x2,y2),c(x3,y3),用矩陣表示:2.圖形變換點(diǎn)和圖形的齊次坐標(biāo)表示

齊次坐標(biāo)是將一個(gè)n維空間的點(diǎn)用n+1維,即附加一個(gè)坐標(biāo)表示二維點(diǎn)[xy]的齊次坐標(biāo)通常用三維坐標(biāo)[HxHyH]表示三維點(diǎn)[xyz]的齊次坐標(biāo)通常用四維坐標(biāo)[HxHyHzH]表示…

齊次坐標(biāo)系中,附加的坐標(biāo)H稱為比例因子

Hx=H×x、Hy=H×y、Hz=H×zH的取值是任意的,任何一個(gè)點(diǎn)可用許多組齊次坐標(biāo)來表示,

如:二維點(diǎn)[32]可表示為[321],[642]…

當(dāng)取H=1時(shí),稱為齊次坐標(biāo)的規(guī)格化形式

四邊形用齊次坐標(biāo)可表示:

2.圖形變換采用齊次坐標(biāo)表示的主要優(yōu)點(diǎn):(1)為幾何圖形的二維、三維甚至高維空間的坐標(biāo)變換提供統(tǒng)一的矩陣運(yùn)算方法,并可以方便地將它們組合在一起進(jìn)行組合變換

平移、比例和旋轉(zhuǎn)等變換的組合變換處理形式不統(tǒng)一,將很難把它們級(jí)聯(lián)在一起(2)無窮遠(yuǎn)點(diǎn)的處理比較方便。

如,對(duì)二維的齊次坐標(biāo)[ABH],當(dāng)H→0時(shí),表示直線上Ax+By=0的連續(xù)點(diǎn)(x,y)逐漸趨近于無窮點(diǎn)

三維情況下,利用齊次坐標(biāo)表示視點(diǎn)在世界坐標(biāo)系原點(diǎn)時(shí)的投影變換2.圖形變換變換矩陣

設(shè)一個(gè)幾何圖形的齊次坐標(biāo)矩陣為A,另有一個(gè)矩陣T,則由矩陣乘法運(yùn)算可得一新矩陣B:

B=A?T矩陣B是矩陣A經(jīng)變換后的圖形矩陣

用來對(duì)原圖形施行坐標(biāo)變換矩陣T

稱為變換矩陣

根據(jù)矩陣運(yùn)算原理,二維圖形變換矩陣T為3×3階矩陣,三維圖形的變換矩陣T為4×4階矩陣通過矩陣的乘法可以對(duì)圖形進(jìn)行諸如比例、對(duì)稱、旋轉(zhuǎn)、平移、投影等各種變換圖形變換的主要工作就是求解變換矩陣T

2.圖形變換二維圖形的基本幾何變換平移變換

比例變換

對(duì)稱變換

旋轉(zhuǎn)變換

錯(cuò)切變換

歸納

二維圖形幾何變換主要有:2.圖形變換平移變換

圖形的每一個(gè)點(diǎn)在給定的方向上移動(dòng)相同距離所得的變換稱為平移變換

圖形在x軸方向的平移量為l,

在y軸方向的平移量為m,

則坐標(biāo)點(diǎn)的平移變換:==2.圖形變換比例變換(1)a=e=1時(shí),為恒等比例變換,即圖形不變

(2)a=e>1時(shí),圖形沿兩個(gè)坐標(biāo)軸方向等比放大

(3)a=e<1時(shí),圖形沿兩個(gè)坐標(biāo)軸方向等比縮小

(4)a≠e時(shí),圖形沿兩個(gè)坐標(biāo)軸方向進(jìn)行非等比變換,稱為畸變

圖形中的每一個(gè)點(diǎn)以坐標(biāo)原點(diǎn)為中心,按相同的比例進(jìn)行放大或縮小所得到的變換稱為比例變換

圖形在x,y兩個(gè)坐標(biāo)方向放大或縮小比例分別為a和e,

則坐標(biāo)點(diǎn)的比例變換:2.圖形變換對(duì)稱變換

對(duì)稱變換也稱反射變換,指變換前后的點(diǎn)對(duì)稱于x軸、y軸、某一直線或點(diǎn)(1)以x軸為對(duì)稱線的對(duì)稱變換

變換后,圖形點(diǎn)集的x坐標(biāo)值不變,

y坐標(biāo)值不變,符號(hào)相反2.圖形變換(2)以Y軸為對(duì)稱線的對(duì)稱變換

變換后,圖形點(diǎn)集的y坐標(biāo)值不變,

x坐標(biāo)值不變,符號(hào)相反2.圖形變換(3)以原點(diǎn)為對(duì)稱的對(duì)稱變換

變換后,圖形點(diǎn)集的x和y坐標(biāo)值不變,符號(hào)均相反2.圖形變換(5)以直線y=-x為對(duì)稱線的對(duì)稱變換(4)以直線y=x為對(duì)稱線的對(duì)稱變換變換后,圖形點(diǎn)集的x和y坐標(biāo)對(duì)調(diào)

變換后,圖形點(diǎn)集的x和y坐標(biāo)對(duì)調(diào),符號(hào)相反2.圖形變換旋轉(zhuǎn)變換

圖形繞原點(diǎn)沿逆時(shí)針方向旋轉(zhuǎn)θ角,變換后的點(diǎn)(x*,y*)的數(shù)學(xué)表達(dá)式:規(guī)定:逆時(shí)針方向?yàn)檎?,順時(shí)針方向?yàn)樨?fù)旋轉(zhuǎn)變換是將圖形繞固定點(diǎn)順時(shí)針或逆時(shí)針方向進(jìn)行旋轉(zhuǎn)2.圖形變換錯(cuò)切變換

錯(cuò)切變換是圖形的每一個(gè)點(diǎn)在某一方向上坐標(biāo)保持不變,而另一坐標(biāo)方向上坐標(biāo)進(jìn)行線性變換,或都進(jìn)行線性變換有x和y方向的錯(cuò)切變換

1.圖形沿x方向的錯(cuò)切矩陣表示為:

圖形的y坐標(biāo)不變,x坐標(biāo)隨坐標(biāo)(xy)和系數(shù)b作線性變化,

b≠0

,b>0,圖形沿+x方向錯(cuò)切;b<0,圖形沿-x方向錯(cuò)切2.圖形變換錯(cuò)切變換有x和y方向的錯(cuò)切變換

2.圖形沿y方向的錯(cuò)切矩陣表示為:

圖形的x坐標(biāo)不變,y坐標(biāo)隨坐標(biāo)(xy)和系數(shù)d作線性變化,

d≠0,d>0,圖形沿+y方向錯(cuò)切;d<0,圖形沿–y方向錯(cuò)切

錯(cuò)切變換是圖形的每一個(gè)點(diǎn)在某一方向上坐標(biāo)保持不變,而另一坐標(biāo)方向上坐標(biāo)進(jìn)行線性變換,或都進(jìn)行線性變換2.圖形變換0二維圖形基本變換小結(jié):

從二維圖形的基本幾何變換可見,各種圖形變換完全取決于變換矩陣中各元素的取值

按照變換矩陣中各元素的功能,可將二維變換矩陣的一般表達(dá)式按如下虛線分為4個(gè)子矩陣:實(shí)現(xiàn)圖形比例變換:

s>1,圖形等比例縮小

0<s<1,圖形等比例放大

s=1,圖形大小不變T=實(shí)現(xiàn)圖形比例、對(duì)稱、錯(cuò)切、旋轉(zhuǎn)變換實(shí)現(xiàn)圖形平移變換實(shí)現(xiàn)圖形透視變換(常用于三維圖形)2.圖形變換2.圖形變換二維圖形基本變換小結(jié):平移比例對(duì)稱旋轉(zhuǎn)錯(cuò)切二維圖形的復(fù)合變換組合變換中,多個(gè)變換矩陣之積稱為組合變換矩陣

CAD/CAM中的圖形變換比較復(fù)雜,往往僅用一種基本變換不能實(shí)現(xiàn),需經(jīng)由兩種或多種基本變換的組合才能得所需的最終圖形。這種由兩個(gè)以上基本變換構(gòu)成的變換稱為復(fù)合變換(組合變換)或基本變換的級(jí)聯(lián)

先旋轉(zhuǎn)后平移先平移后旋轉(zhuǎn)

設(shè)各次變換的矩陣分別為T1,T2

,……

,Tn,則復(fù)合變換的矩陣是各次變換矩陣的乘積,即:

T=T1?T2

……

?Tn2.圖形變換復(fù)合變換例1:求三角形以點(diǎn)(4,6)為中心逆時(shí)針旋轉(zhuǎn)30°的組合變換矩陣

相對(duì)于(e,f)點(diǎn)作旋轉(zhuǎn)變換,由以下三個(gè)矩陣相乘來實(shí)現(xiàn):

(1)平移(-4,-6)(2)旋轉(zhuǎn)(30°)(3)平移(4,6)基本步驟:2.圖形變換復(fù)合變換例2:圖形對(duì)于任一條線y=ax+b

對(duì)稱的組合變換矩陣

基本步驟:

(1)平移(-b)(2)旋轉(zhuǎn)(θ)(3)對(duì)稱(x軸)(4)旋轉(zhuǎn)(-θ

)(5)平移(b)2.圖形變換三維圖形幾何變換三維圖形的幾何變換是二維圖形幾何變換的簡(jiǎn)單擴(kuò)展

與二維圖形一樣,用適當(dāng)?shù)淖儞Q矩陣也可以對(duì)三維圖形進(jìn)行各種幾何變換

平移變換

比例變換

對(duì)稱變換

旋轉(zhuǎn)變換

錯(cuò)切變換

歸納

三維圖形的基本幾何變換主要有:2.圖形變換平移變換平移變換是使立體在三維空間移動(dòng)一個(gè)位置,而形狀保持不變其中L、M、N分別為X、Y、Z方向的平移量

2.圖形變換比例變換比例變換兩種變換形式:對(duì)于整體圖形進(jìn)行縮放沿各坐標(biāo)軸分別調(diào)節(jié)每個(gè)坐標(biāo)方向上的大小

空間立體頂點(diǎn)坐標(biāo)按規(guī)定比例放大或縮小稱三維比例變換

變換方程:

沿每個(gè)坐標(biāo)軸方向分別調(diào)節(jié)各坐標(biāo)大小的比例變換齊次矩陣:2.圖形變換對(duì)X0Z平面的對(duì)稱變換

y坐標(biāo)值改變符號(hào)對(duì)稱變換標(biāo)準(zhǔn)三維空間對(duì)稱變換是相對(duì)于坐標(biāo)平面進(jìn)行2.圖形變換對(duì)稱變換標(biāo)準(zhǔn)的三維空間對(duì)稱變換是相對(duì)于坐標(biāo)平面進(jìn)行對(duì)X0Y平面的對(duì)稱變換

z坐標(biāo)值改變符號(hào)

對(duì)Y0Z平面的對(duì)稱變換x坐標(biāo)值改變符號(hào)

變換后點(diǎn)的坐標(biāo):

==2.圖形變換旋轉(zhuǎn)變換三維旋轉(zhuǎn)變換是將空間立體繞坐標(biāo)軸旋轉(zhuǎn)一個(gè)角度,且角的正負(fù)按右手定則確定:右手大拇指指向旋轉(zhuǎn)軸的正向,其余四個(gè)手指的指向即為角的正向

二維變換中,圖形繞原點(diǎn)旋轉(zhuǎn)的變換實(shí)際上是X0Y平面圖形繞Z軸旋轉(zhuǎn)的變換

1)繞X軸旋轉(zhuǎn)的變換矩陣

空間立體繞x軸旋轉(zhuǎn)各頂點(diǎn)的x坐標(biāo)不變,只是y和z坐標(biāo)發(fā)生變化yxyzz’y’zoox軸指向紙外2.圖形變換3)繞Z軸旋轉(zhuǎn)的變換矩陣2)繞Y軸旋轉(zhuǎn)的變換矩陣

空間立體繞y軸旋轉(zhuǎn)各頂點(diǎn)的y坐標(biāo)不變,只是x和z坐標(biāo)發(fā)生變化

空間立體繞z軸旋轉(zhuǎn)各頂點(diǎn)的y坐標(biāo)不變,只是x和y坐標(biāo)發(fā)生變化

zyzxx’z’xooy軸指向紙外2.圖形變換錯(cuò)切變換錯(cuò)切變換是指空間立體沿x、y、z三個(gè)方向都產(chǎn)生錯(cuò)變形。錯(cuò)切變形是畫軸測(cè)圖的基礎(chǔ),其變換矩陣為:變換后點(diǎn)坐標(biāo):Tsh===三維錯(cuò)切變換

z

y

x

沿z含x錯(cuò)切z

y

x

沿z含y錯(cuò)切

z

y

x

沿y含x錯(cuò)切

z

y

x

沿y含z錯(cuò)切z

y

x沿x含y錯(cuò)切z

y

x

沿x含z錯(cuò)切2.圖形變換沿X軸含Y向錯(cuò)切

沿X軸含Y向錯(cuò)切變換矩陣為:錯(cuò)切變換為:

即x’=x+dyy’=yz’=z2.圖形變換三維圖形基本變換總結(jié):

對(duì)三維空間的點(diǎn)如(x,y,z),可用齊次坐標(biāo)表示為:(x,y,z,1),或(X,Y,Z,H)因此,三維空間里的點(diǎn)的變換可寫為:其中[M]是4X4階變換矩陣,即:

2.圖形變換2.圖形變換三維圖形的組合變換

空間一點(diǎn)繞空間任一軸線的旋轉(zhuǎn)變換。要通過將幾個(gè)基本的變換組合在一起,得到該組合變換。

假定空間任一直線的方向矢量分別為:(l,m,n)

并經(jīng)過原點(diǎn)(l,m,n)(x,y,z)(x’,y’,z’)XYZαβγON2.圖形變換能否轉(zhuǎn)換成繞X、Y或Z軸旋轉(zhuǎn)的變換?

ON繞Z軸旋轉(zhuǎn)θ2

到XOZ平面上,然后再繞Y軸旋轉(zhuǎn)θ1,即可與Z軸重合。ONθ2θ1XYZ2.圖形變換

這樣,可得空間上任一點(diǎn)繞ON軸旋轉(zhuǎn)的變換過程如下:

1)首先通過兩次旋轉(zhuǎn),使ON軸與Z軸重合;

2)然后使點(diǎn)繞Z軸旋轉(zhuǎn)θ角;

3)最后通過與1)相反的旋轉(zhuǎn),使ON軸回到原來的位置。假設(shè),繞Z軸的旋轉(zhuǎn)-θ2矩陣為T1

繞Y軸的旋轉(zhuǎn)-θ1矩陣為T2

繞Z軸的旋轉(zhuǎn)θ矩陣為T3

繞Y軸的旋轉(zhuǎn)θ1矩陣為T4

繞Z軸的旋轉(zhuǎn)θ2矩陣為T52.圖形變換則總體變換矩陣為:

T=T1T2T3T4T5

由上推導(dǎo)可看出,只要能求出θ1、θ2的值,即可通過上式獲得繞ON軸的變換矩陣。

由于矢量(001)繞Y軸旋轉(zhuǎn)θ1,再繞Z軸旋轉(zhuǎn)θ2即可與ON軸重合。即:

2.圖形變換[lmn1]=[sinθ1cosθ2sinθ1sinθ2cosθ11]l=sinθ1cosθ2

m=sinθ1sinθ2

n=cosθ1從而通過上式即可得到θ1、θ2

的值。cosθ1=nsinθ1=sqrt(l2+m2)cosθ2=l/sqrt(l2+m2)sinθ2=m/sqrt(l2+m2)ONθ2θ1XYZ學(xué)習(xí)內(nèi)容概述

圖形變換

圖形消隱技術(shù)

圖形的光照處理技術(shù)

圖形裁剪技術(shù)OPENGL介紹

圖形消隱的基本概念

消隱算法的基本測(cè)試方法

常用的消隱算法

下面圖形代表哪一種情況呢???三維圖形由于投影變換失去了深度信息,往往導(dǎo)致圖形的二義性3.圖形消隱技術(shù)圖形消隱的基本概念

要消除二義性,就必須在繪制時(shí)消除實(shí)際不可見的線和面,習(xí)慣上將這些隱藏線或隱藏面消除的過程稱為消隱

當(dāng)沿投影視線觀察一個(gè)三維物體時(shí),由于物體中各種表面或其它物體的遮擋,某些線段或面不可見,這些不可見的線段或面稱為隱藏線或隱藏面

查找、確定并消除隱藏線和隱藏面的技術(shù)稱為消隱技術(shù)

3.圖形消隱技術(shù)消隱算法的基本測(cè)試方法

各種消隱算法其策略方法各有特點(diǎn),但都是以一些基本測(cè)試方法為基礎(chǔ)。一種算法中往往會(huì)包含一種甚至多種基本測(cè)試方法基本測(cè)試方法重疊測(cè)試

深度測(cè)試可見性測(cè)試包含性測(cè)試

3.圖形消隱技術(shù)

物體各外表面輪廓線框在透視投影圖上是有若干個(gè)多邊形構(gòu)成的,外表面之間的遮蔽反映為多邊形之間相交或包容。重疊測(cè)試是來檢查兩個(gè)多邊形是否重疊,如果不重疊,說明兩多邊形肯定互不遮擋。這種測(cè)試也叫極大極小測(cè)試或邊界盒測(cè)試,它提供了一個(gè)快速方法來判斷兩個(gè)多邊形不重疊。

為提高計(jì)算機(jī)的處理效率,重疊測(cè)試可分為兩步完成。3.圖形消隱技術(shù)重疊測(cè)試1.粗篩選。將根本不可能重疊的多邊形篩掉。其方法是:找到每個(gè)多邊形的極值(最大和最小的x,y值),然后用一矩形去外接每個(gè)多邊形,接著檢查X和Y方向任意兩個(gè)矩形是否相交。設(shè)兩個(gè)多邊形分別為A和B,如果A和B的頂點(diǎn)坐標(biāo)滿足如下四個(gè)不等式之一,則兩個(gè)多邊形不可能重疊,即:

3.圖形消隱技術(shù)重疊測(cè)試測(cè)試無確定結(jié)果

對(duì)每條邊進(jìn)行最小最大測(cè)試不重疊,不可能互相遮蔽XminXmax2.如果上述不等式均得不到滿足,則這兩個(gè)多邊形有可能重疊。此時(shí),將一個(gè)多邊形的每一條邊與另一個(gè)多邊形的每條邊比較,測(cè)試它們是否相交,以此來判別兩個(gè)多邊形是否重疊。若兩個(gè)多邊形真的有重疊關(guān)系,則通過兩線段求交算法計(jì)算其交點(diǎn)。

3.圖形消隱技術(shù)圖c圖b圖a重疊測(cè)試

對(duì)于不滿足重疊測(cè)試的兩多邊形,還可能因一個(gè)多邊形包容在另一個(gè)多邊形內(nèi)部而產(chǎn)生相互遮蔽。檢驗(yàn)一個(gè)多邊形是否包容在另一個(gè)多邊形內(nèi)部,需要逐個(gè)檢驗(yàn)其多邊形組成頂點(diǎn)是否包容在另一個(gè)多邊形內(nèi)部。包含性測(cè)試即是檢查一個(gè)給定的點(diǎn)是否位于給定的多邊形或多面體內(nèi)。3.圖形消隱技術(shù)包含性測(cè)試非凸多邊形:可以有兩種方法來測(cè)試點(diǎn)與多邊形的包含關(guān)系,即射線交點(diǎn)數(shù)算法和夾角求和算法。ABCDEP包含性測(cè)試射線交點(diǎn)數(shù)算法測(cè)試點(diǎn)與非凸多邊形的包含關(guān)系方法:ABCDEP交點(diǎn)數(shù)=偶數(shù)(含0)點(diǎn)在多邊形外交點(diǎn)數(shù)=奇數(shù)點(diǎn)在多邊形內(nèi)ABCDEPABCDEP夾角求和算法

夾角和=0°點(diǎn)p在多邊形外夾角和=360°點(diǎn)p在多邊形內(nèi)3.圖形消隱技術(shù)

用來測(cè)試一個(gè)物體遮擋另一個(gè)物體的基本方法。

常用的有優(yōu)先級(jí)測(cè)試和物體空間測(cè)試。

3.圖形消隱技術(shù)深度測(cè)試

設(shè)P12是空間矩形F1

和三角形F2

在投影平面XOY平面的正投影的一個(gè)重影點(diǎn)。將P12的x,y坐標(biāo)代入矩形F1和三角形F2的平面方程,分別求出Z1和Z2

比較Z1和Z2的大小,可知F1和F2所在的平面哪個(gè)更靠近觀察者,即哪個(gè)面遮擋另一個(gè)面P2

Z

P12

F2

P1

F1

O

X

Y

優(yōu)先級(jí)測(cè)試

Z1>Z2,則P1

點(diǎn)為可見點(diǎn),F(xiàn)1

比F2

有較高的優(yōu)先級(jí)

深度測(cè)試有時(shí)會(huì)出現(xiàn)異常情況。如下圖,為兩多邊形循環(huán)遮擋,此時(shí)僅從一點(diǎn)的比較不能判斷兩個(gè)面在整體上哪個(gè)更靠近觀察者,這時(shí)需把其中一個(gè)分成兩個(gè)多邊形(圖中的黑色線段),再用上述方法分別進(jìn)行測(cè)試。

3.圖形消隱技術(shù)深度測(cè)試

視線向量S

法向向量N

法向向量N

法向向量N

<90°

<90°可見

可見

不可見

>90°可見性測(cè)試

單一凸性物體表面外法矢指向觀察者方向的面是可見的,否則不可見。定義由觀察點(diǎn)至物體方向的視線矢量為S,計(jì)算物體表面某點(diǎn)的法矢N和視線矢量的點(diǎn)積判別該點(diǎn)是否可見:

θ為N和S的夾角,當(dāng)N指向視點(diǎn)方向時(shí),N×S其積為正,為可見面3.圖形消隱技術(shù)

主要用來判別物體自身各部分哪些部分沒有被其自身其它部分遮擋即可見的,被其自身其它部分遮擋即不可見的常用的消隱算法根據(jù)消隱空間的不同,消隱算法分為兩類:物體(物)空間(objectspace)的消隱算法

側(cè)重于景中各物體之間的幾何關(guān)系。直接在視點(diǎn)坐標(biāo)系中確定視點(diǎn)不可見的表面區(qū)域,將它們表達(dá)成同原表面一致的數(shù)據(jù)結(jié)構(gòu)。如:Catmull曲面分割算法…

圖形(像)空間(imagespace)的消隱算法

側(cè)重于向屏幕投影后形成的圖像。在投影屏幕上以屏幕像素為采樣單位,確定投影于每一像素的可見景物表面區(qū)域,將其顏色作為該像素的顯示光亮度。

如:Warnock算法、Z-Buffer算法、掃描線算法

…根據(jù)消隱對(duì)象不同,消隱算法分為兩類:

若消除的是物體上不可見的線段,稱線消隱

若消除的是物體上不可見的面,稱面消隱

3.圖形消隱技術(shù)常用的消隱算法物消隱算法

像消隱算法線消隱3.圖形消隱技術(shù)精度高,不受顯示器分辨率的影響精度低,受顯示器分辨率的影響面消隱物體復(fù)雜時(shí),計(jì)算時(shí)間增加得多物體復(fù)雜時(shí),相對(duì)而言計(jì)算時(shí)間增加較少

在眾多的消隱算法中,到目前為止還沒有哪一種算法能夠適用所有應(yīng)用領(lǐng)域,而且隨著其應(yīng)用領(lǐng)域的不斷擴(kuò)展,還會(huì)有新的算法出現(xiàn)。

物體(物)空間的消隱算法Catmull曲面分割算法是對(duì)曲面本身進(jìn)行遞歸分割基本思想:

將原先的曲面片遞歸地加以分割,直至所有分割后的小曲面片在顯示屏幕上投影至多覆蓋一個(gè)象素,然后在各個(gè)象素上確定使用哪個(gè)小曲面片的色彩和灰度3.圖形消隱技術(shù)適用于任何曲面圖形(像)空間的消隱算法分離內(nèi)含

相交

包圍

基本思想:觀察整個(gè)窗口區(qū)域判別窗口是否單純窗口內(nèi)無任何可見物體窗口已被一個(gè)可見面片完全充滿將非單純的窗口四等分為四個(gè)子窗口對(duì)每個(gè)子窗口再進(jìn)一步判別是否單純直到窗口單純或窗口邊長(zhǎng)已縮至一個(gè)象素點(diǎn)為止

3.圖形消隱技術(shù)循環(huán)細(xì)分算法,適用于平面多邊形圖形(像)空間的消隱算法基本思想:將投影到顯示屏上的每一個(gè)象素所對(duì)應(yīng)的多邊形表面的深度進(jìn)行比較,取最靠近觀察者的一個(gè)對(duì)象的深度,通過深度的比較來決定該對(duì)象可見或不可見。

Catmull在1975年提出該算法,適用于正投影時(shí)的消隱處理用Z—buffer記錄該表面在該像素點(diǎn)的深度用frame—buffer記錄該表面在該像素點(diǎn)的顏色或亮度值3.圖形消隱技術(shù)圖形(像)空間的消隱算法基本思想:在圖像空間中按掃描線從上到下的順序來處理所顯示的對(duì)象,將三維問題簡(jiǎn)化成二維問題

3.圖形消隱技術(shù)

可假定視點(diǎn)在Z軸正向無窮遠(yuǎn)處,定義由視點(diǎn)和掃描線所確定的平面稱為掃描平面,顯然掃描平面是通過屏幕上某條掃描線且又垂直于顯示屏幕的平面。圖形(像)空間的消隱算法缺點(diǎn)在每一個(gè)被多邊形覆蓋像素處需要計(jì)算深度值被多個(gè)多邊形覆蓋的像素需要多次計(jì)算深度值3.圖形消隱技術(shù)

由于一條掃描線實(shí)際對(duì)應(yīng)屏幕上一行象素,可以把這一行象素定義為一個(gè)掃描線窗口。隱藏面的消隱問題,正是分別在一個(gè)一個(gè)這樣的顯示窗口與掃描平面上解決的。三維消隱問題轉(zhuǎn)化為在掃描線的每個(gè)點(diǎn)上判定哪一條線段可見的二維問題。

學(xué)習(xí)內(nèi)容概述

圖形變換

圖形消隱技術(shù)

圖形的光照處理技術(shù)

圖形裁剪技術(shù)OPENGL介紹

光照處理的基本原理

光照處理的基本算法

陰影的處理

采用消隱技術(shù)消除了隱藏線和隱藏面后,圖形沒有了二義性問題,但要?jiǎng)?chuàng)造真實(shí)感圖形需要光照處理技術(shù)。光照處理是繪制真實(shí)感圖形所需的重要技術(shù)之一

光照處理方法是對(duì)真實(shí)世界的一種近似模擬

4.圖形的光照處理技術(shù)

模擬光線照射在物體上,物體反映出來的感觀效應(yīng),通過必要的算法實(shí)現(xiàn)實(shí)際物體在計(jì)算機(jī)上的虛擬光照處理的基本原理光照處理目的是希望光照射在物體上模擬眼睛看物體的效果

物體吸收某些波長(zhǎng)的光,而反射或折射其它波長(zhǎng)的光,則物體呈現(xiàn)某種顏色。

從物體表面反射或折射出來的光的強(qiáng)度取決于光源的性質(zhì)、物體的表面性質(zhì)、周圍環(huán)境、視點(diǎn)位置以及不同人對(duì)光的感覺差異等諸多因素。

對(duì)物體進(jìn)行光照處理需要建立合適的光照模型,并通過顯示算法將物體在顯示器上顯示出來。

光的亮度由光的強(qiáng)度決定,光的顏色由波長(zhǎng)決定4.圖形的光照處理技術(shù)簡(jiǎn)單的光照模型

點(diǎn)光源的幾何形狀為一個(gè)點(diǎn),位于空間的某個(gè)位置向周圍所有方向上輻射等強(qiáng)度光在點(diǎn)光源的照射下,物體表面的不同部分亮度不同,亮度的大小依賴于它的朝向以及它與點(diǎn)光源之間的距離

光照處理模型常通過點(diǎn)光源照射物體說明:

光源發(fā)光照射在物體上,然后傳遞到人的眼里,實(shí)際上構(gòu)成了一個(gè)光照系統(tǒng)

理想鏡面反射L

N

P

R

V

一般光滑表面鏡面反射L

N

P

R

L

N

P

R

粗糙表面鏡面反射4.圖形的光照處理技術(shù)簡(jiǎn)單的光照模型

漫反射

光線照射到表面粗糙、無光澤的物體上,物體表面表現(xiàn)為漫反射形式,即光線沿各不同方向都做相同的散射。

從各個(gè)角度觀察,物體都有相同的亮度

4.圖形的光照處理技術(shù)簡(jiǎn)單的光照模型

光滑的物體表面(如金屬、塑料)在點(diǎn)光源的照射下會(huì)形成一塊特別亮的區(qū)域,即所謂的“高光”,它是物體表面對(duì)入射光進(jìn)行鏡面反射引起的

鏡面反射遵循反射定律,反射光與入射光位于表面法向兩側(cè)。鏡面反射的光強(qiáng)取決于入射光的角度、波長(zhǎng)和反射表面的材料性質(zhì)…鏡面反射

4.圖形的光照處理技術(shù)簡(jiǎn)單的光照模型

環(huán)境光

光線在場(chǎng)景中經(jīng)過復(fù)雜的傳播之后,形成彌漫于整個(gè)空間的光線,稱為環(huán)境光(或泛光

)。環(huán)境光使沒有光源的直接照射的景物表面仍有一定的亮度而可見。

環(huán)境光在空間中近似地均勻分布,即在任何位置、任何方向上,強(qiáng)度都一樣。環(huán)境光通常由多個(gè)物體經(jīng)多重反射形成,因而無法精確地計(jì)算光強(qiáng)。

4.圖形的光照處理技術(shù)光照效果:反射

地面

反射

背景

石頭

墻面

紋理

六邊形

反射

圓環(huán)

金屬

方錐

光滑

球體

平面漫反射

圓柱體

材質(zhì)效果

物件

4.圖形的光照處理技術(shù)光照處理的基本算法

根據(jù)光照強(qiáng)度的計(jì)算,對(duì)于具有彎曲表面的物體,可以用其曲面方程算出每點(diǎn)的法線,然后按光照強(qiáng)度的計(jì)算模型計(jì)算每一點(diǎn)的亮度進(jìn)行表達(dá)問題:1.運(yùn)算量相當(dāng)大

2.很多曲面無法用合適的方程表示通常仍然用多面體來逼近的方法模擬曲面物體平面多面體表面上各點(diǎn)亮度計(jì)算通常用二種基本算法:

1.恒定亮度法

2.Gouraud插值法

整個(gè)多邊形只算出一個(gè)單獨(dú)的亮度值,用這個(gè)亮度顯示物體上多邊形所在的那個(gè)面這種方法只適合在特定條件:1.考慮點(diǎn)光源照射時(shí),總假定點(diǎn)光源和觀察點(diǎn)離物體表面足夠遠(yuǎn)2.物體表面僅暴露于背景光下,沒有表面圖案、紋理或者陰影時(shí),才會(huì)產(chǎn)生準(zhǔn)確的結(jié)果4.圖形的光照處理技術(shù)光照處理的基本算法平面多面體表面上諸點(diǎn)的亮度計(jì)算通常用二種基本算法:

1.恒定亮度法

2.Gouraud插值法(亮度插值法)

通過表面上每個(gè)端點(diǎn)的方向向量計(jì)算該點(diǎn)的亮度,再利用內(nèi)插法計(jì)算面上每個(gè)點(diǎn)的亮度,讓面與面之間的接合處并不那么明顯1.亮度插值法僅保證在多邊形兩側(cè)亮度的連續(xù)性,而不能保證亮度變化的連續(xù)性。2.采用插值方法使得鏡面反射所產(chǎn)生的高光形狀與位置有很大的變異,甚至模糊不清或不能產(chǎn)生高光。

根據(jù)光照強(qiáng)度的計(jì)算,對(duì)于具有彎曲表面的物體,可以用其曲面方程算出每點(diǎn)的法線,然后按光照強(qiáng)度的計(jì)算模型計(jì)算每一點(diǎn)的亮度進(jìn)行表達(dá)問題:1.運(yùn)算量相當(dāng)大

2.很多曲面無法用合適的方程表示通常仍然用多面體來逼近的方法模擬曲面物體4.圖形的光照處理技術(shù)這個(gè)效應(yīng)是奧地利物理學(xué)家ErnstMach首先發(fā)現(xiàn)而得名的。當(dāng)我們觀察畫面上具有恒定亮度的區(qū)域時(shí),在區(qū)域邊界處眼睛所感受到的明暗程度常常會(huì)超出實(shí)際值,似乎光強(qiáng)發(fā)生了變化,這一現(xiàn)象稱之為馬赫帶效應(yīng)。當(dāng)亮度急劇變化時(shí)將出現(xiàn)這一效應(yīng).它夸大了任何一條邊界上亮度的變化,常顯得更亮或更暗。

Gouraud插值法解決了恒定亮度法中的亮度不連續(xù)問題,在一定程度上消除了馬赫帶效應(yīng),顯示畫面的效果得到大大改善。但亮度插值法僅保證在多邊形兩側(cè)亮度的連續(xù)性,而不能保證亮度變化的連續(xù)性,故Gouraud插值法并不能完全消除馬赫帶。同時(shí),由于采用插值的方法,使得鏡面反射所產(chǎn)生的高光形狀與位置有很大的變異,甚至模糊不清或不能產(chǎn)生高光。因而Gouraud插值法對(duì)于只考慮漫反射的模型效果較好。4.圖形的光照處理技術(shù)陰影的處理

陰影是由于物體遮擋光源的光線而形成的,有助于顯示畫面中各物體之間的空間位置及深度關(guān)系,使人感到物體的遠(yuǎn)近深淺,極大增加畫面的真實(shí)感。

陰影一般由兩部分組成:本影和半影本

區(qū)

區(qū)

區(qū)

光源

本影:任何光線都照不到的區(qū)域,呈現(xiàn)為全黑的、輪廓分明的區(qū)域半影:可接收到分布光源照射的部分光線的區(qū)域,通常位于本影周圍,呈現(xiàn)為半明半暗的區(qū)域,受到的光照依次增加4.圖形的光照處理技術(shù)自身陰影和投射陰影本影包括兩類:自身陰影和投射陰影自身陰影:由于物體自身遮擋而使光線照射不到的某些面,它與視點(diǎn)在光源位置時(shí)的自隱藏面一致投射陰影:物體遮擋光線從而使畫面中位于它后面的物體或區(qū)域(如基平面)的全部或一部分受不到光的照射而形成

自身陰影

投射陰影

4.圖形的光照處理技術(shù)投射陰影的投影面與畫面中其它平面的交線組成陰影多邊形,它被標(biāo)記為陰影后存入畫面的數(shù)據(jù)結(jié)構(gòu)中。

學(xué)習(xí)內(nèi)容概述

圖形變換

圖形消隱技術(shù)

圖形的光照處理技術(shù)

圖形裁剪技術(shù)

OPENGL介紹

實(shí)際應(yīng)用中,面對(duì)一幅大的畫面,常要求開一個(gè)矩形窗口顯示指定的部分畫面。窗口內(nèi)的圖形被顯示出來,而窗口之外的圖形則被裁剪掉,使圖形恰當(dāng)?shù)仫@示到屏幕上的處理技術(shù)稱為裁剪技術(shù)

任何圖形在顯示之前都要經(jīng)過裁剪工作5.圖形裁剪技術(shù)

平面圖形在裁剪時(shí),由于組成圖形中的每一個(gè)基本元素都要經(jīng)過裁剪,裁剪算法直接影響整個(gè)圖形系統(tǒng)的效率。其效率的高低常和圖形的復(fù)雜情況、計(jì)算機(jī)功能等因素有關(guān),因而要根據(jù)實(shí)際情況來選擇裁剪方法。一般可選用的裁剪策略有:(1)圖形裁剪與窗口—視圖變換的先后

“先裁剪后變換”:多數(shù)圖形裁剪都是在用戶坐標(biāo)系下相對(duì)窗口邊框進(jìn)行裁剪。這種方法可以避免落在窗口外的圖形再去進(jìn)行無效的窗口—視區(qū)變換運(yùn)算?!跋茸儞Q后裁剪”:也可以先把用戶坐標(biāo)系轉(zhuǎn)化為設(shè)備(屏幕)坐標(biāo)系,在屏幕坐標(biāo)系下相對(duì)于視區(qū)進(jìn)行裁剪。對(duì)于一些特定算法可以選用這種策略。

5.圖形裁剪技術(shù)一般可選用的裁剪策略有:“先生成后裁剪”:只需要簡(jiǎn)單的直線段的裁剪算法,但可能造成無效的生成運(yùn)算。

“先裁剪后生成”

:可避免對(duì)那些最后被裁掉的元素進(jìn)行無效的生成運(yùn)算,但卻要采用比較復(fù)雜的圖形,如圓弧、橢圓弧等的裁剪處理。(2)圖形生成與裁剪的先后

5.圖形裁剪技術(shù)

另外,由于裁剪處理比較費(fèi)時(shí),對(duì)于一些特殊的應(yīng)用,例如,只需觀察圖形的全貌,并不真正需要實(shí)施裁剪時(shí),則可允許自動(dòng)調(diào)整窗口的大小,使之跳過裁剪。二維裁剪技術(shù)三維裁剪技術(shù)

將三維物體的圖形由圖形輸出設(shè)備顯示或繪制時(shí),往往也要用到裁剪技術(shù)。三維窗口在平行投影時(shí)為立方體。三維線段裁剪就是要顯示三維線段落在三維窗口內(nèi)的部分。

5.圖形裁剪技術(shù)二維裁剪技術(shù)

用戶在平面上定義一個(gè)窗口以后,總希望把落在窗口內(nèi)的部分圖形映象到視圖區(qū)中,而把在窗口以外的圖形運(yùn)用裁剪方法統(tǒng)統(tǒng)裁掉,不予輸出

平面上的圖形受該平面上的矩形窗口的裁剪稱為二維裁剪

裁剪的基本目的是判斷圖形元素是否在所考慮的區(qū)域內(nèi)。如在區(qū)域內(nèi),則進(jìn)一步求出在區(qū)域內(nèi)的那一部分。裁剪處理的關(guān)鍵主要包括:點(diǎn)在裁剪區(qū)域內(nèi)外的判斷

圖形與裁剪區(qū)域邊界交點(diǎn)的計(jì)算

常見算法:編碼算法、中點(diǎn)分割法、Liang-Barsky裁剪算法…

5.圖形裁剪技術(shù)編碼裁剪算法

特點(diǎn):對(duì)顯然不可見線段的快速判別編碼方法:由窗口四條邊所在直線把二維平面分成9個(gè)區(qū)域,每個(gè)區(qū)域賦予一個(gè)四位編碼,稱之為區(qū)域碼。它表示端點(diǎn)與窗口的位置關(guān)系。四位碼中最左邊的1位為第一位,則編碼規(guī)則如下:1974年,DanCohen和IvanSutherland提出,也稱科恩—薩賽蘭德算法主要思想:用編碼方法來實(shí)現(xiàn)裁剪

(1)線段端點(diǎn)在上方,第一位為1,否則為0;(2)線段端點(diǎn)在下方,第二位為1,否則為0;(3)線段端點(diǎn)在右邊,第三位為1,否則為0;(4)線段端點(diǎn)在左邊,第四位為1,否則為0。

5.圖形裁剪技術(shù)算法步驟:判別線段兩端點(diǎn)是否都落在窗口內(nèi),如果是,則線段完全可見;否則進(jìn)入第二步;判別線段是否為顯然不可見,如果是,則裁剪結(jié)束;否則進(jìn)行第三步;求線段與窗口邊延長(zhǎng)線的交點(diǎn),這個(gè)交點(diǎn)將線段分為兩段,其中一段顯然不可見,丟棄。對(duì)余下的另一段重新進(jìn)行第一步,第二步判斷,直至結(jié)束

窗口及線段端點(diǎn)的編碼如圖所示:顯然,如果線段兩個(gè)端點(diǎn)的4位編碼全為0,則此線段全部在窗口內(nèi),可直接接受,如果對(duì)線段兩個(gè)端點(diǎn)的4位編碼進(jìn)行邏輯與(按位乘)運(yùn)算,結(jié)果為非0,則此線段全部在窗口之外,可直接舍棄;否則,這一線段既不能直接接受,也不能直接舍棄,它可能與窗口相交。此時(shí),需要對(duì)線段進(jìn)行再分割,即找到與窗口一個(gè)邊框的交點(diǎn)。根據(jù)交點(diǎn)位置,也賦予4位代碼,并對(duì)分割后的線段進(jìn)行檢查;或者接受,或者舍棄,或者再次進(jìn)行分割。重復(fù)這一過程,直到全部線段均被舍棄或被接受為止。5.圖形裁剪技術(shù)1000

0001

0010

0000

0100

1001

0101

0110

1010

窗口

b

c

a

編碼方法直觀方便,速度較快,是一種較好的裁剪方法,但是由于全部舍棄的判斷只適合于那些僅在窗口同側(cè)的線段,對(duì)于跨越三個(gè)區(qū)域的線段就不能一次做出判別而舍棄它們,而對(duì)于不滿足兩端點(diǎn)的編碼均為“0000”或兩端點(diǎn)的編碼位邏輯“與”結(jié)果非零的線段,則需把線段再分割,如果分割采用上述求交點(diǎn)的方法,運(yùn)算效率較低。5.圖形裁剪技術(shù)學(xué)習(xí)內(nèi)容概述

圖形變換

圖形消隱技術(shù)

圖形的光照處理技術(shù)

圖形裁剪技術(shù)OPENGL介紹OpenGL概述OpenGL基本圖元的繪制OpenGL變換的實(shí)現(xiàn)6.OpenGL介紹OpenGL被嚴(yán)格定義為“一種到圖形硬件的軟件接口”。OpenGL的發(fā)展史SGI在1992年7月發(fā)布1.0版。由成立于1992年的OpenGLArchitectureReviewBoard(ARB)ARB體系評(píng)審委員會(huì)控制。SGI等ARB成員以投票方式產(chǎn)生標(biāo)準(zhǔn),并制成規(guī)范文檔(Specification)公布,各軟硬件廠商據(jù)此開發(fā)自己系統(tǒng)上的實(shí)現(xiàn)。只有通過了ARB規(guī)范全部測(cè)試的實(shí)現(xiàn)才能稱為OpenGL?,F(xiàn)在的ARB投票成員包括SGI、Intel、IBM、nVIDIA、ATi、Microsoft、Apple等公司。2001年8月ARB批準(zhǔn)了1.1版本,隨后推出了1.2,2002年7月24日通過的1.4版本,最新版本規(guī)范是2003年7月退出的1.5。3Dlabs提出了OpenGL2.0新的版本,在OpenGL2.0中注入新性能,突破OpenGL1.X版本難以跟上硬件發(fā)展水平的缺陷,OpenGL2.0的目標(biāo),就在于啟動(dòng)并開發(fā)硬件的可編程能力。6.OpenGL介紹OpenGL體系結(jié)構(gòu)客戶機(jī)/服務(wù)器體系結(jié)構(gòu),允許本地或遠(yuǎn)程調(diào)用OpenGL。OpenGL在WindowsNT上的實(shí)現(xiàn)是基于Client/Server模式的,應(yīng)用程序發(fā)出OpenGL命令,由動(dòng)態(tài)鏈接庫(kù)OpenGL32.DLL接收和打包后,發(fā)送到服務(wù)器端的WINSRV.DLL,然后由它通過DDI層發(fā)往視頻顯示驅(qū)動(dòng)程序。如果系統(tǒng)安裝了硬件加速器,則由硬件相關(guān)的DDI來處理。OpenGL/NT的體系結(jié)構(gòu)圖如圖1.2所示。從程序員的角度看,在編寫基于Windows的OpenGL應(yīng)用程序之前必須清除兩個(gè)障礙,一個(gè)是OpenGL本身是一個(gè)復(fù)雜的系統(tǒng),這可以通過簡(jiǎn)化的OpenGL輔助庫(kù)函數(shù)來學(xué)習(xí)和掌握;另一個(gè)是必須清楚地了解和掌握Windows與OpenGL的接口。6.OpenGL介紹6.OpenGL介紹OpenGL的組成1.OpenGL核心庫(kù)

包含有115個(gè)函數(shù),函數(shù)名的前綴為gl。

這部分函數(shù)用于常規(guī)的、核心的圖形處理。由于許多函數(shù)可以接收不同數(shù)據(jù)類型的參數(shù),因此派生出來的函數(shù)原形多達(dá)300多個(gè)。

2.OpenGL實(shí)用庫(kù)

包含有43個(gè)函數(shù),函數(shù)名的前綴為glu。

這部分函數(shù)通過調(diào)用核心庫(kù)的函數(shù),為開發(fā)者提供相對(duì)簡(jiǎn)單的用法,實(shí)現(xiàn)一些較為復(fù)雜的操作。如:坐標(biāo)變換、紋理映射、繪制橢球、茶壺等簡(jiǎn)單多邊形。

OpenGL中的核心庫(kù)和實(shí)用庫(kù)可以在所有的OpenGL平臺(tái)上運(yùn)行。

3.OpenGL輔助庫(kù)

包含有31個(gè)函數(shù),函數(shù)名前綴為aux。

這部分函數(shù)提供窗口管理、輸入輸出處理以及繪制一些簡(jiǎn)單三維物體。

OpenGL中的輔助庫(kù)不能在所有的OpenGL平臺(tái)上運(yùn)行。6.OpenGL介紹4.OpenGL工具庫(kù)

包含大約30多個(gè)函數(shù),函數(shù)名前綴為glut。

這部分函數(shù)主要提供基于窗口的工具,如:多窗口繪制、空消息和定時(shí)器,以及一些繪制較復(fù)雜物體的函數(shù)。由于glut中的窗口管理函數(shù)是不依賴于運(yùn)行環(huán)境的,因此OpenGL中的工具庫(kù)可以在所有的OpenGL平臺(tái)上運(yùn)行。

5.Windows專用庫(kù)

包含有16個(gè)函數(shù),函數(shù)名前綴為wgl。

這部分函數(shù)主要用于連接OpenGL和Windows95/NT,以彌補(bǔ)OpenGL在文本方面的不足。Windows專用庫(kù)只能用于Windows95/98/NT環(huán)境中。

6.Win32API函數(shù)庫(kù)

包含有6個(gè)函數(shù),函數(shù)名無專用前綴。

這部分函數(shù)主要用于處理像素存儲(chǔ)格式和雙幀緩存。這6個(gè)函數(shù)將替換WindowsGDI中原有的同樣的函數(shù)。Win32API函數(shù)庫(kù)只能用于Windows95/98/NT環(huán)境中。6.OpenGL介紹OpenGL數(shù)據(jù)類型前綴數(shù)據(jù)類型相應(yīng)C語言類型OpenGL類型b8-bitintegersignedcharGLbytess16-bitintegershortGLshortii32-bitintegerlongGLint,GLsizeif32-bitfloating-pointfloatGLfloat,GLclampfd64-bitfloating-pointdoubleGLdouble,GLclampdub8-bitunsignedintegerunsignedcharGLubyte,GLbooleanus16-bitunsignedintegerunsignedshortGLushortui32-bitunsignedintegerunsignedlongGLuint,GLenum,GLbitfield6.OpenGL介紹OpenGL函數(shù)命名約定<庫(kù)前綴><根命令><可選的參數(shù)個(gè)數(shù)><可選的參數(shù)類型>

庫(kù)前綴:gl、glu、aux、glut、wgl、glx可選的參數(shù)個(gè)數(shù):2、3、4、V可選的參數(shù)類型:I代表int型,f代表float型,d代表double型,u代表無符號(hào)整型。*:可以用各種類型例子:glColor3f(1.0,0.0,0.0);

floatcolor_array[]={1.0,0.0,0.0};

glColor3fv(color_array);

6.OpenGL介紹OpenGL基本圖元繪制OpenGL提供了點(diǎn)、線、多邊形的繪制功能無論是哪種基本圖元,都是由一系列的頂點(diǎn)定義的。如點(diǎn):一個(gè)頂點(diǎn);直線:兩個(gè)頂點(diǎn);多邊形:多個(gè)頂點(diǎn)頂點(diǎn)由一個(gè)n維向量來定義,n=2,3,4。二維頂點(diǎn)是用三維頂點(diǎn)來處理的,即自動(dòng)將Z值賦0.0。voidglVertex{2,3,4}(sifd}(V)(TYPEcoords);基本圖素的繪制由glBegin()和glEnd()配對(duì)完成。voidglBegin(GLenummode)voidglEnd(void)6.OpenGL介紹OpenGL的圖元類型類型說明GL_POINTS點(diǎn)集GL_LINES多條線段GL_POLYGON單個(gè)簡(jiǎn)單填充凸多邊形GL_TRIANGLES多組獨(dú)立填充三角形GL_QUADS多組獨(dú)立填充四邊形GL_LINE_STRIP不閉合折線GL_LINE_LOOP閉合折線GL_TRIANGLE_STRIP線性連續(xù)填充三角形串GL_TRIANGLE_FAN扇形連續(xù)填充三角形串GL_QUAD_STRIP連續(xù)填充四邊形串6.OpenGL介紹點(diǎn)的繪制OpenGL中,點(diǎn)被定義為一個(gè)方塊。默認(rèn)值是一個(gè)象素缺省顏色可以一次繪制多個(gè)點(diǎn)

glBegin(GL_POINTS);glVertex3f(0.0,0.0,0.0);glVertex3f(50.0,50.0,50.0);

glEnd();點(diǎn)的大小由以下函數(shù)控制:voidglPointSize(GLfloatsize);6.OpenGL介紹線的繪制直線的繪制glBegin(GL_LINES)glVertex(0.0,0.0,0.0);glVertex(50.0,50.0,50.0);glEnd();6.OpenGL介紹折線的繪制

glBegin(GL_LINE_STRIP)

glVertex(0.0,0.0,0.0);

glVertex(50.0,50.0,0.0);

glVertex(100.0,100.0,0.0);

glEnd();線型的設(shè)置voidglLineStipple(Glintfactor,GLushortpattern);

factor:1~255,pattern中像素的重復(fù)次數(shù);pattern:線型的樣板,二進(jìn)值的一個(gè)0和1的序列,其中零表示不畫點(diǎn),1表示畫點(diǎn)。劃線時(shí),從pattern的最低位開始,決定線上的點(diǎn)是否繪制。用完后,從頭再來。glLineStipple(1,0x3F07);0x3F07=0011111100000111若factor=2,則線型為:00001111111111110000000000111111線型的啟動(dòng):glEnable(GL_LINE_STIPPLE);線型的關(guān)閉:glDisable(GL_LINE_STIPPLE);6.OpenGL介紹線寬的設(shè)置glLinewidth(GLFloatwidth);指定線的近似寬度,以象素計(jì)。width>0,缺省值width=1。不是每個(gè)線寬都是可用的,OpenGL規(guī)定了線寬的范圍和最小間隔,可由函數(shù)得到。GLfloatsizes[2];GLfloatstep;glGetFloatv(GL_LINE_WIDTH_RANGE,sizes);glGetFloatv(GL_LINE_WIDTH_GRANULARITY,&step);6.OpenGL介紹多邊形的繪制多邊形是指由封閉線段圍成的區(qū)域。OpenGL中的多邊形有兩點(diǎn)限制:多邊形的邊不能相交。多邊形必須是凸多邊形。多邊形的繪制也是由glBegin()和glEnd()完成自動(dòng)用當(dāng)前的顏色填充。6.OpenGL介紹矩陣的類型OpenGL定義了3種類型的矩陣在變換之前,必須指定當(dāng)前的操作矩陣類型。voidglMatrixMode(GLenummode);指定當(dāng)前的操作矩陣類型Model功能GL_MODELVIEW隨后的矩陣為模視矩陣堆棧GL_PROJECTION隨后的矩陣為投影矩陣堆棧GL_TEXTURE隨后的矩陣為紋理矩陣堆棧6.OpenGL介紹矩陣操作函數(shù)voidglLoadIdentity(void);功能:設(shè)置當(dāng)前操作矩陣為單位矩陣。voidglLoadMatrix{fd}(constTYPE*m);設(shè)置m為當(dāng)前的操作矩陣m是一個(gè)單精度或雙精度浮點(diǎn)指針,指向一個(gè)按列存儲(chǔ)的4x4的矩陣。voidglMultMatrix{fd}(constTYPE*m);用當(dāng)前矩陣乘以m,并把結(jié)果置為當(dāng)前矩陣。voidglPushMatrix(void);將當(dāng)前矩陣壓入矩陣堆棧。voidglPopMatrix(void);將當(dāng)前矩陣彈出矩陣堆棧。6.OpenGL介紹OpenGL的幾何變換平移變換voidglTranslate{fd}(TYPEx,TYPEy,TYPEz);旋轉(zhuǎn)變換VoidglRotate{fd}(TYPEangle,TYPEx,TYPEy,TYPEz);繞從(x,y,z)到原點(diǎn)的軸,擬時(shí)針旋轉(zhuǎn)angle。比例變換voidglScale{fd}(TYPEx,TYPEy,TYPEz);若<0,則進(jìn)行反射變換6.OpenGL介紹OpenGL的觀察變換觀察變換的作用是設(shè)置和改變觀察坐標(biāo)系。OpenGL中,默認(rèn)情況下,世界坐標(biāo)系是右手坐標(biāo)系,原點(diǎn)在屏幕左下角,原點(diǎn)右方向是Xaxis,向上方向是Yaxis。觀察坐標(biāo)系是左手坐標(biāo)系,Xaxis和Yaxis和觀察坐標(biāo)系方向相同,Zaxis則相反,指向屏幕內(nèi)部。有三種方法完成觀察變換使用模型變換函數(shù),如glTranslate*()使用gluLookAt()設(shè)置觀察坐標(biāo)系。自己編程,封裝已有的變換函數(shù)。6.OpenGL介紹gluLookAt()VoidgluLookAt(GLdoubleeyex,GLdoubleeyey,GLdoubleeyez,GLdoublecenterx,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論