C#中的立方/曲线平滑插值

Rob*_*Rob 14 c# math bicubic linear-interpolation

下面是一个三次插值函数:

public float Smooth(float start, float end, float amount)
{
    // Clamp to 0-1;
    amount = (amount > 1f) ? 1f : amount;
    amount = (amount < 0f) ? 0f : amount;

    // Cubicly adjust the amount value.
    amount = (amount * amount) * (3f - (2f * amount));

    return (start + ((end - start) * amount));
}
Run Code Online (Sandbox Code Playgroud)

该函数将在起始值和结束值之间进行立方插值,给定量在0.0f - 1.0f之间.如果你要绘制这条曲线,你最终会得到这样的结果:

已过期Imageshack图像已删除

这里的三次函数是:

    amount = (amount * amount) * (3f - (2f * amount));
Run Code Online (Sandbox Code Playgroud)

如何进行调整以产生两个切入的切线?

生成这样的曲线:(线性开始到立方结束)

已过期Imageshack图像已删除

作为一个功能

并像这样另一个:(立方开始线性结束)

已过期Imageshack图像已删除

有人有任何想法吗?提前致谢.

Don*_*oer 12

你想要的是一个立方Hermite样条:

替代文字

其中p0是起点,p1是终点,m0是起始切线,m1是终点切线