進行三維軟體的開發,旋轉是必不可少而且非常重要的一部分.
下面談談我對旋轉的理解,偶的文字表述能力非常差,如果你覺得表述有問題,請無視.
旋轉有兩種方式:旋轉場景或物件,旋轉攝像機.
1.旋轉場景或物件.
這是對場景或物件直接操作,操作之後物體的座標值在應用矩陣後是發生了變化的.可用圖形開發庫提供的命令執行,或者直接操作三維矩陣.
1.1用圖形開發庫提供的命令執行.
比如在opengl中
glrotatef rotangle,rotaxis.x,rotaxis.y,rotaxis.z
繪製場景或物件
1.2 對三維矩陣操作.
有兩種情況:
一.你不會寫旋轉矩陣:讓opengl代替這部分工作
glloadidentity
glrotatef rotangle,rotaxis.x,rotaxis.y,rotaxis.z
glgetdoublev glmodelviewmatrix ,m'此時得到的就是旋轉矩陣
'此次的旋轉應該和以前對場景的操作起作用,使用矩陣相乘
glloadmatrixd 之前操作場景的矩陣
glmultmatrixd m'也可以自己寫矩陣相乘.
二.你會計算旋轉矩陣
'自己算出當前的旋轉矩陣
'與之前的矩陣相乘.
2.旋轉攝像機
這種情況,保持了場景或物體的座標值不變,只是移動了攝像機.可以建立乙個攝像機類,最基本有的
eyepos
lookcenter
upright
旋轉前,即滑鼠按下時獲得旋轉的中心rotcenter,在滑鼠移動時:
計算旋轉軸
圍繞旋轉軸旋轉eyepos,lookcenter,up,right
下一次渲染時直接glulookat eyepos,lookcenter,up即可.
關於旋轉中心的問題:
旋轉中心可以是:場景原點,物體包圍盒的中心,滑鼠拾取的位置,或者即時計算出的位置.
即時計算旋轉中心(適合整個場景只有乙個大的物件,由於移動,縮放等操作,僅有它的一部分可見,可見部分在視區是隨意的):
每次旋轉時找出所有在可見區的點
計算出這些點的包圍盒
求出中心
這樣很精確,但有乙個缺點,當資料量很大時,電腦就會死掉.改進的方法是找出物體關鍵位置,只計算這些關鍵位置與視區的交.
基本的三維旋轉
本系列教程的目的是解釋背後的旋轉點在三個方面所涉及的數學。這將開始描述如何使用乙個旋轉矩陣z軸旋轉點,僅僅是因為這是最簡單的旋轉,視覺化和實施。這就像乙個時鐘手繞來繞去。然後,將移動的教程給你的x和y軸的旋轉矩陣,告訴你如何使用它們,然後給你乙個矩陣,這將使繞任意軸旋轉。翻譯矩陣也將被覆蓋。將相機和...
三維座標 偏轉 三維座標下的旋轉
三維座標的旋轉有以下幾種常見的表示形式 旋轉向量,旋轉矩陣,尤拉角,四元數,下面對這四種表示形式及其之間的轉換進行介紹 旋轉向量 通常為3x1的列向量,向量方向即為旋轉軸,向量的模表示繞軸逆時針旋轉的角度,如旋轉向量v a,b,c 那麼旋轉角度theta sqrt a2 b2 c2 旋轉軸z a t...
旋轉類三維實體的建立
旋轉類三維實體的建立 2010 12 06 16 48 45 分類 autocad.net二次 標籤 revolve region 字型大小大中小 訂閱 前面介紹了通過對面域的建立實現了三維實體的拉伸,雖然這種方式能建立出很多比較複雜的三維實體,但顯然還不夠,許多零件,例如軸類,絕大部分都是用車床加...