四元数球面差值公式推导

本文详细介绍了四元数球面差值(Slerp)公式的推导过程,从结论出发,通过证明一个引理,逐步展开计算,最终得出qm=sinθqa⋅sin((1−t)θ)+qb⋅sin(tθ)这一插值公式。该公式用于四元数在0到1之间的平滑插值,适用于Unity等3D游戏引擎中的旋转平滑过渡。
摘要由CSDN通过智能技术生成

四元数球面差值公式推导

惯例先废话 其实去年就推过这个 不过当时忙别的就一直没写 前两天回想起来 发现再推一边还是费了一些时间 所以决定还是来记录一下以下正文

还是先说结论

q m = q a ⋅ s i n ( ( 1 − t ) θ ) + q b ⋅ s i n ( t θ ) s i n θ qm = \frac{qa·sin((1-t)\theta)+qb·sin(t\theta)}{sin\theta} qm=sinθqasin((1t)θ)+qbsin(tθ)
其中:qm为插值结果
qa为插值起点
qb为插值终点
t为插值步长 取值范围0~1
θ \theta θ为从qa转到qb旋转过的角度的一半

这里先证明一个引理

假设 q1 , q2 , q 都是四元数,
从 q1 变换到 q2 对应的四元数为 q ,转过角度的一半为 θ \theta θ
q 2 = q 1 ⋅ q q2=q1·q q2=q1q
左右同乘 q1 的逆 q 1 − 1 q1^{-1} q11
q = q 1 − 1 q 2 q=q1^{-1}q2 q=q11q2
因为四元数相等,所以两四元数的实部(即 ω \omega ω分量)对应相等
real() 表示取实部操作 则有
real( q 1 − 1 q 2 q1^{-1}q2 q11q2) = real(q) = cos θ \theta

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值