问题
对于三维空间中的任意向量vvv绕旋转轴kkk(kkk为单位向量)旋转θ\thetaθ弧度后的结果v′v'v′
解
首先把向量vvv分解为
- 与旋转轴kkk垂直的向量v1v_1v1
- 与旋转轴kkk平行的向量v2v_2v2
在旋转过程中,向量v2v_2v2不发生变化
因为kkk为单位向量
所以v2=(v⋅k)kv_2 = (v\cdot k)kv2=(v⋅k)k
因为v=v1+v2v= v_1+v_2v=v1+v2
所以v1=v−v2=v−(v⋅k)kv_1=v- v_2 = v- (v\cdot k)kv1=v−v2=v−(v⋅k)k
接下来看v1v_1v1的旋转
定义w=k×vw = k \times vw=k×v,其中∣w∣=∣k∣∣v∣sinα=∣v1∣|w|=|k||v|sin \alpha = |v_1|∣w∣=∣k∣∣v∣sinα=∣v1∣
这样向量v1v_1v1绕kkk旋转θ\thetaθ弧度后的向量v1′v_1^{'}v1′就可以表示成
v1′=cosθv1+sinθw=cosθ(v−(v⋅k)k)+sinθ(k×v)
\begin{aligned}
v_1^{'} &= cos\theta v_1+sin\theta w\\
&=cos\theta (v- (v\cdot k)k) + sin\theta (k \times v)
\end{aligned}
v1′=cosθv1+sinθw=cosθ(v−(v⋅k)k)+sinθ(k×v)
最终的向量为
v′=v1′+v2=cosθ(v−(v⋅k)k)+sinθ(k×v)+(v⋅k)k=cosθv+(1−cosθ)(v⋅k)k+sinθ(k×v)
\begin{aligned}
v' &= v_1^{'} + v_2\\
&=cos\theta (v- (v\cdot k)k) + sin\theta (k \times v) + (v\cdot k)k\\
&=cos\theta v + (1-cos\theta)(v\cdot k)k + sin\theta (k \times v)
\end{aligned}
v′=v1′+v2=cosθ(v−(v⋅k)k)+sinθ(k×v)+(v⋅k)k=cosθv+(1−cosθ)(v⋅k)k+sinθ(k×v)
令
v=(vxvyvz),k=(kxkykz)
v = \begin{pmatrix}
v_x\\
v_y\\
v_z
\end{pmatrix},
k = \begin{pmatrix}
k_x\\
k_y\\
k_z
\end{pmatrix}
v=vxvyvz,k=kxkykz
根据差乘的定义
k×v=(kyvz−kzvy,kzvx−kxvz,kxvy−kyvz)=(0,−kz,kykz,0,−kx−ky,kx,0)(vxvyvz)
\begin{aligned}
k\times v&= (k_y v_z -k_z v_y ,k_z v_x -k_x v_z,k_x v_y -k_y v_z)\\
&=
\begin{pmatrix}
&0,&-k_z,&k_y\\
&k_z,&0,&-k_x\\
&-k_y,&k_x,&0
\end{pmatrix}
\begin{pmatrix}
v_x\\
v_y\\
v_z
\end{pmatrix}
\end{aligned}
k×v=(kyvz−kzvy,kzvx−kxvz,kxvy−kyvz)=0,kz,−ky,−kz,0,kx,ky−kx0vxvyvz
所以
(vx′vy′vz′)=cosθ(vxvyvz)+sinθ(0,−kz,kykz,0,−kx−ky,kx,0)(vxvyvz)+(1−cosθ)(vxkx+vyky+vzkz)(kxkykz)
\begin{aligned}
\begin{pmatrix}
v'_x\\
v'_y\\
v'_z\\
\end{pmatrix}
&=cos\theta
\begin{pmatrix}
v_x\\
v_y\\
v_z\\
\end{pmatrix}
+
sin\theta
\begin{pmatrix}
&0,&-k_z,&k_y\\
&k_z,&0,&-k_x\\
&-k_y,&k_x,&0\\
\end{pmatrix}
\begin{pmatrix}
v_x\\
v_y\\
v_z\\
\end{pmatrix}
+
(1-cos\theta)(v_xk_x+v_yk_y+v_zk_z)
\begin{pmatrix}
k_x\\
k_y\\
k_z\\
\end{pmatrix}
\end{aligned}
vx′vy′vz′=cosθvxvyvz+sinθ0,kz,−ky,−kz,0,kx,ky−kx0vxvyvz+(1−cosθ)(vxkx+vyky+vzkz)kxkykz
其中
(1−cosθ)(vxkx+vyky+vzkz)(kxkykz)=((1−cosθ)(vxkxkx+vykxky+vzkxkz)(1−cosθ)(vxkxky+vykyky+vzkykz)(1−cosθ)(vxkxkz+vykykz+vzkzkz))=(akxkx,akxky,akxkzakxky,akyky,akykzakxkz,akykz,akzkz)(vxvyvz),a=1−cosθ
\begin{aligned}
& (1-cos\theta)(v_xk_x+v_yk_y+v_zk_z)
\begin{pmatrix}
k_x\\
k_y\\
k_z\\
\end{pmatrix}\\
=&
\begin{pmatrix}
(1-cos\theta)(v_xk_xk_x+v_yk_xk_y+v_zk_xk_z)\\
(1-cos\theta)(v_xk_xk_y+v_yk_yk_y+v_zk_yk_z)\\
(1-cos\theta)(v_xk_xk_z+v_yk_yk_z+v_zk_zk_z)\\
\end{pmatrix}\\
=&
\begin{pmatrix}
ak_xk_x,&ak_xk_y,&ak_xk_z\\
ak_xk_y,&ak_yk_y,&ak_yk_z\\
ak_xk_z,&ak_yk_z,&ak_zk_z\\
\end{pmatrix}
\begin{pmatrix}
v_x\\
v_y\\
v_z\\
\end{pmatrix},a = 1-cos\theta
\end{aligned}
==(1−cosθ)(vxkx+vyky+vzkz)kxkykz(1−cosθ)(vxkxkx+vykxky+vzkxkz)(1−cosθ)(vxkxky+vykyky+vzkykz)(1−cosθ)(vxkxkz+vykykz+vzkzkz)akxkx,akxky,akxkz,akxky,akyky,akykz,akxkzakykzakzkzvxvyvz,a=1−cosθ
所以
(vx′vy′vz′)=(cosθ+akxkx,−sinθkz+akxky,sinθky+akxkzsinθkz+akxky,cosθ+akyky,−sinθkx+akykz−sinθky+akxkz,sinθkx+akykz,cosθ+akzkz)(vxvyvz1)=M(vxvyvz1)
\begin{aligned}
\begin{pmatrix}
v'_x\\
v'_y\\
v'_z\\
\end{pmatrix}
&=
\begin{pmatrix}
&cos\theta + ak_xk_x,&-sin\theta k_z+ak_xk_y,&sin\theta k_y+ak_xk_z\\
&sin\theta k_z + ak_xk_y,&cos\theta + ak_yk_y,&-sin\theta k_x+ak_yk_z \\
&-sin\theta k_y+ ak_xk_z,&sin\theta k_x+ak_yk_z ,&cos\theta+ak_zk_z \\
\end{pmatrix}
\begin{pmatrix}
v_x\\
v_y\\
v_z\\
1
\end{pmatrix}=
M
\begin{pmatrix}
v_x\\
v_y\\
v_z\\
1
\end{pmatrix}
\end{aligned}
vx′vy′vz′=cosθ+akxkx,sinθkz+akxky,−sinθky+akxkz,−sinθkz+akxky,cosθ+akyky,sinθkx+akykz,sinθky+akxkz−sinθkx+akykzcosθ+akzkzvxvyvz1=Mvxvyvz1
最终,我们得到变换矩阵为
M=(cosθ+akxkx,−sinθkz+akxky,sinθky+akxkzsinθkz+akxky,cosθ+akyky,−sinθkx+akykz−sinθky+akxkz,sinθkx+akykz,cosθ+akzkz)
\begin{aligned}
M
&=
\begin{pmatrix}
&cos\theta + ak_xk_x,&-sin\theta k_z+ak_xk_y,&sin\theta k_y+ak_xk_z\\
&sin\theta k_z + ak_xk_y,&cos\theta + ak_yk_y,&-sin\theta k_x+ak_yk_z \\
&-sin\theta k_y+ ak_xk_z,&sin\theta k_x+ak_yk_z ,&cos\theta+ak_zk_z \\
\end{pmatrix}
\end{aligned}
M=cosθ+akxkx,sinθkz+akxky,−sinθky+akxkz,−sinθkz+akxky,cosθ+akyky,sinθkx+akykz,sinθky+akxkz−sinθkx+akykzcosθ+akzkz