旋轉正方向:
從所繞軸正方向往原點看,順時針爲旋轉正方向
繞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是單位向量:
向量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 = v⊥X n,所以||w|| = V⊥和n組成的平行四邊形的面積,由於n是單位向量,所以w長度 = v⊥的長度,即 ||w|| = ||v⊥|| = ||v`⊥||)。
v`⊥ = v`⊥ * sina + v`⊥ * cosa = w * sina + v⊥ * cosa
= (v⊥X 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//由於v∥x 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
另外兩個基向量也計算後,得到矩陣: