罗德里格斯公式推导过程及理解


Rodrigues' Rotation Fomula-罗德里格斯旋转公式

此公式用于表示绕过原点的某一轴 $ \mathbf{n} $ 旋转 $ \alpha $ 的变换矩阵,推导过程参考GAMES101-Lectrue 04辅助讲义。

推导过程

Step 1

image-20210706154258189

\(\vec{a}\) 为标准化后的 \(\mathbf{n}\), \(\vec{S}\) 为待旋转向量,\(\hat{a}\)\(\hat{b}\)\(\hat{a}\)\(\vec{S}\) 所在平面的正交基。

\(\vec{S}\) 分解到 \(\hat{a}\)\(\hat{b}\) 上后,易得 \(\vec{S_\parallel}\)\(\vec{S_\perp}\), 如上图所示。

PS:\(\vec{S}\)\(\hat{a}\) 上的投影用矩阵可表示为 \(aa^T\cdot\vec{S}\)

Step 2

image-20210707150402259

根据向量叉乘几何意义可得出三维坐标系的第三个正交基\(\hat{c}\), 根据叉乘的分配律可得图上结果。

PS:

\[\begin{aligned} \hat{a}\times\vec{S_\perp} &= \hat{a}\times(\vec{S}-\vec{S_\parallel})\\ &=\hat{a}\times\vec{S} \end{aligned} \]

Step 3

image-20210707151136487

\(\vec{S}\) 旋转后的 \(\vec{S^{rot}}\) 在平面\((\hat{b},\hat{c})\) 的投影 \(\vec{S^{rot}_{\perp}}\)\(\vec{S_\perp}\) 的夹角为旋转角 \(\theta\), 由向量分解规律可得 \(\vec{S^{rot}_{\perp}}\).

由:

\[\begin{aligned} \vec{S}\cdot R(\mathbf{n},\alpha)&=\vec{S^{rot}_{\parallel}}+\vec{S^{rot}_{\perp}}\\ &=aa^T\cdot\vec{S}+\vert \vec{S_\perp}\vert\cos{\alpha}\cdot\hat{b}+\vert \vec{S_\perp}\vert\sin{\alpha}\cdot\hat{c}\\ &=\cos{\alpha}\cdot\vec{S}+ (1-\cos{\alpha})aa^T\cdot\vec{S}+\sin{\alpha}\cdot\hat{a}\times\vec{S} \end{aligned} \]

化去 \(\vec{S}\) 后,可得:

\[R(\mathbf{n},\alpha)=\cos{\alpha}\cdot\mathbf{I} +(1-\cos{\alpha})\mathbf{n}\mathbf{n^T} +\sin{\alpha}\left(\begin{matrix} 0&-n_z&n_y\\ n_z&0&-n_x\\ -n_y&n_x&0\\ \end{matrix} \right) \]

推导思路理解起来其实很简单,但线性代数基础方面的不足让我在计算过程中遇到了很多困难,可见基础的重要性。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM