Rodrigues(罗德里格斯)公式的理解与应用(旋转矢量与旋转矩阵的转化)

本文深入探讨Rodrigues公式,详细解析空间向量绕指定轴旋转的数学原理,介绍其向量与矩阵表述,并阐述如何通过该公式实现旋转矩阵与旋转向量的转换,为三维空间旋转提供理论依据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一部分RodriguesRodriguesRodrigues(罗德里格斯)公式描述的是:空间内的任意一个向量v\textbf{v}v,绕指定的旋转轴k\textbf{k}k旋转θ\thetaθ角度,得到空间向量vθ\textbf{v}^{\theta}vθ的过程。RodriguesRodriguesRodrigues公式利用v\textbf{v}vk\textbf{k}kθ\thetaθ来描述vθ\textbf{v}^{\theta}vθ

在这里插入图片描述
如图所示,空间内的向量v\textbf{v}v,绕着zzz轴旋转θ\thetaθ,得到vθ\textbf{v}^{\theta}vθ。已知xxx轴,yyy轴和zzz轴的方向向量分别是i\textbf{i}ij\textbf{j}jk\textbf{k}k。约定<a,b><\textbf{a},\textbf{b}><a,b>表示向量a\textbf{a}a到向量b\textbf{b}b的夹角。
对于空间向量v\textbf{v}v可以分解为三个坐标轴上的投影向量的矢量和:v=vx+vy+vz\textbf{v} = \textbf{v}_x + \textbf{v}_y + \textbf{v}_zv=vx+vy+vz
其中:
vy=0\textbf{v}_y = \textbf{0}vy=0
vz=∣∣v∣∣⋅cos⁡<k,v>⋅k=∣∣v∣∣⋅∣∣k∣∣⋅cos⁡<k,v>⋅k=(k⋅v)⋅k\textbf{v}_z = ||\textbf{v}|| \cdot \cos{<\textbf{k}, \textbf{v}>} \cdot \textbf{k} = ||\textbf{v}|| \cdot ||\textbf{k}|| \cdot \cos<\textbf{k}, \textbf{v}> \cdot \textbf{k} = (\textbf{k} \cdot \textbf{v}) \cdot \textbf{k}vz=vcos<k,v>k=vkcos<k,v>k=(kv)k
vx=∣∣v∣∣⋅sin⁡<k,v>⋅i\textbf{v}_x = ||\textbf{v}|| \cdot \sin<\textbf{k}, \textbf{v}> \cdot \textbf{i}vx=vsin<k,v>i
对于vx\textbf{v}_xvx来说,可以得到以下变换:
∣∣v∣∣⋅sin⁡<k,v>=∣∣v∣∣⋅∣∣k∣∣⋅sin⁡<k,v>=∣∣k×v∣∣||\textbf{v}|| \cdot \sin<\textbf{k}, \textbf{v}> = ||\textbf{v}|| \cdot ||\textbf{k}|| \cdot \sin<\textbf{k}, \textbf{v}> = ||\textbf{k} \times \textbf{v}||vsin<k,v>=vksin<k,v>=k×v
i=j×k\textbf{i} = \textbf{j} \times \textbf{k}i=j×k,又有j=k×v∣∣k×v∣∣\textbf{j} = \frac{\textbf{k} \times \textbf{v}}{||\textbf{k} \times \textbf{v}||}j=k×vk×v,则i=1∣∣k×v∣∣⋅k×v×k\textbf{i} = \frac{1}{||\textbf{k} \times \textbf{v}||} \cdot \textbf{k} \times \textbf{v} \times \textbf{k}i=k×v1k×v×k
因此,可以得到:vx=∣∣k×v∣∣⋅1∣∣k×v∣∣⋅k×v×k=k×v×k\textbf{v}_x = ||\textbf{k} \times \textbf{v}|| \cdot \frac{1}{||\textbf{k} \times \textbf{v}||} \cdot \textbf{k} \times \textbf{v} \times \textbf{k} = \textbf{k} \times \textbf{v} \times \textbf{k}vx=k×vk×v1k×v×k=k×v×k

同理,对于vθ\textbf{v}^{\theta}vθ也可以分解为vθ=vxθ+vyθ+vzθ\textbf{v}^{\theta} = \textbf{v}_x^{\theta} + \textbf{v}_y^{\theta} + \textbf{v}_z^{\theta}vθ=vxθ+vyθ+vzθ
其中:
vzθ=vz\textbf{v}_z^{\theta} = \textbf{v}_zvzθ=vz
vxθ=∣∣vx∣∣⋅cos⁡θ⋅i=vx⋅cos⁡θ=k×v×k⋅cos⁡θ\textbf{v}_x^{\theta} = ||\textbf{v}_x|| \cdot \cos{\theta} \cdot \textbf{i} = \textbf{v}_x \cdot \cos{\theta} = \textbf{k} \times \textbf{v} \times \textbf{k} \cdot \cos{\theta}vxθ=vxcosθi=vxcosθ=k×v×kcosθ
vyθ=∣∣vx∣∣⋅sin⁡θ⋅j=∣∣v∣∣⋅sin⁡<k,v>⋅k×v∣∣k×v∣∣⋅sin⁡θ=k×v⋅sin⁡θ\textbf{v}_y^{\theta} = ||\textbf{v}_x|| \cdot \sin{\theta} \cdot \textbf{j} = ||\textbf{v}|| \cdot \sin<\textbf{k}, \textbf{v}> \cdot \frac{\textbf{k} \times \textbf{v}}{||\textbf{k} \times \textbf{v}||} \cdot \sin{\theta} = \textbf{k} \times \textbf{v} \cdot \sin{\theta}vyθ=vxsinθj=vsin<k,v>k×vk×vsinθ=k×vsinθ
因此,vθ=k×v×k⋅cos⁡θ+k×v⋅sin⁡θ+(k⋅v)⋅k\textbf{v}^{\theta} = \textbf{k} \times \textbf{v} \times \textbf{k} \cdot \cos{\theta} + \textbf{k} \times \textbf{v} \cdot \sin{\theta} + (\textbf{k} \cdot \textbf{v}) \cdot \textbf{k}vθ=k×v×kcosθ+k×vsinθ+(kv)k

另,由公式(⋆\star)a×b×c=b(a⋅c)−c(a⋅b)\textbf{a} \times \textbf{b} \times \textbf{c} = \textbf{b}(\textbf{a}\cdot\textbf{c})-\textbf{c}(\textbf{a}\cdot\textbf{b})a×b×c=b(ac)c(ab)可以得到:
vθ=v(k⋅k)cos⁡θ−k(k⋅v)cos⁡θ+k×v⋅sin⁡θ+(k⋅v)⋅k=v⋅cos⁡θ+k(k⋅v)(1−cos⁡θ)+k×v⋅sin⁡θ\textbf{v}^{\theta} = \textbf{v}(\textbf{k}\cdot\textbf{k})\cos\theta-\textbf{k}(\textbf{k}\cdot\textbf{v})\cos\theta + \textbf{k} \times \textbf{v} \cdot \sin{\theta} + (\textbf{k} \cdot \textbf{v}) \cdot \textbf{k} \newline \hspace{0.45cm} = \textbf{v}\cdot\cos\theta + \textbf{k}( \textbf{k}\cdot \textbf{v})(1-\cos\theta)+ \textbf{k}\times \textbf{v}\cdot\sin\thetavθ=v(kk)cosθk(kv)cosθ+k×vsinθ+(kv)k=vcosθ+k(kv)(1cosθ)+k×vsinθ

由此可以得到RodriguesRodriguesRodrigues公式的结论。

\newline
\newline
第二部分RodriguesRodriguesRodrigues(罗德里格斯)公式的矩阵描述形式。
上述第一部分主要从原理上证明了,RodriguesRodriguesRodrigues(罗德里格斯)公式的向量表述形式,在实际使用的时候,常用到的是矩阵形式的表述。事实上,矩阵形式的表述也是由向量形式经过展开和推导得来的,下面简单描述一下其中的过程。

首先将上述公式变形如下:
vθ=v⋅cos⁡θ+k(k⋅v)(1−cos⁡θ)+k×v⋅sin⁡θ=v−v+v⋅cos⁡θ+k(k⋅v)(1−cos⁡θ)+k×v⋅sin⁡θ=v−(1−cos⁡θ)v+(1−cos⁡θ)(k⋅v)k+sin⁡θ⋅k×v=v+(1−cos⁡θ)((k⋅v)k−v)+sin⁡θ⋅k×v=v+(1−cos⁡θ)((k⋅v)k−v(k⋅k))+sin⁡θ⋅k×v\textbf{v}^{\theta} = \textbf{v}\cdot\cos\theta + \textbf{k}( \textbf{k}\cdot \textbf{v})(1-\cos\theta)+ \textbf{k}\times \textbf{v}\cdot\sin\theta \newline \hspace{0.45cm} = \textbf{v}-\textbf{v}+\textbf{v}\cdot\cos\theta + \textbf{k}( \textbf{k}\cdot \textbf{v})(1-\cos\theta)+ \textbf{k}\times \textbf{v}\cdot\sin\theta \newline \hspace{0.45cm} = \textbf{v} - (1-\cos\theta)\textbf{v} + (1-\cos\theta)(\textbf{k}\cdot \textbf{v})\textbf{k} + \sin\theta\cdot\textbf{k}\times\textbf{v} \newline \hspace{0.45cm} = \textbf{v} + (1-\cos\theta)((\textbf{k}\cdot\textbf{v})\textbf{k} - \textbf{v}) + \sin\theta\cdot\textbf{k}\times\textbf{v} \newline \hspace{0.45cm} = \textbf{v} + (1-\cos\theta)((\textbf{k}\cdot\textbf{v})\textbf{k} - \textbf{v}(\textbf{k}\cdot\textbf{k})) + \sin\theta\cdot\textbf{k}\times\textbf{v} \newlinevθ=vcosθ+k(kv)(1cosθ)+k×vsinθ=vv+vcosθ+k(kv)(1cosθ)+k×vsinθ=v(1cosθ)v+(1cosθ)(kv)k+sinθk×v=v+(1cosθ)((kv)kv)+sinθk×v=v+(1cosθ)((kv)kv(kk))+sinθk×v

由公式(⋆\star)a×b×c=b(a⋅c)−c(a⋅b)\textbf{a} \times \textbf{b} \times \textbf{c} = \textbf{b}(\textbf{a}\cdot\textbf{c})-\textbf{c}(\textbf{a}\cdot\textbf{b})a×b×c=b(ac)c(ab)可以得到:
vθ=v+(1−cos⁡θ)(k×k×v)+sin⁡θ⋅k×v\textbf{v}^{\theta} = \textbf{v} + (1-\cos\theta)(\textbf{k}\times\textbf{k}\times\textbf{v}) + \sin\theta\cdot\textbf{k}\times\textbf{v}vθ=v+(1cosθ)(k×k×v)+sinθk×v

引入公式(†\dagger)a×b=Ab\textbf{a}\times\textbf{b}=\textbf{A}\textbf{b}a×b=Ab,其中a\textbf{a}ab\textbf{b}b是空间中的两个向量,A\textbf{A}A是向量a\textbf{a}a的“叉积矩阵”:
A=[0−azayaz0−ax−ayax0]\textbf{A} = \left[ \begin{matrix} 0 & -a_z & a_y \\ a_z & 0 & -a_x \\ -a_y & a_x & 0 \\ \end{matrix} \right]A=0azayaz0axayax0
因此,k×v=Kv\textbf{k}\times\textbf{v}=\textbf{K}\textbf{v}k×v=Kv,其中K\textbf{K}Kk\textbf{k}k的“叉积矩阵”,则k×k×v=K2v\textbf{k}\times\textbf{k}\times\textbf{v} = \textbf{K}^2\textbf{v}k×k×v=K2v

由此可以得到:
vθ=v+(1−cos⁡θ)(k×k×v)+sin⁡θ⋅k×v=v+(1−cos⁡θ)⋅K2v+sin⁡θ⋅Kv=Rv\textbf{v}^{\theta} = \textbf{v} + (1-\cos\theta)(\textbf{k}\times\textbf{k}\times\textbf{v}) + \sin\theta\cdot\textbf{k}\times\textbf{v} \newline \hspace{0.45cm}=\textbf{v}+(1-\cos\theta)\cdot\textbf{K}^2\textbf{v}+ \sin\theta\cdot\textbf{K}\textbf{v} \newline \hspace{0.45cm}=\textbf{R}\textbf{v}vθ=v+(1cosθ)(k×k×v)+sinθk×v=v+(1cosθ)K2v+sinθKv=Rv
其中:R=I+Ksin⁡θ+K2(1−cos⁡θ)\textbf{R}=\textbf{I}+\textbf{K}\sin\theta+\textbf{K}^2(1-\cos\theta)R=I+Ksinθ+K2(1cosθ)

则上述vθ=v+sin⁡θ⋅Kv+(1−cos⁡θ)⋅K2v\textbf{v}^{\theta} = \textbf{v} + \sin\theta\cdot\textbf{K}\textbf{v} + (1-\cos\theta)\cdot\textbf{K}^2\textbf{v}vθ=v+sinθKv+(1cosθ)K2v是矩阵描述形式。

\newline
\newline
第三部分:旋转矩阵与旋转向量的转化
由上述两个部分的阐述,可以得知,若一个空间矢量,围绕给定的方向轴旋转一个角度得到一个新的空间矢量,可以通过罗德里格斯公式来描绘,旋转前后两个矢量之间的相对关系。

由此可以设想,对于任意空间矢量v\textbf{v}v,可以在笛卡尔坐标系下分别绕三个坐标轴i\textbf{i}ij\textbf{j}jk\textbf{k}k旋转不同的角度:俯仰角pitchpitchpitch,偏航角yawyawyaw,翻滚角rollrollroll,则对于每一次相对单个坐标轴的旋转,都存在一个可以通过罗格里德斯公式来描述的旋转矩阵:
Rpitch=I+sin⁡θ⋅Ki+(1−cos⁡θ)⋅Ki2\textbf{R}_{pitch}=\textbf{I}+\sin\theta\cdot\textbf{K}_i+(1-\cos\theta)\cdot\textbf{K}_i^2Rpitch=I+sinθKi+(1cosθ)Ki2
Ryaw=I+sin⁡θ⋅Kj+(1−cos⁡θ)⋅Kj2\textbf{R}_{yaw}=\textbf{I}+\sin\theta\cdot\textbf{K}_j+(1-\cos\theta)\cdot\textbf{K}_j^2Ryaw=I+sinθKj+(1cosθ)Kj2
Rroll=I+sin⁡θ⋅Kk+(1−cos⁡θ)⋅Kk2\textbf{R}_{roll}=\textbf{I}+\sin\theta\cdot\textbf{K}_k+(1-\cos\theta)\cdot\textbf{K}_k^2Rroll=I+sinθKk+(1cosθ)Kk2
则两个空间矢量间的矩阵R=RpitchRyawRroll\textbf{R}=\textbf{R}_{pitch}\textbf{R}_{yaw}\textbf{R}_{roll}R=RpitchRyawRroll

由于空间平面可以由平面内的任意一点和平面的法向量唯一确定,则空间中两个法向量之间的关系,可以由罗德里格斯变换外加一个坐标系平移矢量联系起来时,则这两个平面也遵从相同的联系。这是在机器视觉中极为重要的应用。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值