Interpolação Cúbica / Curva Suave em C # [fechado]

Abaixo está uma função de interpolação cúbica:

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));
}

Esta função interpolará cubicamente entre o valor inicial e final, dado um valor entre 0.0f - 1.0f. Se você fosse traçar essa curva, você acabaria com algo assim:

Imagem expirada do Imageshack removida

A função cúbica aqui é:

    amount = (amount * amount) * (3f - (2f * amount));

Como faço para ajustar isso para produzir duas tangentes dentro e fora?

Para produzir curvas como esta: (Início linear ao fim cúbico)

Imagem expirada do Imageshack removida

Como uma função

e assim como outro: (começo cúbico para final linear)

Imagem expirada do Imageshack removida

Alguém tem alguma ideia? Desde já, obrigado.

questionAnswers(3)

yourAnswerToTheQuestion