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

Rn,α=cos(α)I+(1cos(α))nnT+sinα(0nznynz0nxnynx0)N=I+sin(θ)N+(1cosθ)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^=(0nznynz0nxnynx0)\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}

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

logRω,θ=θ (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}

三维旋转变换

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

Proof

根据 Rodrigues’ FormulaR=I+sin(θ)A+(1cos(θ)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
因为 AA3×33\times {3} 反对称矩阵,所以 A3=AA^3=-A,所以

exp(L)=I+(θθ33!+θ55!)A+(θ22!θ44!+)A2=I+sinθA+(1cosθ)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}

所以 logR=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})