談談三維旋轉

2021-05-21 20:38:07 字數 1182 閱讀 4684

進行三維軟體的開發,旋轉是必不可少而且非常重要的一部分.

下面談談我對旋轉的理解,偶的文字表述能力非常差,如果你覺得表述有問題,請無視.

旋轉有兩種方式:旋轉場景或物件,旋轉攝像機.

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 字型大小大中小 訂閱 前面介紹了通過對面域的建立實現了三維實體的拉伸,雖然這種方式能建立出很多比較複雜的三維實體,但顯然還不夠,許多零件,例如軸類,絕大部分都是用車床加...