罗德里格斯公式推导
第一部分
向量 v=(vx,vy,vz)Tv=(v_{x},v_{y},v_{z})^{T}v=(vx,vy,vz)T 绕单位方向矢量 n=(nx,ny,nz)Tn=(n_{x},n_{y},n_{z})^{T}n=(nx,ny,nz)T 转过角度 θ\thetaθ 得到向量 vrotv_{rot}vrot .
v∣∣=(v⋅n)nw=(n×v)v⊥=v−v∣∣=v−(v⋅n)nv⊥=−n×w=−n×(n×v)v∣∣=v+n×(n×v)
v_{||}=(v \cdot n)n\\
w= (n\times v)\\
v_{\perp}=v-v_{||}=v-(v \cdot n)n\\
v_{\perp}=-n\times w = -n\times (n\times v)\\
v_{||}=v+n\times (n\times v)
v∣∣=(v⋅n)nw=(n×v)v⊥=v−v∣∣=v−(v⋅n)nv⊥=−n×w=−n×(n×v)v∣∣=v+n×(n×v)
n×v = ∣ijknxnynzvxvyvz∣= [0−nznynz0−nx−nynx0][vxvyvz] = Nv = n×v n\times v\ =\ \left|\begin{array}{ccc}\boldsymbol{i} & \boldsymbol{j} & \boldsymbol{k} \\ n_x & n_y & n_z \\ v_x & v_y & v_z \end{array}\right| = \ \left[\begin{array}{ccc} 0 & -n_z & n_y \\ n_z & 0 & -n_x \\ -n_y & n_x & 0 \end{array}\right] \left[\begin{array}{c}v_x \\ v_y \\ v_z \end{array}\right]\ = \ Nv\ =\ n^{\times}v n×v = inxvxjnyvyknzvz= 0nz−ny−nz0nxny−nx0vxvyvz = Nv = n×v
vrot=v∣∣+v⊥cosθ+wsinθ=v+n×(n×v)−n×(n×v)cosθ+(n×v)sinθ=v+(1−cosθ)N2v+Nvsinθ=[I+(1−cosθ)N2+Nsinθ]v=Rv \begin{aligned} v_{rot}&=v_{||}+v_{\perp}\cos \theta +w\sin \theta \\ &=v+n\times (n\times v) -n\times (n\times v)\cos \theta +(n\times v)\sin \theta \\ &=v+(1-\cos \theta )N^{2}v+Nv\sin \theta \\ &=[I+(1-\cos \theta )N^{2}+N\sin \theta ]v \\ &= Rv \end{aligned} vrot=v∣∣+v⊥cosθ+wsinθ=v+n×(n×v)−n×(n×v)cosθ+(n×v)sinθ=v+(1−cosθ)N2v+Nvsinθ=[I+(1−cosθ)N2+Nsinθ]v=Rv
其中
N2=N⋅N=[−ny2−nz2nxnynxnznxny−nx2−nz2nynznxnznynz−nx2−ny2]=[nx2−1nxnynxnznxnyny2−1nynznxnznynznz2−1]=n⋅nT−I
\begin{aligned}
N^{2}=N\cdot N &=\left[\begin{array}{ccc} -n_{y}^{2}-n_{z}^{2} & n_{x}n_{y} & n_{x}n_{z} \\ n_{x}n_{y} & -n_{x}^{2}-n_{z}^{2} & n_{y}n_{z} \\ n_{x}n_{z} & n_{y}n_{z} & -n_{x}^{2}-n_{y}^{2} \end{array}\right]\\
&=\left[\begin{array}{ccc} n_{x}^{2}-1 & n_{x}n_{y} & n_{x}n_{z} \\ n_{x}n_{y} & n_{y}^{2}-1 & n_{y}n_{z} \\ n_{x}n_{z} & n_{y}n_{z} & n_{z}^{2}-1 \end{array}\right]\\
&= n \cdot n^{T} - I
\end{aligned}
N2=N⋅N=−ny2−nz2nxnynxnznxny−nx2−nz2nynznxnznynz−nx2−ny2=nx2−1nxnynxnznxnyny2−1nynznxnznynznz2−1=n⋅nT−I
所以
R=I+(1−cosθ)N2+Nsinθ=I+(1−cosθ)(n⋅nT−I)+Nsinθ=Icosθ+(1−cosθ)n⋅nT+Nsinθ
\begin{aligned}
R&=I+(1-\cos \theta )N^{2}+N\sin \theta \\
&=I+(1-\cos \theta )(n\cdot n^{T}-I)+N\sin \theta \\
&=I\cos \theta +(1-\cos \theta )n\cdot n^{T}+N\sin \theta
\end{aligned}
R=I+(1−cosθ)N2+Nsinθ=I+(1−cosθ)(n⋅nT−I)+Nsinθ=Icosθ+(1−cosθ)n⋅nT+Nsinθ
第二部分
以上是向量 v=(vx,vy,vz)Tv=(v_{x},v_{y},v_{z})^{T}v=(vx,vy,vz)T 和单位方向矢量 n=(nx,ny,nz)Tn=(n_{x},n_{y},n_{z})^{T}n=(nx,ny,nz)T 共面。如果二者不共面,如下图 v3v_3v3 ,可以将 v3v_3v3平移,使 v3v_3v3 和 nnn 共面再用上面公式.
或者使用 与 nnn 共面的 vvv 和 v2v_2v2 构造 v3v_3v3 ,即 v3=v−v2v_3=v-v_2v3=v−v2 .
这里 vvv 和 v2v_2v2 满足
vrot=[I+(1−cosθ)N2+Nsinθ]vv2rot=[I+(1−cosθ)N2+Nsinθ]v2
\begin{aligned}
v_{rot}&=[I+(1-\cos \theta )N^{2}+N\sin \theta ]v \\
v_{2rot}&=[I+(1-\cos \theta )N^{2}+N\sin \theta ]v_{2}
\end{aligned}
vrotv2rot=[I+(1−cosθ)N2+Nsinθ]v=[I+(1−cosθ)N2+Nsinθ]v2
所以向量 v3v_3v3 绕单位方向矢量 n=(nx,ny,nz)Tn=(n_{x},n_{y},n_{z})^{T}n=(nx,ny,nz)T 转过角度 θ\thetaθ 得到向量 v3rotv_{3rot}v3rot 的公式如下:
v3rot=vrot−v2rot=[I+(1−cosθ)N2+Nsinθ](v−v2)=[I+(1−cosθ)N2+Nsinθ]v3
\begin{aligned}
v_{3rot}&=v_{rot}-v_{2rot}\\
&=[I+(1-\cos \theta )N^{2}+N\sin \theta ](v-v_2)\\
&=[I+(1-\cos \theta )N^{2}+N\sin \theta ]v_3
\end{aligned}
v3rot=vrot−v2rot=[I+(1−cosθ)N2+Nsinθ](v−v2)=[I+(1−cosθ)N2+Nsinθ]v3
由上可知:即使 v3v_3v3 和 nnn 不共面,仍然满足罗德里格斯公式,因为这个空间是线性的.