4个线性插值函数

234 阅读1分钟

分享四个线性插值函数(Linear Interpolation Functions)

// [x,y]区间取t点的值,t∈[0,1]
const lerp = (x: number,y: number,t: number) => x*(1-t)+y*t
// clamp字面意思是加紧,取a在[min,max]中的夹紧值
const clamp = (a:number,min=0,max=1)=> Math.min(max, Math.max(min,a))
// [x,y]区间值a的t值
const invlerp = (x:number,y:number,a: number) => clamp((a-x)/(y-x))
// 区间[x1,y1]中的a值在区间[x2,y2]中的t值
const range = (x1: number,y1:number,x2:number,y2:number,a:number) => lerp(x2,y2,invlerp(x1,y1,a))

这4个函数在动画(animation)、数据转换(data conversion)中都可以使用,也展示出函数式编程的简洁