版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)四年級下班主任工作計劃范文
- 教師教學(xué)工作計劃范文五篇
- 三年級上學(xué)期語文教學(xué)計劃合集5篇
- 心理工作計劃
- 2022年高中德育工作計劃
- 高中數(shù)學(xué)教學(xué)工作計劃模板匯編五篇
- 2022高考滿分作文寫酒
- 銀行主任競聘演講稿三篇
- 下學(xué)期工作計劃
- 2022國慶節(jié)創(chuàng)意活動方案流程策劃
- 英語演講技巧與實訓(xùn)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 智慧水產(chǎn)養(yǎng)殖解決方案10.9
- 《預(yù)防未成年人犯罪》課件(圖文)
- 2024-2030年全球及中國環(huán)境健康與安全(EHS)行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2024年浙江省能源集團(tuán)應(yīng)屆生招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 材料工程管理人員個人年終工作總結(jié)范文
- 黑龍江金融服務(wù)支持中俄貿(mào)易的現(xiàn)狀、不足和展望
- 福建省公路水運工程試驗檢測費用參考指標(biāo)
- (小學(xué)組)全國版圖知識競賽考試題含答案
- 四種“類碰撞”典型模型研究(講義)(解析版)-2025年高考物理一輪復(fù)習(xí)(新教材新高考)
- 2024年新人教版七年級上冊數(shù)學(xué)教學(xué)課件 第六章 幾何圖形初步 綜合與實踐 設(shè)計學(xué)校田徑運動會比賽場地
評論
0/150
提交評論