曹穎超
【摘 要】在計(jì)算機(jī)圖形學(xué)教學(xué)中,視向變換是一個(gè)重點(diǎn)難點(diǎn),而這部分內(nèi)容又是后續(xù)學(xué)習(xí)的基礎(chǔ),本文根據(jù)筆者多年的教學(xué)實(shí)踐,詳細(xì)闡述了繞任意直線旋轉(zhuǎn)的講解要點(diǎn)及其與視向變換的關(guān)系。使學(xué)生易于理解視向變換,間接降低三維圖形顯示的難度,對(duì)于學(xué)生掌握三維圖形的顯示有著極為重要的意義。
【關(guān)鍵詞】視向變換;三維復(fù)合變換;三維圖形顯示
在計(jì)算機(jī)圖形學(xué)三維圖形顯示中,視向變換是比較抽象難理解的一部分內(nèi)容[1],而這部分內(nèi)容又是三維裁剪、消隱和真實(shí)感圖形的基礎(chǔ),因此可以說(shuō)是難點(diǎn)也是重點(diǎn)。三維復(fù)合變換中的繞任意直線旋轉(zhuǎn)與視向變換有著極為密切的聯(lián)系,如果在教學(xué)中將繞任意直線的旋轉(zhuǎn)變換講解透徹,學(xué)生就可以自己推導(dǎo)理解視向變換的實(shí)現(xiàn)過(guò)程。本文根據(jù)作者多年的教學(xué)實(shí)踐,詳細(xì)闡述了繞任意直線旋轉(zhuǎn)的講解要點(diǎn)及其與視向變換的關(guān)系。
1 繞任意直線旋轉(zhuǎn)在三維圖形顯示中的重要性
在三維圖形的基本顯示流程中(如圖1)[2],視向變換又稱(chēng)觀察變換是最為抽象的部分,其目的是將世界坐標(biāo)系中的三維圖形變換到視坐標(biāo)系(又稱(chēng)觀察坐標(biāo)系)。其實(shí)質(zhì)是尋找一個(gè)坐標(biāo)變換矩陣,使得視點(diǎn)為視坐標(biāo)系的原點(diǎn),觀察方向?yàn)橐曌鴺?biāo)系的Z軸方向。由于世界坐標(biāo)系是一個(gè)右手坐標(biāo)系,視坐標(biāo)系是一個(gè)左手坐標(biāo)系,實(shí)現(xiàn)時(shí),先將將觀察方向變換為視坐標(biāo)系的Z軸,再將X軸取反方向。這一點(diǎn),與三維圖形繞任意直線的旋轉(zhuǎn)基本相同。
圖1 三維圖形基本顯示流程
在三維圖形繞任意直線的旋轉(zhuǎn)中,因?yàn)樵诨編缀巫儞Q中有三維圖形繞三條坐標(biāo)軸的旋轉(zhuǎn)變換,所以這個(gè)問(wèn)題的基本思路就是將該直線變換為某一條坐標(biāo)軸,再做旋轉(zhuǎn),然后依次做前面變換的逆變換。
2 繞任意直線旋轉(zhuǎn)的講解要點(diǎn)
設(shè)有圖形繞任意一條過(guò)原點(diǎn)的直線(對(duì)于不經(jīng)過(guò)原點(diǎn)直線可以作一個(gè)平移變換使之過(guò)原點(diǎn))逆時(shí)針旋轉(zhuǎn)θ角,如圖2,直線用OE表示。A、B、C分別是E點(diǎn)在X、Y、Z軸的投影,也是該直線的方向矢量。
圖2 繞任意直線的旋轉(zhuǎn)
講解要點(diǎn)一:在計(jì)算機(jī)圖形學(xué)中,任何圖形都是用點(diǎn)表示,對(duì)圖形作變換也就是對(duì)表示圖形的點(diǎn)作變換。所以要使得直線OE與Z軸重合,只要使表示直線的兩個(gè)點(diǎn)落到Z軸上就可以了。由于O點(diǎn)在繞坐標(biāo)軸旋轉(zhuǎn)中位置不變,所以問(wèn)題轉(zhuǎn)化為使得E點(diǎn)落到Z軸上。
講解要點(diǎn)二:繞坐標(biāo)軸旋轉(zhuǎn)過(guò)程中,該坐標(biāo)保持不變,所以要找出過(guò)點(diǎn)E且垂直于該坐標(biāo)軸的平面。
講解要點(diǎn)三:繞坐標(biāo)軸旋轉(zhuǎn)的過(guò)程中,點(diǎn)到該坐標(biāo)軸的距離保持不變。
圖形繞任意過(guò)原點(diǎn)直線逆時(shí)針旋轉(zhuǎn)θ角的過(guò)程:
首先使該直線與Z軸重合,即先使E落到Z軸上,第一步,將E點(diǎn)繞X軸逆時(shí)針旋轉(zhuǎn)α角,使得E點(diǎn)落到XOZ平面,找出過(guò)E點(diǎn)且垂直于X軸的平面,再找出該平面與XOZ平面的交線,根據(jù)要點(diǎn)二可知,E′點(diǎn)在該交線上,根據(jù)要點(diǎn)三,可以確定E′的具體位置,在直角三角形AEE′中,可以確定α,得到旋轉(zhuǎn)變換矩陣Rx(α);第二步,將E′點(diǎn)繞Y軸順時(shí)針旋轉(zhuǎn)β角,使之落到Z軸上,根據(jù)要點(diǎn)二,XOZ平面垂直于Y軸,根據(jù)要點(diǎn)三,可以確定E″在Z軸上的位置,在直角三角形OE′E″中,可以確定β角,得到旋轉(zhuǎn)變換矩陣Ry(-β)。至此,直線OE與Z軸重合。
其次,使圖形繞該直線即Z軸逆時(shí)針旋轉(zhuǎn)θ角,得到矩陣Rz(θ)。
最后,再將直線變換回原來(lái)的位置,即先繞Y軸逆時(shí)針旋轉(zhuǎn)β角,得到矩陣Ry(β)。接著繞X軸順時(shí)針旋轉(zhuǎn)α角,得到矩陣Rx(-α)。
將所有變換矩陣依次相乘,得到繞任意直線旋轉(zhuǎn)的組合變換矩陣 T=Rx(α)Ry(-β)Rz(θ)Ry(β)Rx(-α)。
3 三維圖形顯示中的視向變換
在三維圖形顯示中,視向變換是將世界坐標(biāo)系變換為視坐標(biāo)系,一般假定給出視點(diǎn)E后,視點(diǎn)到世界坐標(biāo)系原點(diǎn)的向量EO即為觀察方向,則E點(diǎn)為視坐標(biāo)系的原點(diǎn),EO為視坐標(biāo)系的Z軸。
圖3 視向變換
在變換過(guò)程中,要強(qiáng)調(diào)的是,坐標(biāo)變換與物體變換是互逆的。
第一步將坐標(biāo)原點(diǎn)平移至視點(diǎn)E,得到平移變換T1。
第二步,將世界坐標(biāo)系的Z軸變換到EO,首先將坐標(biāo)系繞X軸逆時(shí)針旋轉(zhuǎn)90度,將Z軸旋轉(zhuǎn)到Y(jié)軸的反方向,相當(dāng)于物體變換Rx(-90);再將坐標(biāo)系繞Y軸順時(shí)針旋轉(zhuǎn)α角,將Z軸旋轉(zhuǎn)至Ec,相當(dāng)于物體變換Ry(α);最后將Z軸旋轉(zhuǎn)至EO,這時(shí)由于EOc平面是Z軸和Y軸所在平面,所以垂直于X軸,所以這是將坐標(biāo)繞X軸逆時(shí)針旋轉(zhuǎn)β角,相當(dāng)于物體變換Rx(-β)。
第三步,將世界坐標(biāo)系的X軸取反向,得到變換矩陣T(-x),這就是左手坐標(biāo)系——視坐標(biāo)系。于是得到視向變換矩陣為T(mén)=T1·Rx(-90)·Ry(α)·Rx(-β)·T(-x)。
由于三維圖形顯示過(guò)程復(fù)雜、抽象,步驟多,尤其是視向變換和投影變換不易理解,因次,在繞任意直線的旋轉(zhuǎn)中將要點(diǎn)講解清楚,從而使學(xué)生易于理解視向變換,間接降低三維圖形顯示的難度,對(duì)于學(xué)生掌握三維圖形的基本顯示流程有著極為重要的意義。
【參考文獻(xiàn)】
[1]陳元琰,張睿哲,吳東,等.計(jì)算機(jī)圖形學(xué)實(shí)用技術(shù)[M].2版.清華大學(xué)出版社,2006:147-150.
[2]楊欽,徐永安,翟紅英.計(jì)算機(jī)圖形學(xué)[M].清華大學(xué)出版社,2005:88-94.
[責(zé)任編輯:湯靜]