我看了不少插值的方法,有的方法讲得莫名其妙,一个程序,一些系数,为什么这个系数是1,而不是0.5从来不讲,让人很怀疑其可用性。
后来做刀光的时候,采集的刀光的点不够圆滑,需要用到插值——想想自己的高数还没有完全忘光,干脆自己推导一个得了。
首先我们要明白什么叫做光滑的曲线,可以这么认为,这个曲线是一个运动物体,在时间[0,1]内运动的轨迹。而要求的光滑的曲线,就是要求物体运动过程中没有速度的突变。且要求不同的曲线段之间,速度也不能有突变。据此,我们可以大约知道插值一段曲线,需要指导曲线其实点的位置和速度,结束点的位置和速度。由于有四个已知变量,显然,用一个四次方程来描述这个曲线是再合适不过了。
方程如下:
f(t) = a * t ^ 3 + b * t ^ 2 + c * t + d [0 <= t <= 1]
对f(t)求导,得到速度方程:
f'(t) = 3 * a * t ^ 2 + 2 * b * t + c [0 <= t <= 1]
所以
f(0) = d = x0(起始点位置)
f(1) = a + b + c + d = x1(结束点位置)
f'(0) = c = y0(起始点速度)
f'(1) = 3 * a + 2 * b + c = y1(结束点速度)
</