计算机图形学——Rodrigues‘ Rotation Formula 罗德里格斯旋转公式及其矩阵形式的推导

计算机图形学——Rodrigues’ Rotation Formula 罗德里格斯旋转公式及其矩阵形式的推导

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

1.定义

罗德里格斯公式主要用于描述一个向量 v\mathbf{v}v 围绕一个单位旋转轴 n\mathbf{n}n 旋转一个角度 α\alphaα 后的结果。

定义旋转后的向量为 v′\mathbf{v}'v

v′=R(n,α)v \mathbf{v}' = R(\mathbf{n}, \alpha) \mathbf{v} v=R(n,α)v

其中,旋转矩阵 R(n,α)R(\mathbf{n}, \alpha)R(n,α) 为旋转矩阵,我们的目标是推导这一旋转矩阵 R(n,α)R(\mathbf{n}, \alpha)R(n,α) 的表达式。


2. 向量旋转的几何描述

将向量 v\mathbf{v}v 分解为两个部分:

  1. 平行于旋转轴 n\mathbf{n}n 的分量:

v∥=(v⋅n)n \mathbf{v}_\parallel = (\mathbf{v} \cdot \mathbf{n})\mathbf{n} v=(vn)n
2. 垂直于旋转轴 n\mathbf{n}n 的分量:

v⊥=v−v∥=v−(v⋅n)n \mathbf{v}_\perp = \mathbf{v} - \mathbf{v}_\parallel = \mathbf{v} - (\mathbf{v} \cdot \mathbf{n})\mathbf{n} v=vv=v(vn)n

旋转的几何过程:

  • 平行分量 v∥\mathbf{v}_\parallelv 不变。
  • 垂直分量 v⊥\mathbf{v}_\perpv 在垂直平面内旋转。

3. 分量旋转的数学描述

(1) 平行分量的旋转

旋转不改变平行分量:

v∥′=v∥=(v⋅n)n \mathbf{v}_\parallel' = \mathbf{v}_\parallel = (\mathbf{v} \cdot \mathbf{n})\mathbf{n} v=v=(vn)n

(2) 垂直分量的旋转

垂直分量 v⊥\mathbf{v}_\perpv 在垂直于 n\mathbf{n}n 的平面上旋转,旋转角为 α\alphaα。根据旋转的定义:

v⊥′=cos⁡α v⊥+sin⁡α(n×v) \mathbf{v}_\perp' = \cos\alpha \, \mathbf{v}_\perp + \sin\alpha (\mathbf{n} \times \mathbf{v}) v=cosαv+sinα(n×v)

代入 v⊥=v−(v⋅n)n\mathbf{v}_\perp = \mathbf{v} - (\mathbf{v} \cdot \mathbf{n})\mathbf{n}v=v(vn)n

v⊥′=cos⁡α(v−(v⋅n)n)+sin⁡α(n×v) \mathbf{v}_\perp' = \cos\alpha (\mathbf{v} - (\mathbf{v} \cdot \mathbf{n})\mathbf{n}) + \sin\alpha (\mathbf{n} \times \mathbf{v}) v=cosα(v(vn)n)+sinα(n×v)


4. 合并公式

旋转后的向量为:

v′=v∥′+v⊥′ \mathbf{v}' = \mathbf{v}_\parallel' + \mathbf{v}_\perp' v=v+v

代入 v∥′=(v⋅n)n\mathbf{v}_\parallel' = (\mathbf{v} \cdot \mathbf{n})\mathbf{n}v=(vn)nv⊥′\mathbf{v}_\perp'v 的表达式:

v′=(v⋅n)n+cos⁡α(v−(v⋅n)n)+sin⁡α(n×v) \mathbf{v}' = (\mathbf{v} \cdot \mathbf{n})\mathbf{n} + \cos\alpha (\mathbf{v} - (\mathbf{v} \cdot \mathbf{n})\mathbf{n}) + \sin\alpha (\mathbf{n} \times \mathbf{v}) v=(vn)n+cosα(v(vn)n)+sinα(n×v)

化简后:

v′=cos⁡αv+(1−cos⁡α)(v⋅n)n+sin⁡α(n×v) \mathbf{v}' = \cos\alpha \mathbf{v} + (1 - \cos\alpha)(\mathbf{v} \cdot \mathbf{n})\mathbf{n} + \sin\alpha (\mathbf{n} \times \mathbf{v}) v=cosαv+(1cosα)(vn)n+sinα(n×v)

这就是罗德里格斯公式的向量形式。


5. 矩阵形式的推导

(1) 旋转的三个部分

将公式分解为矩阵操作:

  1. cos⁡αv\cos\alpha \mathbf{v}cosαv
    用单位矩阵 III 表示:

cos⁡αv=cos⁡αIv \cos\alpha \mathbf{v} = \cos\alpha I \mathbf{v} cosαv=cosαIv
2. (1−cos⁡α)(v⋅n)n(1 - \cos\alpha)(\mathbf{v} \cdot \mathbf{n})\mathbf{n}(1cosα)(vn)n
用外积 nn⊤\mathbf{n}\mathbf{n}^\topnn 表示:

(v⋅n)=n⊤v,(v⋅n)n=(nn⊤)v (\mathbf{v} \cdot \mathbf{n}) = \mathbf{n}^\top \mathbf{v}, \quad (\mathbf{v} \cdot \mathbf{n})\mathbf{n} = (\mathbf{n}\mathbf{n}^\top) \mathbf{v} (vn)=nv,(vn)n=(nn)v

所以:

(1−cos⁡α)(v⋅n)n=(1−cos⁡α)(nn⊤)v (1 - \cos\alpha)(\mathbf{v} \cdot \mathbf{n})\mathbf{n} = (1 - \cos\alpha)(\mathbf{n}\mathbf{n}^\top)\mathbf{v} (1cosα)(vn)n=(1cosα)(nn)v
3. sin⁡α(n×v)\sin\alpha (\mathbf{n} \times \mathbf{v})sinα(n×v)
用叉乘矩阵(反对称矩阵) [n]×[\mathbf{n}]_\times[n]× 表示两个向量的叉乘:

(n×v)=[n]×v (\mathbf{n} \times \mathbf{v}) = [\mathbf{n}]_\times \mathbf{v} (n×v)=[n]×v

所以:

sin⁡α(n×v)=sin⁡α[n]×v \sin\alpha (\mathbf{n} \times \mathbf{v}) = \sin\alpha [\mathbf{n}]_\times \mathbf{v} sinα(n×v)=sinα[n]×v

(2) 组合成旋转矩阵

将三部分组合:

v′=[cos⁡αI+(1−cos⁡α)nn⊤+sin⁡α[n]×]v \mathbf{v}' = \big[\cos\alpha I + (1 - \cos\alpha)\mathbf{n}\mathbf{n}^\top + \sin\alpha [\mathbf{n}]_\times\big] \mathbf{v} v=[cosαI+(1cosα)nn+sinα[n]×]v

因此,旋转矩阵 R(n,α)R(\mathbf{n}, \alpha)R(n,α) 为:

R(n,α)=cos⁡αI+(1−cos⁡α)nn⊤+sin⁡α[n]× R(\mathbf{n}, \alpha) = \cos\alpha I + (1 - \cos\alpha)\mathbf{n}\mathbf{n}^\top + \sin\alpha [\mathbf{n}]_\times R(n,α)=cosαI+(1cosα)nn+sinα[n]×


6. 叉乘矩阵(反对称矩阵)

反对称矩阵 [n]×[\mathbf{n}]_\times[n]× 是:

[n]×=[0−nznynz0−nx−nynx0] [\mathbf{n}]_\times = \begin{bmatrix} 0 & -n_z & n_y \\ n_z & 0 & -n_x \\ -n_y & n_x & 0 \end{bmatrix} [n]×=0nznynz0nxnynx0


总结

  1. 罗德里格斯公式(向量形式)

v′=cos⁡αv+(1−cos⁡α)(v⋅n)n+sin⁡α(n×v) \mathbf{v}' = \cos\alpha \mathbf{v} + (1 - \cos\alpha)(\mathbf{v} \cdot \mathbf{n})\mathbf{n} + \sin\alpha (\mathbf{n} \times \mathbf{v}) v=cosαv+(1cosα)(vn)n+sinα(n×v)

  1. 罗德里格斯旋转矩阵

R(n,α)=cos⁡αI+(1−cos⁡α)nn⊤+sin⁡α[n]× R(\mathbf{n}, \alpha) = \cos\alpha I + (1 - \cos\alpha)\mathbf{n}\mathbf{n}^\top + \sin\alpha [\mathbf{n}]_\times R(n,α)=cosαI+(1cosα)nn+sinα[n]×

  1. 旋转的几何意义
    • 平行分量不变。
    • 垂直分量按照角度 α\alphaα 旋转。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值