插值算法 —— Lerp, NLerp, SLerp

一、Lerp : Linear interpolation : 线性插值

记为: L e r p ( v 0 , v 1 , t ) Lerp(\boldsymbol v_0, \boldsymbol v_1, t) Lerp(v0,v1,t) t t t 为插值权重。

L e r p ( v 0 , v 1 , t ) = ( 1 − t ) v 0 + t v 1 Lerp(\boldsymbol v_0, \boldsymbol v_1, t) = (1-t)\boldsymbol v_0 + t\boldsymbol v_1 Lerp(v0,v1,t)=(1t)v0+tv1
在这里插入图片描述

二、NLerp : Normalized Linear interpolation : 归一化线性插值

记为: N L e r p ( v 0 , v 1 , t ) NLerp(\boldsymbol v_0, \boldsymbol v_1, t) NLerp(v0,v1,t) t t t 为插值权重。
这个和普通 L e r p Lerp Lerp 不同的地方就是将插值后的 v L e r p \boldsymbol v_{Lerp} vLerp 值归一化

N L e r p ( v 0 , v 1 , t ) = ( 1 − t ) v 0 + t v 1 ∥ ( 1 − t ) v 0 + t v 1 ∥ NLerp(\boldsymbol v_0, \boldsymbol v_1, t) = \frac{(1-t)\boldsymbol v_0 + t\boldsymbol v_1}{\Vert(1-t)\boldsymbol v_0 + t\boldsymbol v_1\Vert} NLerp(v0,v1,t)=(1t)v0+tv1(1t)v0+tv1

在这里插入图片描述
由于是按照弦长的比例来插值的,即在弦上是匀速的,故在 角速度 或 弧 上并不匀速。

三、SLerp : Spherical Linear interpolation : 球面线性插值

为了解决插值角速度不匀速,引入了SLerp,记为: S L e r p ( v 0 , v 1 , t ) SLerp(\boldsymbol v_0, \boldsymbol v_1, t) SLerp(v0,v1,t) t t t 为插值权重。

S L e r p ( v 0 , v 1 , t ) = sin ⁡ ( ( 1 − t ) θ ) sin ⁡ θ v 0 + sin ⁡ ( t θ ) sin ⁡ θ v 1 SLerp(\boldsymbol v_0, \boldsymbol v_1, t) = \frac{\sin((1-t)\theta)}{\sin\theta}\boldsymbol v_0 + \frac{\sin(t\theta)}{\sin\theta}\boldsymbol v_1 SLerp(v0,v1,t)=sinθsin((1t)θ)v0+sinθsin()v1

在这里插入图片描述
其中, θ \theta θ v 0 , v 1 \boldsymbol v_0, \boldsymbol v_1 v0,v1 之间的夹角。
可以看出他是角速度匀速的。

Slerp计算量较大,在 θ → 0 \theta\rightarrow0 θ0 时, sin ⁡ θ → θ \sin\theta \rightarrow \theta sinθθ,Slerp 退化为 Lerp

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值