《計算機(jī)圖形學(xué)》完整課件_第1頁
《計算機(jī)圖形學(xué)》完整課件_第2頁
《計算機(jī)圖形學(xué)》完整課件_第3頁
《計算機(jī)圖形學(xué)》完整課件_第4頁
《計算機(jī)圖形學(xué)》完整課件_第5頁
已閱讀5頁,還剩127頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機(jī)圖形學(xué)

任鴻翔

大連海事大學(xué)航海學(xué)院航海動態(tài)仿真與控制室

教學(xué)目的

■掌握計算機(jī)圖形學(xué)的基本知識

■掌握三維圖形的顯示流程和基本變換

教材及參考書

■《計算機(jī)圖形學(xué)》(第3版)蔡士杰譯電子工業(yè)出版社

■《ComputerGraphicswithOpenGL》3rdEdition,DonaldHearn,PrenticeHall

《計算機(jī)圖形學(xué)》孫家廣編清華大學(xué)出版社

第一章計算機(jī)圖形學(xué)綜述

一、定義

Apictureisworthathousandwords.

計算機(jī)圖形學(xué)是研究通過計算機(jī)將數(shù)據(jù)轉(zhuǎn)換為圖形,并在專門的顯

示設(shè)備上顯示的原理、方法和技術(shù)的學(xué)科。

二、研究內(nèi)容

■圖形輸入、輸出設(shè)備與技術(shù)

■圖形的生成和表示技術(shù)

■圖形操作與處理方法

■圖形信息的描述和表示

■幾何模型的構(gòu)造技術(shù)

■動畫技術(shù)

■圖形實時性和真實感

三、相關(guān)學(xué)科

模計算機(jī)圖形學(xué)

數(shù)

數(shù)

據(jù)

模式識別

四、發(fā)展史

■硬件(大->小)

五十年代MIT—WhirlwindComputer(準(zhǔn)備期)

六十年代IvanSutherland--Sketchpad繪圖系統(tǒng)(發(fā)展期)

七十年代中型機(jī)、小型機(jī)(實用化)

八十年代圖形工作站(推廣應(yīng)用期)

九十年代PC+圖形加速卡(普及和廣泛應(yīng)用期)

■軟件(從非標(biāo)準(zhǔn)一>標(biāo)準(zhǔn)化;從與設(shè)備相關(guān)一>與設(shè)備無關(guān))

七十年代ACMSIGGRAPH--3DCoreGraphicsSystem

八十年代ISO—GKS

ANSI—PHIGS

SGI-GL

九十年代OpenGL

DirectX

五、應(yīng)用

■圖和表■數(shù)據(jù)可視化■娛樂

■計算機(jī)輔助設(shè)計■教學(xué)和培訓(xùn)■圖像處理

■虛擬現(xiàn)實環(huán)境■計算機(jī)藝術(shù)■圖形用戶界面

大連海事大學(xué)大型船舶操縱模擬器

六、應(yīng)用程序演示

■MarineSimuIator(CCTV-1)演示

■MarineSimuIator(Under-sea)演示

■MarineSimuIator(Wuhan-harbour)演示

■CIothSimuIation演示

■FractaITerrain演示

第二章圖形學(xué)基礎(chǔ)

2.1圖形學(xué)的數(shù)學(xué)基礎(chǔ)

1向量

2矩陣

3齊次坐標(biāo)

2.2圖形系統(tǒng)的相關(guān)設(shè)備

1圖形系統(tǒng)的組成

2圖形系統(tǒng)的分類

3圖形系統(tǒng)的顯示設(shè)備

4圖形系統(tǒng)的其他設(shè)備

<2.1圖形學(xué)的數(shù)學(xué)基礎(chǔ)

2.1.1向量

向量具有兩個基本特性:大小和方向。設(shè)有兩個三維向量V](xi,yr

-向量的長度(大小)

匕|=Jxj+yj+z;

V

昌稱為匕的單位化向量

■數(shù)乘向量

aVx=(叼,孫,名)。為實數(shù)

■向量和

=(x1,yl,z1)+(x2,y2,z2)

=(x1+x2,yl+y2,zl+z2)圖匕+匕

■向量的點積

匕?匕=|用悶cose=xi%2+JV2+Z1Z23為兩向量之間的夾角

匕.匕=0o匕JL%

點積滿足分配律、交換律和結(jié)合律

■向量的叉積

iJk

匕x%二/月

4=(y^2一乃4,4X2-Z2^1^172一巧必)

々當(dāng)z2

匕x%=00匕平行V2

叉積滿足分配律,不滿足交換律和結(jié)合律

匕x%+%)=匕x%+%x匕

(匕x%)x匕¥%x(%x匕)

垂直/平行多邊形的方向多邊形的凸凹性

1.2矩陣

mxn階矩陣A定義為:

%%…%》

^m2…amn

其中為被稱為A的第i行第j列元素,(陽92,%3,…,陽)稱為第i個行向

量,(%,?2C均「-4砂),稱為第)個列向量,如果加=〃稱A為n階矩陣或

n階方陣。

■矩陣的加法:

■1+41%2+可2…%+可廣

〃21+^21〃22+》22…a2n+^2n

JD—?■??????????

"ml+“加2+"m2…"mx

?數(shù)乘矩陣:

她1徹2…徹M

加21奶22九5

kA二

???????■■■■?

如加…ka.集

■矩陣的乘法:

Cmx〃=MnxpBpy;(%)心〃

P

矩陣中的元素。廣£《也

k=[

矩陣的乘法滿足分配律、結(jié)合律,不滿足交換律

A{B+C)=AB+AC

ABC=(AB)C=A(BC)

AB^BA

-矩陣的轉(zhuǎn)置:

ana12,,,ana21…

〃21a22…々2nT〃12422am2

Anxn一A=

????■■■■???■???■■?

am2,,,a2n???3am刀

T二爐T

(T)T=A二A

?矩陣的逆:對于一個n階方陣A,如果存在一個n階方陣B,使得

AB二BA=In(單位矩陣),則稱B是A的逆,記為B=A'1

2.1.3齊次坐標(biāo)

所謂齊次坐標(biāo)就是用n+1維向量來表示n維向量,如向量(七,、2,…,乙

用齊次坐標(biāo)表示為(〃再,五大…,歷%〃),其中h為非0實數(shù)。顯然一個向量

的齊次坐標(biāo)表示是不唯一的。

2.2圖形系統(tǒng)的相關(guān)設(shè)備

2.2.1圖形系統(tǒng)的組成

軟件和

顯示設(shè)備圖形計算機(jī)L.

數(shù)據(jù)庫

2.2.2圖形系統(tǒng)的分類

1)采用大、中型計算機(jī)的圖形系統(tǒng)

2)采用圖形工作站的圖形系統(tǒng)

3)采用PC機(jī)的圖形系統(tǒng)

PC+圖形加速卡

2.2.3圖形系統(tǒng)的顯示設(shè)備

PCI/AGP/

CPU?4??顯卡?顯示器

PCI-E總線

圖圖形顯示流程示意圖

一、顯卡(圖形加速卡)

/顯示芯片(圖形處理器,GPU)

/顯存:

RAMDAC:

■總線接口:

輸出接口:

顯卡工住原理值第兩,

二、顯示器

CRT顯本器

液晶顯示器

等離子顯示器

圖具有一位幀緩存的黑白光柵顯示器工作原理

圖具有24位面的真彩色光柵顯示器工作原理

三、其他顯示設(shè)備

頭盔顯示器(HMD:Head-MountedDisplay)

CAVE

(CaveAutomaticVirtualEnvironment)

立體顯示器

2.2.4圖形系統(tǒng)的其他設(shè)備

數(shù)字化儀

第三章輸出圖元

圖具有一位幀緩存的黑白光柵顯示器工作原理

在光柵顯示器上顯示的任何一種圖形,實際上都

是一些具有一種或多種顏色的象素的集合。顯示一個

圖形的過程就是確定一個象素集合及其顏色過程,這

個過程稱為圖形的掃描轉(zhuǎn)換(或光柵化)。

對圖形的掃描轉(zhuǎn)換一般分兩個步驟:

1.先確定有關(guān)象素;

2.再對象素進(jìn)行寫操作(如顏色等)。

3.1線的掃描轉(zhuǎn)換

3.1.1數(shù)值微分法(DDA)理想直線:掃描轉(zhuǎn)換直線:

沒有寬度一個象素寬度

y=m-x+b無數(shù)個點有限個象素點

/7]

b-yx-m-xx

在屏幕上輸入兩端點,假定斜率0〈加4,

讓x從左端點到右端點變化,每步遞增1個

象素,計算對應(yīng)的y的坐標(biāo)。

(乙,為)(4+1,H+1)

/+1=%+1

yk+i=m(xk+1)+6=mxk+b+m=yk+m

XIX2左

E,)—(x+1,Round{yk+m))

圖3T

OJ

r0<m<l:X每步遞增1個象素,y遞增m(直線斜率)

(X左,入)—(4+I,Roundlyk+m))

向<

右m>l:可將x和y的規(guī)則交換,y每步遞增1個象素,計算對應(yīng)的x的坐標(biāo)

(x,y)^(Round(x+—),^+1)

kkkm

從0<m<1:x每步遞減1個象素,y減少m(直線斜率)

向(乙,力)一(4一1,Round(yk-m))

m>\:同樣可將x和y的規(guī)則交換,y每步遞減1個象素,x減少1/m

(4,以)—(Round(x~~\y-1)

kmk

3.1.2Bresenham畫線算法

圖3-3局部顯示屏幕

圖3-4向右繪制的直線(0<加41)圖3-5向左繪制的直線(加>1)

圖3-6對(工,”)(%,/)兩圖3-7在取樣位置乙+1處,候選

點間的線段進(jìn)行掃描轉(zhuǎn)換象素到線段y坐標(biāo)之間的豎直距離

尸加6+1)+6

"2=(%+1)->

d、—d2—2y—2y左一1=2加+1)+2b—2y左一1

XkV1

加=ZA=電

演-4Ax

Ax(4—出)=Ax[2——(X/,+1)+2b—2力—1]

Ax"'

=2Ay?xk—2Ax?yk+2Ay+AY(2Z?—1)

=2Ay?xk-2Ax-yk+c其中c=24y+Ax(2Z?-1)

給定線段從左向右繪制,Ax>0,所以Ax(4-4)的符號與4—刈的符號相同。

令Pk=Ax(4-刈),稱以為Bresenham畫線算法中第k步的決策參數(shù)。

X.X.+1

pk-Ax(d[-d2)=2Ay-xk-2Ax'yk+c

Pk<0,則4—出<。,4<"2,選擇繪制(4+1,%);

Pk>0,則dx-d2>0,4>d2,選擇繪制(4+Vyk+1);

Pk=3選擇繪制?+L0+1)或a+L”)都可以,約定繪制?+1,%)。

(4,外)—(招+1,然+1)

以Pk&。

%左+1=4+1J4+1=

為+1A>°

Pk=2與?/_2Ax$+c

??

Bresenham畫線算法中第k+1步的決策參數(shù)Pk

Pk+i=2Ay?乙+]-2Ax?%+cX:

夕/1一74=2綠?4+]-2??+]+。一(2力?4-2??+。)

=2綠(Z+if.)-2Ax(%+i-%)

Pk+產(chǎn)Pk+2AW/+1-4)-2Ax(%|一力)

='"R可得

由項:+1=項+1,外+1:

U+lPk>。

2Pk4O

jpk+Ay

Pk+\-]“A

IA+W-2AxPk>0

Pk+2AyPk<。

pk+\=

pk+2Ay-2AxPk>。

由此可見,如果計算出第一個決策參數(shù)Po,其它的決策參數(shù)PA

可以由遞推算出(遞推算法中只有整數(shù)的加減法,易于硬件實現(xiàn)),

根據(jù)決策參數(shù)的符號可以決定選擇哪個象素點繪制,直到整個線段繪

制完畢。

p0=2Ay?-2Ax-ys+2Ay+Ax(2Z?—1)

—2Ay,Xs-2Ax,(——,xs+6)+2Ay+Ax(2Z?-1)

=-2Ax?b+2Ay+Ax(2b—1)

=2Ay-Ax

0<m<1時的Bresenham畫線算法:

1.輸入線的兩個端點,并將左端點存儲在(%s/s)中;

2.將(4,/)裝入幀緩沖存儲器中,畫出第一個點;

3.計算決策參數(shù)的第一個值:p0=2Ay-Ax;

4.從k二0開始,在沿線的每個4處,進(jìn)行下列檢測:

假如<0,下一個待畫點是(4+1,以),且外+1=外+2八y;

否則下一個待畫點是(項.+1,以+1),且Pk+i=Pk+2Ay-2Ax;

5.重復(fù)步驟4,共AxT次。

作業(yè)一

1.圖形與圖像的聯(lián)系與區(qū)別。

2.顯存與幀緩存是一回事嗎?一顯示器可顯示256種顏色,其分辨率為

1024*1024,則需要的幀緩存容量至少為多少?

3.顯卡的主要組成有哪些?簡述顯卡的工作原理。

4.編程題:用VC或其他語言編寫程序,實現(xiàn)完整的Bresenham畫線算法。

3.2圓的掃描轉(zhuǎn)換一一中點畫圓法

{x-xcy+{y-ycf=r-

圖3—8圖3—9

坐標(biāo)系中任意一點(X,y)與圓的位置關(guān)系:在圓內(nèi)、在圓上和在圓外。

「<0(x,y)位于圓邊界內(nèi)

farciedy)=x~+y2<=0(x,y)位于圓邊界上

、>0(x,y)位于圓邊界外

圖3To

£力區(qū)(、,/)=、2+/一爐為中點畫圓算法的決策參數(shù)

第k步的決策參數(shù)以:Xr

2

Pk=farcied+l,yk-0.5)=(xk+1)+(yk-0.5)2—戶

Pk<0,中點在圓內(nèi),選擇繪制(々+1,”);

Pk>0,中點在圓外,選擇繪制(4+1,以-1);

Pk=o,選擇繪制?+1,%-1)或?+1,")都可以,約定繪制6+

(XQ%)—(4+』+1)

ykpk<°

4+1=為:+1"+1=

力—1PkN°

中點畫圓算法第k步的決策參數(shù):

Pk=fcircle^k+Lh一0.5)=乂+I)2+(然一OS)?—/

中點畫圓算法第k+1步的決策參數(shù):

222

Pk+1=fcircle(Xk+l+1,然+1一0?5)=(4+1+1)+(%+1一0.5)-r

Pk+\~Pk=(4+i+1)2+(%+i-。.5)2___+1)2+(然_0.5)2-r2]

222

二[(%+1)2—(/+1)]+[(加-0.5)-(然-0.5)]

Pm=A+K%+IP一@+1)?]+[(%]一OS:—(%_Oy

"A<°

X

k+\=Z+1,J4+1

》女一1P20

74+24+3=夕后+24+]+1A<°

Pk+\~

Pk+2*+3-2(yk-1)=pk+24+1+1-2yA+iPk?。

Pk+2?+1)+1=A+2/+1+1Pk<。

Pk+i~

Pk+20+1)+1—2(yk-1)=pk+2%a+1+1-2yk+ipk>0

在起始位置(0,r)處,初始決策參數(shù)為:

PO=/circled-0?5)=1+(一一0.5)2—/=[一尸

由此可見,如果計算出第一個決策參數(shù)Po,其它的決策參數(shù)”

可以由遞推算出(遞推算法中只有整數(shù)的加減法,易于硬件實現(xiàn)),

根據(jù)決策參數(shù)的符號可以決定選擇哪個象素點繪制,直到八分圓繪制

完畢。其它七個八分圓可由圓的對稱性進(jìn)行繪制。

中點畫圓算法:

1.輸入圓的半徑r和圓心(血,%),得到圓心在原點的圓周上的第一點為:

(*0,歹0)—(0,r);

2.計算決策參數(shù)的初始值:Po=j--;

3.從k=0開始,進(jìn)行下列檢測:

假如夕%<°,下一個待畫點是(4+1,以),Pk+i=Pk+2x,+1+1.

否則下一個待畫點是(4+1,%-1),且4+1=Pk+2/+1-2/+]+1.

4.確定在其它七個八分圓的對稱點;

5.將每個計算出的象素位置(x,y)移動到中心在(兒,%)的圓路徑上,

并畫坐標(biāo)值。x=x+xc,y=y+yc

6.重復(fù)步驟3—5,直至x>yo

3.3橢圓的掃描轉(zhuǎn)換一一中點畫橢圓法

橢圓中心在坐標(biāo)原圖3—11中心(%,〉,),長半

點的標(biāo)準(zhǔn)位置橢圓軸q和短半軸外的橢圓

“平移變換

橢圓中心在其它地

方的標(biāo)準(zhǔn)位置橢圓

H旋轉(zhuǎn)變換

非標(biāo)準(zhǔn)位置的橢圓

圖3—12橢圓的對稱性

橢圓某點處的斜率為:

dy_2小

dx

在區(qū)域1和區(qū)域2的交界處斜率為一1

蟲=7

dx

圖3-13橢圓的處理區(qū)域

r\2c2

2Gx=2rxy

所以從區(qū)域1移至區(qū)域2的條件是>2rry

中心在坐標(biāo)原點(0,0)的標(biāo)準(zhǔn)位置橢圓,定義橢圓函數(shù)為:

<0(x,y)位于橢圓邊界內(nèi)

z*z\22.2222

/ellipse。,y)=GX+G歹~rxry\=0(x,y)位于橢圓邊界上

>0(x,y)位于橢圓邊界外

為中點畫橢圓算法的決策參數(shù),區(qū)域1的決策參數(shù)記為A:

PL=狐pseKOk)=ryXk+-rxry

凡=,颯e6+1,為一。-5)二弓2@+廳+々2(”一o《J一九2

第k步繪制(與,然)假設(shè)第k+1步繪制(X-i,力+1)

,1左<0第k+1步繪制(乙+L以)%+1=%

plk20第k+i步繪制E+1,%—1)以+i=yk-i

在區(qū)域1,中點畫橢圓算法第k+l步的決策參數(shù):xkx古1xt2

凡+1二狐/々+1+1,九+1一。5)圖3T4區(qū)域1(孫川

PL+l=d(/+l+1)2+1(九+1—0.5)2_r2r2

風(fēng)L日人+1)+If+/出廠0.5)2-

2

P1k+i="+1)2+2r;(Xk+1)+rv+&2(%+]—0.5)2_立+小力一。5了一日/一。5了

風(fēng)+廣風(fēng)+2G2(4+1)+d+/[(加―0.5)2_u_0.5力

pl"i=plk+2%2(/+1)+勺2+&2K_o5)2_(%—?!?]

pik<°=yk

風(fēng)+1=plk+2r;g+1)+Y=plk+2r^xk+1+r:

plk>0>人+i二>左—1

2

“k+i="L,+2r:(4+1)+々2+2r^-yk+1)=plk+2r^xk+x+ry-2r^yk+]

由此可見,在區(qū)域1中如果我們能計算出第一個決策參數(shù)川o,其

它的決策參數(shù)pl可以由遞歸算出,把兩個候選象素的中點代到?jīng)Q策

參數(shù)中,根據(jù)決策參數(shù)的符號可以決定選擇哪個象素點繪制,直到區(qū)

域1繪制完畢。在區(qū)域1中,決策參數(shù)的初始值可通過橢圓函數(shù)在起始

點(0,々)處求值得到:

2

P】o=feinPse^+1,4一0,5)=rv-r^ry+%

區(qū)域2的決策參數(shù)記為p2k:

P2k=/ellipse(Xk,/)=ryXk+J—

x22

P?k=feinPse{k+0$,%—1)=r}(xk+0.5)+/(%—Ip一YY

第k步繪制(/,/)假設(shè)第k+1步繪制(x《+i,力+i)

P2k—。弟k+1步繪制(x/c+\,yk—1)4+i=x%+1

P2k>0第k+1步繪制(與,以—1)xk+i=xk

在區(qū)域2,中點畫橢圓算法第k+1步的決策參數(shù):

P2k+1=fellipse(Xk+\+°5,》左+1-D

(《加_)

p2k+l=YZ+1+05)2+2(]2_r2r2圖3-15區(qū)域2(%"Q

p2k+i=/(/+1+0.5)2+1[他一1)—1)[2一G2G2

2222

p2k+i=d(/+i+0?5『+rx(yk-1)-2r\yk-1)+-4葉++0.5)-r^xk+0.5)

陽+1圈-2/-1)+尋日(%+0.5)2+0.5)2]

P2m=P2k—2/(%-1)+1+不[(/討+O.5)2一(4+o.5)2]

P2k<0Z+i=4+1

2

P2g=P2k-2/(力_1)+1+2G2(/+1)=p2「2/%+]+/+2ryxk+i

P2k>。*+i=*卜

P2k+i=P2「2G之(%-1)+&2=p2k_2G2弘+]+丫;

由此可見,在區(qū)域2中如果我們能計算出第一個決策參數(shù)p20,

其它的決策參數(shù)夕2可以由遞歸算出,把兩個候選象素的中點代到?jīng)Q

策參數(shù)中,根據(jù)決策參數(shù)的符號可以決定選擇哪個象素點繪制,直

到區(qū)域2繪制完畢。在區(qū)域2中,決策參數(shù)的初始值可由區(qū)域1中最后

點(x/)求值得到:

p2o=/ellipse^+gy—1)=42a+0.5)2+/(y—if--j;

中心在坐標(biāo)原點的標(biāo)準(zhǔn)位置橢圓掃描轉(zhuǎn)換算法:將

1.輸入橢圓長短軸。弓,得到橢圓第一點為:(/,比)二(0,勺)勺

7717

2.計算區(qū)域1中決策參數(shù)的初始值:21。=弓-4弓+]丁;

3.在區(qū)域1中,從k=0開始,進(jìn)行下列檢測,直至2弓

假如pl%<0,下一個待畫點是(4+1,力),plk+l=風(fēng)+2弓2/+]+弓2;

否則下一個待畫點是(4+1,然一1),21左+1=夕1A+262々+1+々2一2心2%+1;

確定其它三個象限中的對稱點

4.使用區(qū)域1中最后點(xj)來計算區(qū)域2決策參數(shù)的初始值:

22

p2o=+OS)?+rv(j/-l)-rvY

5.在區(qū)域2中,從k二0開始,進(jìn)行下列檢測,直至尸0:

22

假如-2%>0,下一個待畫點是心,丁-1),夕2什]二22A「2不”X+G;

否則下一個待畫點是(4+1,%—1),夕2八]=p2k—2々2%+]+1+2與2隊小

確定其它三個象限中的對稱點

第四章二維幾何變換

4.1基本變換

4.2矩陣表示和齊次坐標(biāo)

4.3復(fù)合變換

4.4其他變換

4.5二維笛卡爾坐標(biāo)系間的變換

4.1基本變換

4.1.1平移

平移是將圖形從一個位置移到另一個位置的變換。

x'=%+tx

y'=y+ty

用列向量表示坐標(biāo)點p,p':?P'(X',y)

ty

X,-|「X

p=p=?p(x,y)

令T=4

tx

得到平移變換的矩陣表示為:圖4—12點平移到夕'點

P'=P+T

4.1.2旋轉(zhuǎn)

旋轉(zhuǎn)是將圖形繞某一旋轉(zhuǎn)點旋轉(zhuǎn)一定角度的變換。

x'=/cos0+6)=rcos^cos^-rsin^sin^

y'=〃sin(0+e)=_cos0sine+rsin°cos。

x二rcos(f),y=rsin^

x'=xcos0-ysinO?P'(X;y)

y'=xsmO+ycosO

r

。一。?P(x,y)

Acossin、3

令R=r

sin。cos。\

'M

得到繞坐標(biāo)原點旋轉(zhuǎn)變換的矩陣表示為:

cos0-sin。*圖4—2p點繞原點旋轉(zhuǎn)到p'點

y'sin。cos0y_

P'=R-P

4.1.3縮放

縮放是將圖形相對于某一固定點放大或縮小的變換。

X'=X?sx

了二>0

?P(x,y)

y5)

得到相對于坐標(biāo)原點縮放變換的

矩陣表示為:

圖4—3p點相對于原點x方向縮

放力,y方向縮放力得到夕'點

P'=SP

4.2矩陣表示和齊次坐標(biāo)

平移、旋轉(zhuǎn)和縮放三種基本變換的矩陣表示分別為:

P=P+TP=RPP=SP

1.對圖形做相對于坐標(biāo)原點先旋轉(zhuǎn)(R)、再縮放(S)的變換:

先旋轉(zhuǎn)變換:P'=R.P

再縮放變換:P'=SP=S(RP)=(SR)?P=MP

2.對圖形先做平移變換(T),再相對于坐標(biāo)原點做縮放變換(S):

先平移變換:P=P+T

再縮放變換:P'=S?尸=S-(O+T)=S-P+S-T

表4-1兩個例子中的矩陣運算次數(shù)

一個占

1八、、三千個點三千個點(合并后)

例12次x6000次x3001次x

例21次x,l次+3000次x,3000次+3001次x,3000次+

在實際圖形系統(tǒng)中,經(jīng)常對圖形做多個變換,這就需要進(jìn)行大量的矩陣計算。

為了減少計算量,比較好的方法是將多個變換矩陣合并成一個復(fù)合變換矩陣。

所謂齊次坐標(biāo)就是用n+1維向量來表示n維向量,向量(2,%2,…,招)的齊

次坐標(biāo)表示是其中h為非0實數(shù)。二維點(x,y)的齊次坐

標(biāo)表示為(hx,hy,h),通常向1=1,(x,y)的齊次坐標(biāo)表示為(x,y,1)。

平移變換:

?P'(M,y5)

x'=x+4ty

?p(x,y)

y'=y+ty

用齊次坐標(biāo)表示坐標(biāo)點P,P\

tx

10X

令平移矩陣

79,6)=01y

001

得到平移變換的矩陣表示為:

對于繞坐標(biāo)原點的旋轉(zhuǎn)變換:

?P'(X:y)

x'=xcosO-ysinO

y'=xsin夕+ycos夕r

eep(x,y)

用齊次坐標(biāo)表示坐標(biāo)點,”

cos。一sin。0

令旋轉(zhuǎn)矩陣尺(。)=sin<9cos<90

001

得到繞坐標(biāo)原點旋轉(zhuǎn)變換的矩陣表示為:

一sin。0x

cos。0y

011

p=R(e)?p

對于相對于坐標(biāo)原點的縮放變換:

%'二X?sx

歹'二》巴

>p(x,y)

用齊次坐標(biāo)表示坐標(biāo)點p,p'

?p'(x',y)

邑oo

令縮放矩陣S(Sx,s,)=0Sy0

001

得到相對于坐標(biāo)原點縮放變換的矩陣表示為:

0

Sy

0

)?

采用齊次坐標(biāo)后,所有基本變換表示成矩陣的乘法,圖形在做多個變

換時,可將各變換矩陣按先后次序相乘,形成一個復(fù)合變換矩陣M;圖形上

的坐標(biāo)點只須與M相乘,便可完成一連串變換,得到新的坐標(biāo)點。

4.3復(fù)合變換

4.3.1復(fù)合平移

復(fù)合平移是將圖形做二次以上的平移變換。

在二維坐標(biāo)系中,將點)(x,y)平移兩次,第一次在x方向、y方向分別平

移&,&,第二次在x方向、y方向分別平移的心,得到點

P=T(M>&(%,%)?口

=[7&2,3)"(&,%)],

1o%]ri0%+4.2

T9242),T(&,外1)=。1%?01。=01,+ty2

001J[ooijL°01

=T(1+&2冊+。2)

P=TQxl+&2,4+&),0

4.3.2復(fù)合旋轉(zhuǎn)

復(fù)合旋轉(zhuǎn)是將圖形繞坐標(biāo)原點進(jìn)行多次旋轉(zhuǎn)變換。

將點Mx/)旋轉(zhuǎn)兩次,先繞坐標(biāo)原點逆時針旋轉(zhuǎn)q角,再繞坐標(biāo)原點逆

時針旋轉(zhuǎn)。2角,得到點夕:

P'=R(2)?[火⑹,口=網(wǎng)2)?P

cos^2-sin6)20cos6]—sin40

?sin4cos。10

R?.RG)=sin2cos^20

001001

cosdcos02-sin0{sin02-sinqcosa-cos61sin020

cos61sin2+sin仇cos%cos,cosa—sin仇sin%。

001

cos(^+02)-sin(4+2)0

sin(a+2)cos{01+^2)0=K(a+a)

001

4.3.3復(fù)合縮放

復(fù)合縮放是將圖形相對于坐標(biāo)原點進(jìn)行多次縮放變換。

將點)(兀V)縮放兩次,先相對于坐標(biāo)原點縮放外,再相對于坐標(biāo)原

點縮放%,%,得到點夕:

尸'=862%2)3(%?。?尸]

=[8(&2%2>5(%巴1)],尸

K°o[「S"00

S(Sx2,S”>S(%i,Syi)=05^20.0s.0

001JLo01

Sjcl,Sx200

二0Syi'sy20

001

=S(Sxi?Sx2,s,i-Sy2)

戶'=5(%1?12,5..5丁2).尸

4.3.4繞(匕,%)點的旋轉(zhuǎn)變換

當(dāng)旋轉(zhuǎn)點不為坐標(biāo)原點,而是任一點(芍,以),圖形繞(5,乂)旋轉(zhuǎn)夕

角的旋轉(zhuǎn)變換:

1.平移圖形使旋轉(zhuǎn)點(芍,外)與坐標(biāo)原點重合,平移變換矩陣為7(-%,-%);

2.圖形繞坐標(biāo)原點旋轉(zhuǎn)。,旋轉(zhuǎn)變換矩陣為&(夕);

3.平移圖形使旋轉(zhuǎn)點回到其原始位置,平移變換矩陣為。

繞(當(dāng),乂)旋轉(zhuǎn)。角旋轉(zhuǎn)變換的復(fù)合變換陣/=T(Xr,yAR3)?T(f,—y)

圖4—4繞(再旋轉(zhuǎn)。角的旋轉(zhuǎn)變換

〃=7KJ)H(e)?T(f券)

10%cos^-sin^010-xr

01sin5COS000

yr1_K

00i001001

cos5-sin0xr(1-cos5)+sin5

二sin。cos5yr(1-cos5)-xrsin5

001

P=MP

4.3.5相對于(號,力)點的縮放變換

當(dāng)固定點不為坐標(biāo)原點,而是任一點(Xf//),圖形相對于縮放

系數(shù)為%,S?的縮放變換:

1.平移圖形使固定點(號,〃)與坐標(biāo)原點重合,平移變換矩陣為T(-X/,-刀.);

2.圖形相對于坐標(biāo)原點縮放工,S),縮放變換矩陣為8(%,%);

3.平移圖形使固定點回到其原始位置,平移變換矩陣為

相對于(號,〃)點縮放變換的復(fù)合變換陣M=?S(Sx,%>T{-xf-yf)

圖4—5相對于(x/J/Jl勺縮放變換

(

X

)

J

7,

c

),

?s

s(

K二

J)

sn

4.3.6變換的次序

圖形先后做多個變換MM,…,M〃,復(fù)合變換矩陣M由各變換矩陣依次

相乘得到,要注意各變換矩陣相乘的次序。

例:如圖所示,對同一三角形分別進(jìn)行兩次復(fù)合變換,請畫出每次復(fù)合變

換后三角形的位置。復(fù)合變換矩陣分別為:

R(90°廠7一1,0)7(—1,0)/(90〉

圖4-6變換矩陣相乘的次序不同得到的變換結(jié)果不同

4.4其他變換

4.4.1反射(對稱)

圖4—7反射變換

abde反射變換

100-1關(guān)于x軸

-1001關(guān)于y軸

ab0-100-1關(guān)于原點

0110關(guān)于y=x

常用的反射變換矩陣通式:M"de0

0010-1-10關(guān)于y=-x

■4.4.2錯切

圖4—8錯切變換

-

x'X1bO-Xx+byX’v'錯切變換

y'=Msh-y—d10y—dx+yb彳O,d=0x+byy關(guān)于x軸

ii001i1b=0,dw0Xdx+y關(guān)于y軸

1bO-

相對于x、y軸的錯切變換矩陣通式:Mshd10

001

圖形相對于與X或y軸平行的直線做錯切變換可由以下兒步完成:

1.平移圖形使直線與x或y軸重合;

2.圖形相對于x或y軸做錯切變換;

3.平移圖形使直線回到其原始位置。

例:對圖形相對于直線y二T做錯切變換,錯切參數(shù)為1/2。

%%

M=7(0-(;)1(0,1)=010

001

4.5二維笛卡爾坐標(biāo)系間的變換

yi

vi

cP(U,V)

2?

iL__________

u

o237

(1)

yi

vip

P、%。

2?5

pbP'S-

1一

u

。23r

(3)

yiPN=P'uv

=R(-30。).以

2=H(—30)7(—2,—1)?七

1=M%

(2)

yi

M=7?(-30)-7(-2,-l)

cos(-30)-sin(-30)OT1

sin(-30)cos(-30)00

01

yi

%=MP”

"(V3+%一

1

ou'

如圖兩個笛卡爾坐標(biāo)系:xy系和uv系。

圖形從xy系坐標(biāo)變換到uv系坐標(biāo),必須建立uv系到xy

系的變換:

oXX

1.平移UV系,使UV系的坐標(biāo)原點與xy系的原點重合;a

10_XQ

丁(一/,一y0)=°1_7o

001

2.旋轉(zhuǎn)uv系8角,使u軸與X軸重合。

cos。sin。0

R(—8)=—sin。cos。0

001

將這兩個矩陣合并成復(fù)合矩陣:

M=R(—”(一/,一為)

圖4—9笛卡爾坐標(biāo)系間變換

yi

在許多情況下,兩坐標(biāo)系中U軸和X軸的夾角8并

不知道,此時可利用UV軸的軸向量來完成旋轉(zhuǎn)變換:

/U

U軸的單位向量為u(ux,uy)

22

Ux+uy=1

Ux

-------1Jcin—=U

COS0=-yOUx

\u^+u2xA2+u2

yy

圖利用軸向量

cos。sin。0~uo-4—10

x進(jìn)行旋轉(zhuǎn)變換

R(叫=-sin。cos。0—-uy%0

001001

V軸的單位向量為V(匕,V,,它是由單位向量〃旋轉(zhuǎn)90度得到的

V=-u.V=uXvVXcos90°-sin90°0ux

-

-4UUysin90°cos90°0u

yo州y

1[1

—V

R(-e)=~Uyux0匕yD00

001001

因此,由UV坐標(biāo)軸的單位向量可得到兩坐標(biāo)系的旋轉(zhuǎn)變換陣。

第五章二維觀察

5.1例子與基本概念

5.2觀察流程

5.3建模變換

5.4觀察變換

5.5規(guī)范化變換

5.6視口變換

5.1例子與基本概念

X

(-0.5,-0.5)

(-2.0,-2.0)

建模(局部)坐標(biāo)系世界(全局)坐標(biāo)系設(shè)備坐標(biāo)系設(shè)備坐標(biāo)系

ModelingCoordinateWorldCoordinateDeviceCoordinateDeviceCoordinate

圖5-1用OpenGL顯示一個簡單的兩維圖形

裁男/觀察窗口(cIipping/viewingwindow):場景中要顯示的區(qū)域。

屏幕(screen):圖形顯示器輸出的最大區(qū)域。

窗口(window):小于或等于屏幕區(qū)域。

視口(viewport):小于或等于窗口區(qū)域。

二維觀察變換(ViewingTransformation):圖形由世界坐標(biāo)系裁剪窗口映射

到設(shè)備坐標(biāo)系視口的過程。

5.2觀察流程

?HelloME區(qū)I

裁剪窗口yn*

~7iXn

(-0.5,-0.5)

(-2.0,-2.0)

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論