罗德里格旋转公式的推导

罗德里格旋转公式是计算三维空间中,一个向量绕旋转轴旋转给定角度以后得到的新向量的计算公式。这个公式使用原向量,旋转轴及它们叉积作为标架表示出旋转以后的向量。可以改写为矩阵形式,被广泛应用于空间解析几何和计算机图形学领域,成为刚体运动的基本计算公式。

四元数可以很方便地表示旋转变换。但在很多场合中,使用矩阵形式和向量形式表达旋转更有利于推导。向量旋转公式最早由法国数学家本杰明·奥伦德·罗德里格(Benjamin Olinde Rodrigues(1795–1851))导出,后来被应用在很多领域。

v是一个三维空间向量,k是旋转轴的单位向量,则v在右手螺旋定则意义下绕旋转轴k旋转角度θ得到的向量可以由三个不共面的向量vkk×v构成的标架表示:

\mathbf{v}_{rot}=cos\theta\mathbf{v}+(1-cos\theta)(\mathbf{v}\cdot\mathbf{k})\mathbf{k}+sin\theta\mathbf{k}\times\mathbf{v}

推导过程如下:

如果被旋转向量v与旋转轴k(k为单位向量)相互垂直,那旋转变换不难表示。而对于与旋转轴k呈任意角度的向量v,可以通过正交分解,把被旋转向量转化为与旋转轴平行的分量\mathbf{v}_\parallel和与旋转轴垂直的分量\mathbf{v}_\perp,其中与旋转轴平行的分量\mathbf{v}_\parallel在旋转中是不变的,而与旋转轴垂直的分量\mathbf{v}_\perp则恰好旋转了角度θ,把与旋转轴平行的分量与旋转以后的与旋转轴垂直的分量加在一起,即可得到旋转以后的向量。

第一步是如何对向量v做正交分解:

\mathbf{v}=\mathbf{v}_\parallel+\mathbf{v}_\perp​​​​​​​

利用向量投影公式,可以得到\mathbf{v}_\parallel的表达式:

\mathbf{v}_\parallel=(\mathbf{v}\cdot\mathbf{k})\mathbf{k}

通过做减法,得到

\mathbf{v}_\perp=\mathbf{v}-\mathbf{v}_\parallel=\mathbf{v}-(\mathbf{v}\cdot\mathbf{k})\mathbf{k}

利用外积可以计算与\mathbf{v}_\perp 和k都垂直,且长度等于\mathbf{v}_\perp的向量w

\mathbf{w}=\mathbf{k}\times\mathbf{v}_\perp=\mathbf{k}\times(\mathbf{v}-(\mathbf{v}\cdot\mathbf{k})\mathbf{k})=\mathbf{k}\times\mathbf{v}

旋转以后的向量可以表示为:

\mathbf{v}_{\perp rot}=cos\theta\mathbf{v}_\perp+sin\theta\mathbf{w}=cos\theta(\mathbf{v}-(\mathbf{v}\cdot\mathbf{k})\mathbf{k})+sin\theta\mathbf{k}\times\mathbf{v}

\mathbf{v}_\parallel相加即可得到旋转以后的向量表达式:

\mathbf{v}_{rot}=\mathbf{v}_\parallel+\mathbf{v}_{\perp rot}=cos\theta\mathbf{v} +(1-cos\theta)(\mathbf{v}\cdot\mathbf{k})\mathbf{k}+sin\theta\mathbf{k}\times\mathbf{v}

在计算机图形学中,罗德里格向量旋转公式通常被用来填写旋转矩阵。如果把kv分别写为列向量:

\mathbf{k}=\begin{pmatrix} k_x\\ k_y\\ k_z \end{pmatrix},\mathbf{v}=\begin{pmatrix} v_x\\ v_y\\ v_z \end{pmatrix}

则旋转以后的向量可以表示为:

\mathbf{v}_{rot}=\mathbf{R}\mathbf{v}

其中

\mathbf{R}=Ecos\theta +(1-cos\theta)\begin{pmatrix} k_x\\ k_y\\ k_x \end{pmatrix}\begin{pmatrix} k_x & k_y & k_z \end{pmatrix}+sin\theta \begin{pmatrix} 0 & -k_z & k_y\\ k_z & 0 & -k_x\\ -k_y & k_x & 0 \end{pmatrix}

其中E是3阶单位矩阵。需要注意的是,公式中的第二项不是点积,而是张量积,得到的是一个3行3列的矩阵。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值