繞任意軸旋轉(zhuǎn)

繞任意軸旋轉(zhuǎn)

ID:47027804

大?。?69.62 KB

頁數(shù):15頁

時(shí)間:2019-06-29

繞任意軸旋轉(zhuǎn)_第1頁
繞任意軸旋轉(zhuǎn)_第2頁
繞任意軸旋轉(zhuǎn)_第3頁
繞任意軸旋轉(zhuǎn)_第4頁
繞任意軸旋轉(zhuǎn)_第5頁
資源描述:

《繞任意軸旋轉(zhuǎn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、幾何變換詳解在三維圖形學(xué)中,幾何變換大致分為三種,平移變換(Translation),縮放變換(Scaling),旋轉(zhuǎn)變換(Rotation)。以下討論皆針對DirectX,所以使用左手坐標(biāo)系。平移變換將三維空間中的一個(gè)點(diǎn)[x,y,z,1]移動(dòng)到另外一個(gè)點(diǎn)[x',y',z',1],三個(gè)坐標(biāo)軸的移動(dòng)分量分別為dx=Tx,dy=Ty,dz=Tz,即x'=x+Txy'=y+Tyz'=z+Tz平移變換的矩陣如下??s放變換將模型放大或者縮小,本質(zhì)也是對模型上每個(gè)頂點(diǎn)進(jìn)行放大和縮小(頂點(diǎn)坐標(biāo)值變大或變?。?,假設(shè)變換前的點(diǎn)是[x,y,z,1],變換后的點(diǎn)是[x',y',z',1],那么x'=x*Sx

2、y'=y*Syz'=z*Sz縮放變換的矩陣如下。旋轉(zhuǎn)變換這是三種變換中最復(fù)雜的變換,這里只討論最簡單的情況,繞坐標(biāo)軸旋轉(zhuǎn),關(guān)于繞任意軸旋轉(zhuǎn),在后續(xù)的隨筆中介紹。繞X軸旋轉(zhuǎn)繞X軸旋轉(zhuǎn)時(shí),頂點(diǎn)的x坐標(biāo)不發(fā)生變化,y坐標(biāo)和z坐標(biāo)繞X軸旋轉(zhuǎn)θ度,旋轉(zhuǎn)的正方向?yàn)轫槙r(shí)針方向(沿著旋轉(zhuǎn)軸負(fù)方向向原點(diǎn)看)。[x,y,z,1]表示變換前的點(diǎn),[x',y',z',1]表示變換后的點(diǎn)。變換矩陣如下。關(guān)于旋轉(zhuǎn)的正方向,OpenGL與多數(shù)圖形學(xué)書籍規(guī)定旋轉(zhuǎn)正方向?yàn)槟鏁r(shí)針方向(沿著坐標(biāo)軸負(fù)方向向原點(diǎn)看),比如ComputerGraphicsCVersion,p409。繞Y軸旋轉(zhuǎn)繞Y軸旋轉(zhuǎn)時(shí),頂點(diǎn)的y坐標(biāo)不發(fā)生變化

3、,x坐標(biāo)和z坐標(biāo)繞Y軸旋轉(zhuǎn)θ度。[x,y,z,1]表示變換前的點(diǎn),[x',y',z',1]表示變換后的點(diǎn)。變換矩陣如下。繞Z軸旋轉(zhuǎn)繞Z軸旋轉(zhuǎn)時(shí),頂點(diǎn)的z坐標(biāo)不發(fā)生變化,x坐標(biāo)和y坐標(biāo)繞Z軸旋轉(zhuǎn)θ度。[x,y,z,1]表示變換前的點(diǎn),[x',y',z',1]表示變換后的點(diǎn)。變換矩陣如下。繞坐標(biāo)軸旋轉(zhuǎn)的矩陣推導(dǎo)上面三個(gè)旋轉(zhuǎn)矩陣是如何得來的呢?我們推導(dǎo)一下,首先看一下二維的情況,再擴(kuò)展到三維即可。實(shí)際上上面三種繞坐標(biāo)軸旋轉(zhuǎn)的情況屬于特殊的二維旋轉(zhuǎn),比如繞Z軸旋轉(zhuǎn),相當(dāng)于在與XOY平面上繞原點(diǎn)做二維旋轉(zhuǎn)。假設(shè)點(diǎn)P(x,y)是平面直角坐標(biāo)系內(nèi)一點(diǎn),其到原點(diǎn)的距離為r,其與X軸的夾角為A,現(xiàn)將點(diǎn)P

4、繞原點(diǎn)旋轉(zhuǎn)θ度,得到點(diǎn)P'(x',y'),P'與X軸的夾角為B,則A=B-θ。(注意,在二維坐標(biāo)中,逆時(shí)針旋轉(zhuǎn)時(shí)角度為正,順時(shí)針旋轉(zhuǎn)時(shí)角度為負(fù),下圖中由P旋轉(zhuǎn)到P',角度為θ,若是由P'轉(zhuǎn)到P,則角度為-θ)。于是可得下面的轉(zhuǎn)換方程(式一)寫成矩陣的形式就是求得旋轉(zhuǎn)矩陣為由于這里使用齊次坐標(biāo),所以還需加上一維,最終變成如下形式繞Z軸旋轉(zhuǎn)矩陣和前面給出的繞Z軸旋轉(zhuǎn)矩陣完全吻合。對于繞X軸旋轉(zhuǎn)的情況,我們只需將式一中的x用y替換,y用z替換,z用x替換即可。替換后得到(式二)對應(yīng)的旋轉(zhuǎn)矩陣為繞X軸旋轉(zhuǎn)矩陣對于繞Y軸旋轉(zhuǎn)的情況,只需對式二做一次同樣的替換即可,的到的變換方程為對應(yīng)的變換矩陣為

5、繞Y軸旋轉(zhuǎn)矩陣逆矩陣平移變換矩陣的逆矩陣與原來的平移量相同,但是方向相反。旋轉(zhuǎn)變換矩陣的逆矩陣與原來的旋轉(zhuǎn)軸相同但是角度相反??s放變換的逆矩陣正好和原來的效果相反,如果原來是放大,則逆矩陣是縮小,如果原來是縮小,則逆矩陣是放大。==HappyCoding==作者:zdd出處:http://www.cnblogs.com/graphics/繞任意軸旋轉(zhuǎn)繞任意軸旋轉(zhuǎn)的情況比較復(fù)雜,主要分為兩種情況,一種是平行于坐標(biāo)軸的,一種是不平行于坐標(biāo)軸的,對于平行于坐標(biāo)軸的,我們首先將旋轉(zhuǎn)軸平移至與坐標(biāo)軸重合,然后進(jìn)行旋轉(zhuǎn),最后再平移回去?!⑿D(zhuǎn)軸平移至與坐標(biāo)軸重合,對應(yīng)平移操作·旋轉(zhuǎn),對應(yīng)操作·步

6、驟1的逆過程,對應(yīng)操作整個(gè)過程就是對于不平行于坐標(biāo)軸的,可按如下方法處理。(該方法實(shí)際上涵蓋了上面的情況)1將旋轉(zhuǎn)軸平移至原點(diǎn)2將旋轉(zhuǎn)軸旋轉(zhuǎn)至YOZ平面3將旋轉(zhuǎn)軸旋轉(zhuǎn)至于Z軸重合4繞Z軸旋轉(zhuǎn)θ度5執(zhí)行步驟3的逆過程6執(zhí)行步驟2的逆過程7執(zhí)行步驟1的逆過程假設(shè)用v1(a1,b2,c2)和v2(a2,b2,c2)來表示旋轉(zhuǎn)軸,θ表示旋轉(zhuǎn)角度。為了方便推導(dǎo),暫時(shí)使用右手系并使用列向量,待得出矩陣后轉(zhuǎn)置一下即可,上面步驟對應(yīng)的流程圖如下。步驟1是一個(gè)平移操作,將v1v2平移至原點(diǎn),對應(yīng)的矩陣為步驟2是一個(gè)旋轉(zhuǎn)操作,將p(p=v2-v1)旋轉(zhuǎn)至XOZ平面,步驟3也是一個(gè)旋轉(zhuǎn)操作,將p旋轉(zhuǎn)至與Z軸

7、重合,這兩個(gè)操作對應(yīng)的圖如下。做點(diǎn)p在平面YOZ上的投影點(diǎn)q。再過q做Z軸垂線,則r是p繞X軸旋轉(zhuǎn)所得,且旋轉(zhuǎn)角度為α,且,于是旋轉(zhuǎn)矩陣為現(xiàn)在將r繞Y軸旋轉(zhuǎn)至與Z軸重合,旋轉(zhuǎn)的角度為-beta(方向?yàn)轫槙r(shí)針),且,于是得到旋轉(zhuǎn)矩陣為最后是繞Z軸旋轉(zhuǎn),對應(yīng)的矩陣如下如果旋轉(zhuǎn)軸是過原點(diǎn)的,那么第一步和最后一步的平移操作可以省略,也就是把中間五個(gè)矩陣連乘起來,再轉(zhuǎn)置一下,得到下面的繞任意軸旋轉(zhuǎn)的矩陣即對應(yīng)的函數(shù)代碼如下。voidRotateArbit

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。