罗德里格斯(Rodrigues)旋转公式推导

定义

定义 v \pmb{v} vvv是三维空间 R 3 \R^3 R3中的一个任意向量, k \pmb{k} kkk是一个单位向量,向量 v \pmb{v} vvv绕向量 k \pmb{k} kkk旋转 θ \theta θ角度,则表示旋转后向量 v r o t \pmb{v}_{rot} vvvrot的罗德里格斯公式为:
v r o t = v cos ⁡ θ + ( k × v ) sin ⁡ θ + k ( k ⋅ v ) ( 1 − cos ⁡ θ ) v_{rot}=\pmb{v}\cos\theta+(\pmb{k}\times\pmb{v})\sin\theta+\pmb{k}(\pmb{k}\cdot\pmb{v})(1-\cos\theta) vrot=vvvcosθ+(kkk×vvv)sinθ+kkk(kkkvvv)(1cosθ)

公式推导

在这里插入图片描述
定义 v \pmb{v} vvv是三维空间 R 3 \R^3 R3中的一个任意向量, k \pmb{k} kkk是一个单位向量,向量 v \pmb{v} vvv绕向量 k \pmb{k} kkk旋转 θ \theta θ角度(右手定律,图中逆时针方向)。

使用点乘和叉乘, v \pmb{v} vvv可被分解为与 k \pmb{k} kkk平行和垂直的分量:

v = v ∥ + v ⊥ (1) \pmb{v}=\pmb{v}_{\|}+\pmb{v}_\perp \tag{1} vvv=vvv+vvv(1)

其中平行于 k \pmb{k} kkk的分量为:

v ∥ = ( k ⋅ v ) k (2) \pmb{v}_{\|}=(\pmb{k}\cdot\pmb{v})\pmb{k} \tag{2} vvv=(kkkvvv)kkk(2)

向量 v ∥ \pmb{v}_{\|} vvv称为向量 v \pmb{v} vvv在向量 k \pmb{k} kkk上的投影(vector projection),垂直于 k \pmb{k} kkk的分量为:

v ⊥ = v − v ∥ = v − ( k ⋅ v ) k = − k × ( k × v ) (3) \begin{aligned} \pmb{v}_{\perp}&=\pmb{v}-\pmb{v}_{\|} \\ &=\pmb{v}-(\pmb{k}\cdot\pmb{v})\pmb{k} \\ &=-\pmb{k}\times(\pmb{k}\times\pmb{v}) \end{aligned} \tag{3} vvv=vvvvvv=vvv(kkkvvv)kkk=kkk×(kkk×vvv)(3)

向量 v ⊥ \pmb{v}_{\perp} vvv称为向量 v \pmb{v} vvv在向量 k \pmb{k} kkk上的vector rejection(没有找到合适的翻译)。

公式(3)最后一项的推导:向量 k × v \pmb{k}\times\pmb{v} kkk×vvv可以看作是向量 v ⊥ \pmb{v}_{\perp} vvv绕向量 k \pmb{k} kkk逆时针旋转90°的副本,所以它们大小相等但方向垂直。同样的,向量 k × ( k × v ) \pmb{k}\times(\pmb{k}\times\pmb{v}) kkk×(kkk×vvv) v ⊥ \pmb{v}_{\perp} vvv k \pmb{k} kkk逆时针旋转180°的副本,所以 k × ( k × v ) \pmb{k}\times(\pmb{k}\times\pmb{v}) kkk×(kkk×vvv) v ⊥ \pmb{v}_{\perp} vvv的大小相等但方向相反(因此符号相反)。

扩展
向量的三重叉积连接了平行分量和垂直分量,对于给定的3个向量 a \pmb{a} aaa b \pmb{b} bbb c \pmb{c} ccc,有:
a × ( b × c ) = ( a ⋅ c ) b − ( a ⋅ b ) c \pmb{a}\times(\pmb{b}\times\pmb{c})=(\pmb{a}\cdot\pmb{c})\pmb{b}-(\pmb{a}\cdot\pmb{b})\pmb{c} aaa×(bbb×ccc)=(aaaccc)bbb(aaabbb)ccc

在这里插入图片描述

由于平行于旋转轴的分量在旋转时不会改变其幅度和方向,因此有:

v ∥ r o t = v ∥ (4) \pmb{v}_{\|rot}=\pmb{v}_{\|} \tag{4} vvvrot=vvv(4)

垂直分量在旋转时会改变方向,但会保持大小不变,有:

∣ v ⊥ r o t ∣ = ∣ v ⊥ ∣ (5) |\pmb{v}_{\perp rot}|=|\pmb{v}_{\perp}| \tag{5} vvvrot=vvv(5)

v ⊥ r o t = cos ⁡ θ v ⊥ + sin ⁡ θ k × v ⊥ (6) \pmb{v}_{\perp rot}=\cos \theta \pmb{v}_{\perp}+\sin \theta \pmb{k} \times \pmb{v}_{\perp} \tag{6} vvvrot=cosθvvv+sinθkkk×vvv(6)

由于 k \pmb{k} kkk v ∥ \pmb{v}_{\|} vvv是平行的,所以它们的叉积为0,即 k × v = 0 \pmb{k}\times\pmb{v}=0 kkk×vvv=0,所以我们有:

k × v ⊥ = k × ( v − v ∥ ) = k × v − k × v ∥ = k × v (7) \begin{aligned} \pmb{k}\times\pmb{v}_{\perp}&=\pmb{k}\times(\pmb{v}-\pmb{v}_{\|}) \\ &=\pmb{k}\times\pmb{v}-\pmb{k}\times\pmb{v}_{\|} \\ &=\pmb{k}\times\pmb{v} \end{aligned} \tag{7} kkk×vvv=kkk×(vvvvvv)=kkk×vvvkkk×vvv=kkk×vvv(7)

将(6)式带入(7)式,有:

v ⊥ r o t = cos ⁡ θ v ⊥ + sin ⁡ θ k × v (8) \pmb{v}_{\perp rot}=\cos\theta\pmb{v}_{\perp}+\sin\theta\pmb{k}\times\pmb{v} \tag{8} vvvrot=cosθvvv+sinθkkk×vvv(8)

说明
可以通过前面的图片来理解公式(8)。向量 v ⊥ \pmb{v}_{\perp} vvv k × v \pmb{k}\times\pmb{v} kkk×vvv具有相同的长度,且 k × v \pmb{k}\times\pmb{v} kkk×vvv v ⊥ \pmb{v}_{\perp} vvv k \pmb{k} kkk旋转90°得到的。利用三角函数(正弦、余弦)可得到旋转后向量的垂直分量。旋转分量的形式与笛卡尔基的2D平面极坐标 ( r , θ ) (r,\theta) (r,θ)中的径向向量类似:
r = r cos ⁡ θ e x + r sin ⁡ θ e y \pmb{r}=r\cos\theta\pmb{e}_{x}+r\sin\theta\pmb{e}_{y} rrr=rcosθeeex+rsinθeeey
其中, e x \pmb{e}_{x} eeex e y \pmb{e}_{y} eeey为它们指示方向上的单位向量。

现在,旋转后的向量可完整表示为:

v r o t = v ∥ r o t + v ⊥ r o t (9) \pmb{v}_{rot}=\pmb{v}_{\| rot}+\pmb{v}_{\perp rot} \tag{9} vvvrot=vvvrot+vvvrot(9)

将式(4)和(8)和(2)依次带入(9),有:

v r o t = v ∥ + cos ⁡ θ v ⊥ + sin ⁡ θ k × v = v ∥ + cos ⁡ θ ( v − v ∥ ) + sin ⁡ θ k × v = cos ⁡ θ v + ( 1 − cos ⁡ θ ) v ∥ + sin ⁡ θ k × v = cos ⁡ θ v + ( 1 − cos ⁡ θ ) ( k ⋅ v ) k + sin ⁡ θ k × v (10) \begin{aligned} \pmb{v}_{rot}&=\pmb{v}_{\|}+\cos\theta\pmb{v}_{\perp}+\sin\theta\pmb{k}\times\pmb{v} \\ &=\pmb{v}_{\|}+\cos\theta(\pmb{v}-\pmb{v}_{\|})+\sin\theta\pmb{k}\times\pmb{v} \\ &=\cos\theta\pmb{v}+(1-\cos\theta)\pmb{v}_{\|}+\sin\theta\pmb{k}\times\pmb{v} \\ &=\cos\theta\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{k}\times\pmb{v} \\ \end{aligned} \tag{10} vvvrot=vvv+cosθvvv+sinθkkk×vvv=vvv+cosθ(vvvvvv)+sinθkkk×vvv=cosθvvv+(1cosθ)vvv+sinθkkk×vvv=cosθvvv+(1cosθ)(kkkvvv)kkk+sinθkkk×vvv(10)

矩阵表示

v \pmb{v} vvv k × v \pmb{k}\times\pmb{v} kkk×vvv表示为列矩阵,则叉积可以表示为矩阵的乘积:

[ ( k × v ) x ( k × v ) y ( k × v ) z ] = [ k y v z − k z v y k z v x − k x v z k x v y − k y v x ] = [ 0 − k z k y k z 0 − k x − k y k x 0 ] [ v x v y v z ] (11) \begin{aligned} \begin{bmatrix} (\pmb{k}\times\pmb{v})_x \\ (\pmb{k}\times\pmb{v})_y \\ (\pmb{k}\times\pmb{v})_z \end{bmatrix}&= \begin{bmatrix} k_y v_z-k_z v_y \\ k_z v_x-k_x v_z \\ k_x v_y-k_y v_x \end{bmatrix} \\ &= \begin{bmatrix} 0 & -k_z & k_y \\ k_z & 0 & -k_x \\ -k_y & k_x & 0 \end{bmatrix} \begin{bmatrix} v_x \\ v_y \\ v_z \end{bmatrix} \end{aligned} \tag{11} (kkk×vvv)x(kkk×vvv)y(kkk×vvv)z=kyvzkzvykzvxkxvzkxvykyvx=0kzkykz0kxkykx0vxvyvz(11)

K \pmb{K} KKK表示单位向量 k \pmb{k} kkk的“叉积矩阵”:

K = [ 0 − k z k y k z 0 − k x − k y k x 0 ] (12) \pmb{K}= \begin{bmatrix} 0 & -k_z & k_y \\ k_z & 0 & -k_x \\ -k_y & k_x & 0 \end{bmatrix} \tag{12} KKK=0kzkykz0kxkykx0(12)

则对于任意向量 v \pmb{v} vvv,矩阵方程(11)可以表示为:

K v = k × v (13) \pmb{K}\pmb{v}=\pmb{k}\times\pmb{v} \tag{13} KKKvvv=kkk×vvv(13)

事实上,K是具有这个性质的唯一矩阵,它的特征值为0和 ± i \pm i ±i

在等式右侧迭代叉乘等价于在等式左侧迭代左乘叉积矩阵,有(迭代2次的情况):

K ( K v ) = K 2 v = k ( k × v ) (14) \pmb{K}(\pmb{K}\pmb{v})=\pmb{K}^2\pmb{v}=\pmb{k}(\pmb{k}\times\pmb{v}) \tag{14} KKK(KKKvvv)=KKK2vvv=kkk(kkk×vvv)(14)

由于 k \pmb{k} kkk是单位向量,所以 k \pmb{k} kkk具有单位的2范数,因此旋转公式(10)可以表示为:

v r o t = cos ⁡ θ v + ( 1 − cos ⁡ θ ) ( k ⋅ v ) k + sin ⁡ θ k × v = v − v + cos ⁡ θ v + ( 1 − cos ⁡ θ ) ( k ⋅ v ) k + sin ⁡ θ K v = v − ( 1 − cos ⁡ θ ) v + ( 1 − cos ⁡ θ ) ( k ⋅ v ) k + sin ⁡ θ K v = v − ( 1 − cos ⁡ θ ) ( k ⋅ k ) v + ( 1 − cos ⁡ θ ) ( k ⋅ v ) k + sin ⁡ θ K v = v + ( 1 − cos ⁡ θ ) ( ( k ⋅ v ) k − ( k ⋅ k ) v ) + sin ⁡ θ K v = v + ( 1 − cos ⁡ θ ) ( k × ( k × v ) ) + sin ⁡ θ K v = v + ( sin ⁡ θ ) K v + ( 1 − cos ⁡ θ ) K 2 v = ( I + ( sin ⁡ θ ) K + ( 1 − cos ⁡ θ ) K 2 ) v = R v , ∥ K ∥ 2 = 1 (15) \begin{aligned} \pmb{v}_{rot}&=\cos\theta\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{k}\times\pmb{v} \\ &=\pmb{v}-\pmb{v}+\cos\theta\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}-(1-\cos\theta)\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}-(1-\cos\theta)(\pmb{k}\cdot\pmb{k})\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}+(1-\cos\theta)((\pmb{k}\cdot\pmb{v})\pmb{k}-(\pmb{k}\cdot\pmb{k})\pmb{v})+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}+(1-\cos\theta)(\pmb{k}\times(\pmb{k}\times\pmb{v}))+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}+(\sin\theta)\pmb{K}\pmb{v}+(1-\cos\theta)\pmb{K}^2\pmb{v} \\ &=(\pmb{I}+(\sin\theta)\pmb{K}+(1-\cos\theta)\pmb{K}^2)\pmb{v} \\ &=\pmb{R}\pmb{v} \\ ,\|\pmb{K}\|_2&=1 \end{aligned} \tag{15} vvvrot,KKK2=cosθvvv+(1cosθ)(kkkvvv)kkk+sinθkkk×vvv=vvvvvv+cosθvvv+(1cosθ)(kkkvvv)kkk+sinθKKKvvv=vvv(1cosθ)vvv+(1cosθ)(kkkvvv)kkk+sinθKKKvvv=vvv(1cosθ)(kkkkkk)vvv+(1cosθ)(kkkvvv)kkk+sinθKKKvvv=vvv+(1cosθ)((kkkvvv)kkk(kkkkkk)vvv)+sinθKKKvvv=vvv+(1cosθ)(kkk×(kkk×vvv))+sinθKKKvvv=vvv+(sinθ)KKKvvv+(1cosθ)KKK2vvv=(III+(sinθ)KKK+(1cosθ)KKK2)vvv=RRRvvv=1(15)

有:

R = I + ( sin ⁡ θ ) K + ( 1 − cos ⁡ θ ) K 2 (16) \pmb{R}=\pmb{I}+(\sin\theta)\pmb{K}+(1-\cos\theta)\pmb{K}^2 \tag{16} RRR=III+(sinθ)KKK+(1cosθ)KKK2(16)

这是一个绕轴 k \pmb{k} kkk逆时针旋转 θ \theta θ角度的旋转矩阵,其中 I \pmb{I} III为一个 3 × 3 3\times3 3×3的单位矩阵。

矩阵 R \pmb{R} RRR是实数空间 R 3 \R^3 R3中旋转群 S O ( 3 ) SO(3) SO(3)中的元素, K \pmb{K} KKK是生成该李群的李代数 s o ( 3 ) so(3) so(3)中的元素(注意, K \pmb{K} KKK具有 s o ( 3 ) so(3) so(3)斜对称的特征)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值