旋转公式是怎么推导的

GAMES103 L03 旋转公式是怎么推导的

GAMES103 L03

旋转迭代公式
考虑代表旋转的四元数 q q q,那么对于参考坐标中的任意一点 v \mathbf v v,其在世界坐标中的朝向为 q v q ∗ q\mathbf v q^* qvq。此时这个物体拥有角速度 w \mathbf w w,角速度的方向就是物体旋转的朝向,角速度的模就是物体的角速度。

考虑一小段时间内,假设 w \mathbf w w 在这段时间内不发生变化,那么物体就在这段时间内沿着 w \mathbf w w 确定的方向旋转了 Δ θ = ∥ w ∥ Δ t \Delta\theta=\Vert\mathbf w\Vert\Delta t Δθ=wΔt 度,同样地,可以用四元数 p p p 来描述这个旋转:
p = cos ⁡ Δ θ 2 + u sin ⁡ Δ θ 2 p=\cos\frac{\Delta\theta}2+\mathbf u\sin\frac{\Delta\theta}2 p=cos2Δθ+usin2Δθ
其中 u \mathbf u u 为单位化后的 w \mathbf w w

那么经过 p p p 旋转后的世界坐标中的任意一点可以表示为
p q v q ∗ p ∗ = ( p q ) v ( p q ) ∗ pq\mathbf vq^*p^*=(pq)\mathbf v(pq)^* pqvqp=(pq)v(pq)
即描述物体在这个旋转之后的朝向的四元数应该由 q q q 更新为 p q pq pq,记作 q ′ q' q。显然
q ′ = q + ( q ′ − q ) = q + ( p − 1 ) q ≈ q + [ 0 , Δ t 2 w ] × q \begin{aligned} q'&=q+(q'-q) \\ &=q+(p-1)q \\ &\approx q+\left[0,\frac{\Delta t}{2}\mathbf w\right]\times q \end{aligned} q=q+(qq)=q+(p1)qq+[0,2Δtw]×q
考虑到
p − 1 = [ 1 − cos ⁡ Δ θ 2 , u sin ⁡ Δ θ 2 ] p-1=\left[1-\cos\frac{\Delta\theta}2,\mathbf u\sin\frac{\Delta\theta}{2}\right] p1=[1cos2Δθ,usin2Δθ]
其中 Δ θ \Delta\theta Δθ 近似为 0 0 0,那么有
cos ⁡ Δ θ 2 ≈ 1 , sin ⁡ Δ θ 2 ≈ Δ θ 2 \cos\frac{\Delta\theta}2\approx 1,\sin\frac{\Delta\theta}2\approx\frac{\Delta\theta}2 cos2Δθ1,sin2Δθ2Δθ
所以
p − 1 ≈ [ 0 , u Δ θ 2 ] = [ 0 , u ∥ w ∥ Δ t 2 ] = [ 0 , Δ t 2 w ] p-1\approx\left[0,\mathbf u\frac{\Delta\theta}{2}\right]=\left[0,\mathbf u\frac{\Vert\mathbf w\Vert\Delta t}{2}\right] =\left[0,\frac{\Delta t}{2}\mathbf w\right] p1[0,u2Δθ]=[0,u2wΔt]=[0,2Δtw]

q ′ ≈ q + [ 0 , Δ t 2 w ] × q q'\approx q+\left[0,\frac{\Delta t}{2}\mathbf w\right]\times q qq+[0,2Δtw]×q
由于近似的原因, q q q 的模会在迭代过程中发生变化,所以需要在每一次迭代完成之后进行单位化,避免误差累积。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值