实现非线性插值的方法?

时间:2012-04-10 20:12:32

标签: algorithm interpolation bezier curve

我需要实现一种方法,用于值之间的非线性插值,缓入,缓出,一般缓动曲线以及用户定义的曲线。

我对如何做到这一点有一个基本的想法 - 但我不确定它是否是最有效的解决方案。我的想法基本如下:

使用2D立方,二次或n阶贝塞尔曲线来控制插值。线性遍历曲线以获得非线性Y分量,并使用该值来提供简单的线性插值方法:

value = v1 + (v2 - v1) * t;

其中t是控制曲线的非线性Y分量。

这允许自定义的,用户定义的插值方法,但它需要付出代价,一个非线性插值的成本等于:

  

1 + 2 *(n-1)

总插值,其中n是控制曲线的顺序或控制点数。

我不是数学家,这是我能想到的最好的,所以我的问题是,如果有更好的解决方案吗?

编辑:我可能没有正确解释,我不是母语人士,所以希望每个人都能理解: control curve interpolation

1 个答案:

答案 0 :(得分:3)

根据我的理解,您的t实际上是一系列功能 f i (u),其中 u f i (u)介于0和1之间。如果是这种情况,则不会比你已经提出的要好。

看起来您担心在实际曲线计算期间评估这些 f i (u)值。如果您不想预先计算,则无法避免评估。如果性能是一个大问题而且您不需要非常精确,那么您可以计算 f i (u j 的表格您想要的多个 u j 值(比如说0到1之间的100或1000个离散点),以及当您需要采样点之间的值时,对所需点周围的两个缓存值进行简单的线性插值。