构建出绕轴旋转的情景。

向量v绕轴n 逆时针旋转θ角度后得到向量v',注:n为单位向量。
想要解v', 可以通过向量加法得到。易得v' 在向量n方向的投影 。 还需要构造一个经过v' 端点 , 垂直于法线n的平面,在这个平面内,v的端点绕向量n旋转了θ度后 , 就是v' 的端点 。n与平面的交点为O', 那么再求得V' 端点与O' 点构成的向量 , 就可以得到v' 了。
定义:
v⊥是v在于n垂直的平面内的投影
v∥是v' 在n上的投影,等价于v在n上的投影
v⊥′是v' 在于n垂直的平面内的投影
v⊥绕n旋转θ度后得到v⊥′
想要求得v⊥′,只需要组成一个w,与 n 和 ****v⊥组成坐标系就可以 。
w=v⊥×n
那么
v⊥′=v⊥cosθ+wsinθ
根据上面的定义,求出来v⊥和w,带入公式。
v∥=(v⋅n)n
v⊥=v−v∥=v−(v⋅n)n
w=v⊥×n=(v−(v⋅n)n)×n=v×n
即
v⊥′=v⊥cosθ+wsinθ=(v−(v⋅n)n)cosθ+(v×n)sinθ
v′=v∥+v⊥′=(v⋅n)n+(v−(v⋅n)n)cosθ+(v×n)sinθ=vcosθ+(v⋅n)n(1−cosθ)+(v×n)sinθ
将基向量(1, 0, 0), (0, 1, 0), (0, 0 , 1)带入公式分别求得新的基向量,即得旋转矩阵。
令v=⎣⎡ 100⎦⎤,代入上式得
v′=⎣⎡ 100⎦⎤cosθ+[ 100]⎣⎡ nxnynz⎦⎤⎣⎡ nxnynz⎦⎤(1−cosθ)+⎣⎡ 100⎦⎤×⎣⎡ nxnynz⎦⎤sinθ
=⎣⎡ cosθ00⎦⎤+⎣⎡ nx2nxnynxnz⎦⎤(1−cosθ)+⎣⎡ 0−nzny⎦⎤sinθ
=⎣⎡ nx2(1−cosθ)+cosθnxny(1−cosθ)−nzsinθnxnz(1−cosθ)+nysinθ⎦⎤
令v=⎣⎡ 010⎦⎤,代入上式得
v′=⎣⎡ 010⎦⎤cosθ+[ 010]⎣⎡ nxnynz⎦⎤⎣⎡ nxnynz⎦⎤(1−cosθ)+⎣⎡ 010⎦⎤×⎣⎡ nxnynz⎦⎤sinθ
=⎣⎡ 0cosθ0⎦⎤+⎣⎡ nxnyny2nynz⎦⎤(1−cosθ)+⎣⎡ nz0−nx⎦⎤sinθ
=⎣⎡ nxnz(1−cosθ)+nzsinθny2(1−cosθ)+cosθnynz(1−cosθ)−nxsinθ⎦⎤
令v=⎣⎡ 001⎦⎤,代入上式得
v′=⎣⎡ 001⎦⎤cosθ+[ 001]⎣⎡ nxnynz⎦⎤⎣⎡ nxnynz⎦⎤(1−cosθ)+⎣⎡ 001⎦⎤×⎣⎡ nxnynz⎦⎤sinθ
=⎣⎡ 00cosθ⎦⎤+⎣⎡ nxnznynznz2⎦⎤(1−cosθ)+⎣⎡ −nynx0⎦⎤sinθ
=⎣⎡ nxnz(1−cosθ)−nysinθnynz(1−cosθ)+nxsinθnz2(1−cosθ)+cosθ⎦⎤
所以,旋转矩阵
MR=⎣⎡ nx2(1−cosθ)+cosθnxny(1−cosθ)−nzsinθnxnz(1−cosθ)+nysinθnxnz(1−cosθ)+nzsinθny2(1−cosθ)+cosθnynz(1−cosθ)−nxsinθnxnz(1−cosθ)−nysinθnynz(1−cosθ)+nxsinθnz2(1−cosθ)+cosθ⎦⎤
参考