3D數學--學習筆記(三):3D中繞任意軸的旋轉

本文轉自:http://blog.csdn.net/zjc_game_coder/article/details/24269757

不要小看我們在Unity或者3DMAX中的一個簡單的旋轉物體操作。

——題記

這裏需要用到的知識:向量運算(數量積,叉乘,加減)、矩陣基本運算。

讓我們導出繞任意軸n旋轉角度Θ的矩陣。

即 vR(n.Θ) = v ' 。

只要能用v,n,Θ表示出v ' 即可,然後再求出基向量。

方法如下:(看圖)

說明:

1.向量n是單位向量

2.VII向量和VT向量是V向量的分向量,即滿足:V = VII + VT   ①,同時,由於VII平行於n向量,它也是V在n上的投影,於是有 VII = (V *n)n  ②(與物理上的求做功大小是一樣理解的!)。

3.V ' 向量是 V向量 繞 n旋轉後得到的向量,虛線表示,同理VT ' 。

4.W向量是垂直於V,VII所在平面的向量,這是引入的,爲了便於討論問題,其長度 =  V 向量模長。W是VT繞n旋轉90°得到的,故有:W = n X VT   ③。(力矩知識哈!)

下面開始求解:

由旋轉後,可以得到:VT ' = VT * COSΘ + W * SinΘ     ④(三角函數知識哈..超級有用的玩意兒)

由②、①可推出 VT = V - (V * n)n  。⑤

由①、②、③可得: W = n X v。⑥

將⑤、⑥帶入 ④ 可得:

v ' = (v - (v*n)n)cosΘ + (n x v)sinΘ +(v * n)n

現在已經得到v ' 與v,n,Θ的關係了,於是,下一步就是得到基向量然後再構造矩陣,哈哈。

第一個基向量爲:

p  = [1  0  0]

p ' = (p - ( p * n )n)cosΘ + (n x p)sinΘ + (p * n)n

然後按照矩陣運算方法即可,還算簡單吧!

最後得到:


另外兩個基向量的方法類似,同時我們也就得到了R(n,Θ) :


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章