繞任意軸旋轉向量

旋轉正方向:

從所繞軸正方向往原點看,順時針爲旋轉正方向

繞X軸旋轉的旋轉矩陣:

1      0       0

0  cosa  -sina

0  -sina  cosa

繞Y軸旋轉的旋轉矩陣:

cosa      0       -sina

0             1        0

sina       0         cosa

繞Z軸旋轉的旋轉矩陣:

cosa      sina      0

-sina     cosa      0

0                0         1

繞任意向量n旋轉的矩陣,假設n是單位向量:

繞向量n旋轉v得到v`

向量v繞單位向量n正方向旋轉a度後得到v`,求v`。

要求v`,只要求v`+v即可,v = v+ v

v = (v 點乘 n 得到 v的長度)乘以n, 得到v = (v · n) * n

v = v - v = v - v · n * n (推導1)

假設w是v和n的叉乘向量,則w垂直於v和n所組成的平面,並且||w|| = ||v⊥||

(因爲w = vX n,所以||w|| = V和n組成的平行四邊形的面積,由於n是單位向量,所以w長度 = v的長度,即 ||w|| = ||v|| = ||v`||)

v` = v` * sina + v` * cosa = w * sina + v * cosa

=  (vX n) * sina + v*cosa

=((v - v) X n) * sina + (v-(v·n)*n)*cosa //帶入推導1替換掉v

= (v X n) * sina + (v - (v·n) *n) * cosa//由於vx n等於0,可以消掉

v` = v` + v

 = (v X n) * sina + (v - (v·n) *n) * cosa+  (v · n) * n


現在已經得到了v`與v、n和角度a的關係了,那麼可以計算變換後的基向量構成的矩陣

假設n = [Nx Ny Nz],將v = [1 0 0]帶入得到:

n²(1-cosa) + cosa    NxNy(1-cosa) + Nzsina    NxNz(1-cosa) - Nysina

另外兩個基向量也計算後,得到矩陣:



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