罗德里格斯公式(Rodrigues’ rotation formula)推导

向量形式


如图所示,三维空间中的一个矢量 v \bold v v绕轴 k \bold k k旋转 θ \theta θ角度后得到 v r o t \bold v_{rot} vrot​。将 v \bold v v沿 k \bold k k和垂直 k \bold k k的方向分解,有:
v = v ∥ + v ⊥ \bold v= \bold v_{\parallel}+ \bold v_{\perp} v=v∥​+v⊥​
而 v ∥ \bold v_{\parallel} v∥​和 v ⊥ \bold v_{\perp} v⊥​又可以表示为:
v ∥ = ( v ⋅ k ) k = ∣ v ∣ ∣ k ∣ c o s < v , k > k v ⊥ = v − v ∥ = v − ( k ⋅ v ) k = − k × ( k × v ) \\\bold v_{\parallel}=(\bold v\cdot \bold k)\bold k=|v||k|cos<v,k> \bold k \\\bold v_{\perp}=\bold v - \bold v_{\parallel}=\bold v-(\bold k \cdot \bold v)\bold k=-\bold k\times(\bold k \times \bold v) v∥​=(v⋅k)k=∣v∣∣k∣cos<v,k>kv⊥​=v−v∥​=v−(k⋅v)k=−k×(k×v)
由于 v \bold v v平行于旋转轴 k \bold k k的分量 v ∥ \bold v_{\parallel} v∥​的大小和方向不会因旋转而改变,因而有:
v ∥ = v ∥ r o t \bold v_{\parallel}=\bold v_{\parallel rot} v∥​=v∥rot​
而垂直于旋转轴的分量大小不变,方向改变,如图所示:

∣ v ⊥ r o t ∣ = ∣ v ⊥ ∣ v ⊥ r o t = c o s ( θ ) v ⊥ + s i n ( θ ) k × v ⊥ = c o s ( θ ) v ⊥ + s i n ( θ ) k × v |\bold v_{\perp rot}|=|\bold v_{\perp}| \\ \begin{aligned} \bold v_{\perp rot} &=cos(\theta)\bold v_{\perp}+sin(\theta)\bold k\times \bold v_{\perp} \\ &=cos(\theta)\bold v_{\perp}+sin(\theta)\bold k\times\bold v \end{aligned} ∣v⊥rot​∣=∣v⊥​∣v⊥rot​​=cos(θ)v⊥​+sin(θ)k×v⊥​=cos(θ)v⊥​+sin(θ)k×v​
那么,旋转后的向量 v r o t \bold v_{rot} vrot​为:
v r o t = v ∥ r o t + v ⊥ r o t = v ∥ + c o s ( θ ) v ⊥ + s i n ( θ ) k × v = ( v ⋅ k ) k + c o s ( θ ) ( v − ( k ⋅ v ) k ) + s i n ( θ ) k × v = c o s ( θ ) v + ( 1 − c o s ( θ ) ) ( k ⋅ v ) k + s i n ( θ ) k × v \begin{aligned} \bold v_{rot} &= \bold v_{\parallel rot}+ \bold v_{\perp rot} \\ &=\bold v_{\parallel}+cos(\theta)\bold v_{\perp}+sin(\theta)\bold k\times \bold v\\ &=(\bold v\cdot \bold k)\bold k+cos(\theta)(\bold v-(\bold k \cdot \bold v)\bold k)+sin(\theta)\bold k \times \bold v\\ &=cos(\theta)\bold v+(1-cos(\theta))(\bold k \cdot \bold v)\bold k+sin(\theta)\bold k \times \bold v \end{aligned} vrot​​=v∥rot​+v⊥rot​=v∥​+cos(θ)v⊥​+sin(θ)k×v=(v⋅k)k+cos(θ)(v−(k⋅v)k)+sin(θ)k×v=cos(θ)v+(1−cos(θ))(k⋅v)k+sin(θ)k×v​
这个就是罗德里格斯公式的向量形式。

矩阵形式

已知罗德里格斯公式的向量形式为:
v r o t = c o s ( θ ) v + ( 1 − c o s ( θ ) ) ( k ⋅ v ) k + s i n ( θ ) k × v \bold v_{rot} = cos(\theta)\bold v+(1-cos(\theta))(\bold k \cdot \bold v)\bold k+sin(\theta)\bold k \times \bold v vrot​=cos(θ)v+(1−cos(θ))(k⋅v)k+sin(θ)k×v
把 v \bold v v, k \bold k k写作列向量为:
k = [ k x k y k z ] , v = [ v x v y v z ] \bold k = \begin{bmatrix} k_x\\ k_y\\ k_z \end{bmatrix}, \bold v = \begin{bmatrix} v_x\\ v_y\\ v_z \end{bmatrix} k=⎣⎡​kx​ky​kz​​⎦⎤​,v=⎣⎡​vx​vy​vz​​⎦⎤​
则:
k × v = [ ( k × v ) x ( k × v ) y ( k × v ) z ] = [ 0 − k z k y k z 0 − k x − k y k x 0 ] [ v x v y v z ] = K v , \bold k\times \bold v=\begin{bmatrix} (\bold k\times \bold v)_x\\ (\bold k\times \bold v)_y\\ (\bold k\times \bold v)_z \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}=\bold K\bold v, k×v=⎣⎡​(k×v)x​(k×v)y​(k×v)z​​⎦⎤​=⎣⎡​0kz​−ky​​−kz​0kx​​ky​−kx​0​⎦⎤​⎣⎡​vx​vy​vz​​⎦⎤​=Kv,
k × ( k × v ) = K ( K v ) = K 2 v \bold k \times (\bold k \times \bold v)=\bold K(\bold K\bold v)=\bold{K}^2\bold v k×(k×v)=K(Kv)=K2v
那么,旋转后的向量 v r o t \bold v_{rot} vrot​可以表示为:
v r o t = c o s ( θ ) v + ( 1 − c o s ( θ ) ) ( k ⋅ v ) k + s i n ( θ ) k × v = c o s ( θ ) v + ( 1 − c o s ( θ ) ) ( v − v ∥ ) + s i n ( θ ) K v = c o s ( θ ) v + ( 1 − c o s ( θ ) ) ( v + k × ( k × v ) + s i n ( θ ) K v = c o s ( θ ) v + ( 1 − c o s ( θ ) ) ( v + K 2 v ) + s i n ( θ ) K v = ( I + ( 1 − c o s ( θ ) ) K 2 + s i n ( θ ) K ) v \begin{aligned} \bold v_{rot} &= cos(\theta)\bold v+(1-cos(\theta))(\bold k \cdot \bold v)\bold k+sin(\theta)\bold k \times \bold v \\ &=cos(\theta)\bold v+(1-cos(\theta))(\bold v-\bold v_{\parallel})+sin(\theta)\bold K \bold v\\ &=cos(\theta)\bold v+(1-cos(\theta))(\bold v+\bold k\times(\bold k \times \bold v)+sin(\theta)\bold K \bold v\\ &=cos(\theta)\bold v+(1-cos(\theta))(\bold v+\bold{K}^2\bold v)+sin(\theta)\bold K \bold v\\ &=(\bold I+(1-cos(\theta))\bold{K}^2+sin(\theta)\bold K)\bold v \end{aligned} vrot​​=cos(θ)v+(1−cos(θ))(k⋅v)k+sin(θ)k×v=cos(θ)v+(1−cos(θ))(v−v∥​)+sin(θ)Kv=cos(θ)v+(1−cos(θ))(v+k×(k×v)+sin(θ)Kv=cos(θ)v+(1−cos(θ))(v+K2v)+sin(θ)Kv=(I+(1−cos(θ))K2+sin(θ)K)v​
即:
v r o t = R v , R = ( I + ( 1 − c o s ( θ ) ) K 2 + s i n ( θ ) K ) \bold v_{rot}=\bold R\bold v , \ \ \bold R =(\bold I+(1-cos(\theta))\bold{K}^2+sin(\theta)\bold K) vrot​=Rv,  R=(I+(1−cos(θ))K2+sin(θ)K)
这个就是罗德里格斯公式的矩阵形式。

罗德里格斯公式(Rodrigues‘ rotation formula)推导相关推荐

  1. 罗德里格斯公式Rodrigues‘Rotation Formula推导

    原文链接 :https://zhuanlan.zhihu.com/p/113299607 罗德里格斯公式是计算三维空间中,一个向量绕旋转轴旋转一定角度后得到一个新的向量的计算公式,而且可以改写为矩阵的 ...

  2. 罗德里格斯公式Rodrigues' rotation formula推导

    参考本处博客

  3. 视觉SLAM十四讲--罗德里格斯公式(Rodrigues’s Formula)推导

    前言 之前看了高博的<视觉SLAM十四讲>,里面有一段关于罗德里格斯公式,但是高博没有给出具体推导.然后我查了很多博主,都没有给出怎么推到 R = cos ⁡ θ I + ( 1 − co ...

  4. 关于罗德里格斯公式(Rodrigues‘sFormula)的详细推导过程

    关于罗德里格斯公式[Rodrigues'sFormula]的详细推导过程 1 旋转向量 2 罗德里格斯公式 2.1 罗德里格斯公式定义 2.2 罗德里格斯公式推导 3 旋转矩阵到旋转向量的转换 1 旋 ...

  5. 罗德里格斯旋转公式(Rodrigues‘ rotation formula)推导

    原博文链接:https://www.cnblogs.com/wtyuan/p/12324495.html 本文综合了几个相关的维基百科,加了点自己的理解,从比较基础的向量投影和叉积讲起,推导出罗德里格 ...

  6. 【有限位移旋量理论】罗德里格旋转公式(Rodrigues Rotation Formula)

    [有限位移旋量理论]罗德里格旋转公式(Rodrigues Rotation Formula) 有限位移旋量理论也称位移旋量,是李群se(3)的元素,有限位移可以描述绕轴的旋转和平移,有限位移的研究可以 ...

  7. 罗德里格旋转公式 (Rodrigues’ Rotation Formula)

    关于三维空间中的旋转,我们以前提到过基于欧拉角的旋转表达矩阵,它们分别描述了围绕 x 轴.y 轴.z 轴旋转后坐标应当如何变化.事实上,我们可以更进一步,推导出一个通用的.围绕过原点的任意轴旋转的公式 ...

  8. 三维空间刚体运动2:旋转向量与罗德里格斯公式(最详细推导)

    三维空间刚体运动2:旋转向量与罗德里格斯公式(最详推导) 1.旋转向量定义 2.罗德里格斯公式-向量转换为矩阵 2.1 定义 2.2 推导 2.2.1 推导一 2.2.2 推导二 2.2.3 推导向量 ...

  9. Rodrigues’ Rotation Formula罗德里格旋转公式详解(坐标轴旋转)

    在计算机图形学中,会遇见旋转轴标定之类的问题,因此会涉及到三维空间中的旋转,也就是数学上的罗德里格旋转公式(Rodrigues' Rotation Formula). 首先直接先把公式整上: 接下来进 ...

最新文章

  1. 维护人员工具_防爆配电箱检修规范和维护保养
  2. web网站无法启动报错
  3. 批量添加后缀_掌握这 6 个批量处理技巧,少做 80% 的无用功!
  4. 《Algorithms》SortCompare 实现排序算法的比较
  5. Eclipse快捷键大全(同样适用基于Eclipse开发的IDE)
  6. python中循环结构_python中的循环结构等相关知识
  7. Mac 命令行 Terminal 安装My Zsh,替换默认的Bash
  8. 如何免费批量将caj转换成PDF
  9. 未来教育考试系统无法答题,点击选项后没有反应,不会记录答题
  10. 基础物理-物质的组成
  11. 如何在手机或平板上编写代码?
  12. Fisher精确检验【转载】
  13. Win10 yolov5 6.0版本使用tensorrtx部署tensorRT
  14. 我的前端成长之路-写给在迷茫路上的人
  15. 《神经科学:探索脑》学习笔记(第6章 神经递质系统)
  16. flink-sql所有数据类型-1.13
  17. 一个漂亮妹子的美团面试经历,4轮2小时,成功拿到Offer
  18. 【瑞禧】石墨烯修饰离子掺杂LDHs材料系列--石墨烯/钴镍双金属氢氧化物复合材料
  19. python相比其他程序设计语言有什么特点_python语言和其他语言的区别
  20. 控制别人计算机鼠标点了无反应,Win10电脑qq远程协助时为什么无法控制对方电脑或则点了对方电脑没反应...

热门文章

  1. nginx笔记1:nginx指令与上下文
  2. Mybatis中注解和xml可以同时使用吗?
  3. linux文件系统实现原理简述【转】
  4. win10pro不够pro,win10专业工作站版本才是真的牛。
  5. PCI Express学习篇---Power Management(二)
  6. 这样的C盘或许还有?救救C盘......
  7. Excel分类汇总2个维度的结果,1个计数1个求和
  8. MPAndroidChart 饼状图 文字重叠问题完美解决
  9. 多家快递如何同时批量查询呢
  10. Eureka注册中心上服务老是自动挂掉相关问题总结