绕轴 n 旋转角度 α 的旋转矩阵是:
Rn,α=cos(α)I+(1−cos(α))nnT+sinαN0nz−ny−nz0nxny−nx0=I+sin(θ)N+(1−cosθ)N2
其中,N=n^=0nz−ny−nz0nxny−nx0 是向量 n 的反对称矩阵,满足 ∀v,n^v=n×v
图形学讲义给出的的旋转旋转矩阵的形式是
logRω,θ=θ 0ωz−ωy−ωz0ωxωy−ωx0=θω^
与普通的旋转矩阵 R 相比,这个形式看起来惊人的简洁直观,但讲义里用了比较难受的方法证明:先证明 R ,然后证明这个矩阵指数形式等于 R
logRω,θ=θ ω^
根据 Rodrigues’ Formula,R=I+sin(θ)A+(1−cos(θ)A2,其中 A=ω^
设 L=θω^
展开 exp(L):
exp(L)=I+Aθ+2!A2θ2+…
因为 A 是 3×3 反对称矩阵,所以 A3=−A,所以
exp(L)=I+(θ−3!θ3+5!θ5)A+(2!θ2−4!θ4+…)A2=I+sinθA+(1−cosθ)A2=R
所以 logR=L=θω^
证这个旋转矩阵 R 本身就比较复杂,再这样绕一遍证明 log 形式,证的时候还用了一些 trick,确实不是很优雅
那有没有直接从 log 形式出发的推导呢?想出了一个虽然不严谨但是挺直观的思路
记号:转轴: ω,模长为 1,旋转角度: θ,待旋转的向量: v
ω^ 作用到 v 上可以生成一个跟 v 和 ω 都垂直的方向,直观地类似旋转中的速度方向,而这里的 ω 可以看成某种形式的 “角速度” (难怪讲义要用 ω 表示旋转轴向量)
角速度乘时间等于角度,这里设时间 Δt=1,那么角速度大小就是 θ,作用到 v 上得到的 “速度” 向量是:θω^v
dtdv⟹vvrot⟹vrot=θω^v=exp(θω^Δt)=exp(θω^)v
诶那变换矩阵不就是 exp(θω^) 吗