计算机图形学|罗德里格斯旋转公式的推导

罗德里格斯旋转公式

罗德里格斯旋转公式是用来计算一个向量绕某一单位轴旋转给定角度后得到的新向量的公式:

R(n,α)=cos⁡(α)I+(1−cos⁡(α))nnT+sin⁡(α)(0−nznynz0−nx−nynx0)\mathbf{R}(\mathbf{n}, \alpha) = \cos(\alpha)\mathbf{I} + (1 - \cos(\alpha))\mathbf{nn}^T + \sin(\alpha)\begin{pmatrix} 0 & -n_z & n_y \\ n_z & 0 & -n_x \\ -n_y & n_x & 0 \end{pmatrix}R(n,α)=cos(α)I+(1cos(α))nnT+sin(α) 0nznynz0nxnynx0

其描述的是给定一个单位向量轴 n和一个旋转角度 α\alphaα,如何用向量形式直接写出绕 n 旋转 α\alphaα 后的结果 R(n,α)\mathbf{R}(\mathbf{n}, \alpha)R(n,α)

I表示原向量

那么这个公式是怎么推导出来的呢?

罗德里格斯旋转公式的推导

第一步:向量分解

如图所示:

  1. a^\hat{a}a^ 表示旋转轴,是一个单位向量 ;
  2. S⃗\vec{S}S 表示待处理的原向量

拆分 “平行分量”:(平行于旋转轴的部分)

proj(S~,a^)\text{proj}_{(\tilde{S}, \hat{a})}proj(S~,a^)S⃗\vec{S}S a^\hat{a}a^ 方向上的投影, 就是 S⃗\vec{S}S 中平行于旋转轴 a^\hat{a}a^ 的部分

计算方式:

S⃗\vec{S}S a^\hat{a}a^ 的点积 (S⃗\vec{S}S · a^\hat{a}a^) 得到投影长度, 再乘以轴的方向 a^\hat{a}a^ ,就得到了平行部分S~∥\tilde{S}_{\parallel}S~

S~∥=proj(S~,a^)=a^(S~⋅a^)=a^a^TS~\tilde{S}_{\parallel} = \text{proj}_{(\tilde{S}, \hat{a})} = \hat{a}(\tilde{S} \cdot \hat{a}) = \hat{a}\hat{a}^T \tilde{S}S~=proj(S~,a^)=a^(S~a^)=a^a^TS~

最后一行 a^a^TS~\hat{a}\hat{a}^T \tilde{S}a^a^TS~ 是由于向量的外积等价于点积

拆分完 “平行分量” 后, 拆分 “垂直分量”,

根据平行四边形法则, 垂直分量的值为:

S~⊥=S~−S~∥\tilde{S}_{\perp} = \tilde{S} - \tilde{S}_{\parallel}S~=S~S~

对垂直部分 (垂直于旋转轴) 进行归一化

b^=normalize(S~⊥)=S~⊥∥S~⊥∥\hat{b} = \text{normalize}(\tilde{S}_{\perp}) = \frac{\tilde{S}_{\perp}}{\|\tilde{S}_{\perp}\|}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图形学爱好者Wu

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值