绕轴 n\mathbf{n} 旋转角度 α\alpha 的旋转矩阵是:

Rn,α=cos⁡(α)I+(1−cos⁡(α))nnT+sin⁡α(0−nznynz0−nx−nynx0)⏟N=I+sin⁡(θ)N+(1−cos⁡θ)N2\mathbf{R}_{\mathbf{n},\alpha}=\cos(\alpha)\mathbf{I}+(1-\cos(\alpha))\mathbf{n}\mathbf{n}^T+\sin\alpha \underbrace{ \begin{pmatrix}0 & -n_{z} & n_{y} \\ n_{z} & 0 & -n_{x} \\ -n_{y} & n_{x} & 0\end{pmatrix} }_{ \mathbf{N} }=\mathbf{I}+\sin(\theta)\mathbf{N}+(1-\cos\theta)\mathbf{N}^{2}

其中,N=n^=(0−nznynz0−nx−nynx0)\mathbf{N}=\hat{\mathbf{n}}=\begin{pmatrix}0 & -n_{z} & n_{y} \\ n_{z} & 0 & -n_{x} \\ -n_{y} & n_{x} & 0\end{pmatrix} 是向量 n\mathbf{n} 的反对称矩阵,满足 ∀v,n^v=n×v\forall \mathbf{v}, \hat{\mathbf{n}}\mathbf{v}=\mathbf{n}\times\mathbf{v}

图形学讲义给出的的旋转旋转矩阵的形式是

log⁡Rω,θ=θ (0−ωzωyωz0−ωx−ωyωx0)=θω^\log \mathbf{R}_{\omega,\theta}=\theta\ \begin{pmatrix}0 & -\omega _{z} & \omega_{y} \\ \omega_{z} & 0 & -\omega_{x} \\ -\omega_{y} & \omega_{x} & 0\end{pmatrix}=\theta \hat{\omega}

与普通的旋转矩阵 R\mathbf{R} 相比,这个形式看起来惊人的简洁直观,但讲义里用了比较难受的方法证明:先证明 R\mathbf{R} ,然后证明这个矩阵指数形式等于 R\mathbf{R}

三维旋转变换

log⁡Rω,θ=θ ω^\log \mathbf{R}_{\omega,\theta}=\theta\ \hat{\omega}

Proof

根据 Rodrigues’ Formula,R=I+sin⁡(θ)A+(1−cos⁡(θ)A2R=I+\sin(\theta)A+(1-\cos(\theta)A^2,其中 A=ω^A=\hat{\omega}
设 L=θω^\mathbf{L}=\theta\hat{\omega}
展开 exp⁡(L):\exp(\mathbf{L}):
exp⁡(L)=I+Aθ+A2θ22!+…\exp(\mathbf{L})=I+A\theta+\dfrac{A^{2}\theta^{2}}{2!}+\dots
因为 AA 是 3×33\times {3} 反对称矩阵,所以 A3=−AA^3=-A,所以

exp⁡(L)=I+(θ−θ33!+θ55!)A+(θ22!−θ44!+… )A2=I+sin⁡θA+(1−cos⁡θ)A2=R\begin{align} \exp(\mathbf{L})&=I+\left( \theta- \dfrac{\theta^3}{3!}+ \dfrac{\theta^{5}}{5!} \right)A+\left( \dfrac{\theta^{2}}{2!}- \dfrac{\theta^{4}}{4!}+\dots \right)A^2 \\ &=I+\sin\theta A+(1-\cos\theta)A^2 \\ &=R \end{align}

所以 log⁡R=L=θω^\log \mathbf{R}=\mathbf{L}=\theta \hat{\omega}

证这个旋转矩阵 R\mathbf{R} 本身就比较复杂,再这样绕一遍证明 log 形式,证的时候还用了一些 trick,确实不是很优雅


那有没有直接从 log 形式出发的推导呢?想出了一个虽然不严谨但是挺直观的思路

记号:转轴: ω\omega,模长为 11,旋转角度: θ\theta,待旋转的向量: v\mathbf{v}

ω^\hat{\omega} 作用到 v\mathbf{v} 上可以生成一个跟 v\mathbf{v} 和 ω\omega 都垂直的方向,直观地类似旋转中的速度方向,而这里的 ω\omega 可以看成某种形式的 “角速度” (难怪讲义要用 ω\omega 表示旋转轴向量)

角速度乘时间等于角度,这里设时间 Δt=1\Delta t=1,那么角速度大小就是 θ\theta,作用到 v\mathbf{v} 上得到的 “速度” 向量是:θω^v\theta\hat{\omega}\mathbf{v}

dvdt=θω^v  ⟹  vrotv=exp⁡(θω^Δt)  ⟹  vrot=exp⁡(θω^)v\begin{align} \dfrac{\mathrm{d}\mathbf{v}}{\mathrm{d}t}&=\theta\hat{\omega}\mathbf{v} \\ \implies \dfrac{\mathbf{v_{\text{rot}}}}{\mathbf{v}}&=\exp(\theta\hat{\omega}\Delta t) \\ \implies \mathbf{v_{\text{rot}}}&=\exp(\theta\hat{\omega})\mathbf{v} \end{align}

诶那变换矩阵不就是 exp⁡(θω^)\exp(\theta\hat{\omega}) 吗