OpenGL 摸索篇之物體旋轉

2021-06-19 09:22:24 字數 811 閱讀 7743

關於物體旋轉, 很多人都用glrotate處理,確實,只要知道旋轉軸與旋轉角度,即可發生旋轉。

這裡我要分享一下怎麼相應滑鼠運動來處理物體旋轉。

滑鼠運動可以記錄前後的滑鼠座標(x, y), 而從x y中怎麼獲得旋轉軸和旋轉角度呢?

第一: 模型,

將整個程式桌面看做乙個球體, 而滑鼠的位置(x, y )對應球體表面的點。那麼從球面的一點,到另一點這個角度可以通過cosa = oa。ob / |oa|*|ob|獲得。 而旋轉軸可以通過oa ob 的叉積 求出其垂線(即為旋轉軸)

細節:一般將視窗中心看做空間座標的原點,這個時候就需要進行座標變換了。而滑鼠的座標原點是在左上角。

滑鼠運動可以記錄前後的滑鼠座標(x, y), 而從x y中怎麼獲得旋轉軸和旋轉角度呢?

讀者會發現 如果馬上將得到的旋轉軸立即代進去, 第一次的旋轉差錢人意, 而後的就匪夷所思了。這是為什麼呢?

第二: 此旋轉軸非彼旋轉軸,

在上面得到的 確實是旋轉軸, 不過當我們旋轉一次後, 再按照以前的做法 直接代入glrotate中,其實這個時候的旋轉軸還是以沒旋轉的為基礎所得到的。 這個時候需要我們通過矩陣變換,將旋轉軸左乘乙個model_view矩陣; 下面是**:

void copengl::localize(double p)

OpenGL(一)之配置篇

本文是是在windows環境下配置opengl 本機環境 win10 vs2013 2.配置步驟 我們需要把這些不同型別的檔案放在不同的地方。所有把.h結尾的檔案全部放在vs安裝目錄下的 vc include gl中,如果沒有gl資料夾,則自己新建乙個,一般opengl程式的開頭 include 應...

Unity 之遊戲物體的移動篇

需要說明的是 unity場景中任何乙個遊戲物件都會有乙個transform元件,是用來記錄遊戲物件的空間節點的狀態,它包括位置 postion 旋轉 rotate 縮放 scale 這裡我們所說的物體的移動,其實就是改變position的值。1.1直接給position賦值,也就是說給positio...

Python之OpenGL筆記 9 旋轉變換

1 使用glsl實現圖形的旋轉。旋轉變換,就是說給定乙個角度和點,我們將點繞著乙個座標軸旋轉。在旋轉過程中發生變化的總是 三個座標裡面的其中兩個,而不讓第三個座標值變化。這意味著,旋轉路徑總在三個座標軸平面中的乙個之中 繞 z 軸的是 xy 面 繞 x 軸的是 yz 面 繞 y 軸的是 xy 面。當...