Interpolación suave cúbica / curva en C # [cerrado]

A continuación se muestra una función de interpolación 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 función se interpolará cúbicamente entre el valor inicial y el final, dada una cantidad entre 0.0f - 1.0f. Si fueras a trazar esta curva, terminarías con algo como esto:

Imagen de Imagehack expirada eliminada

La función cúbica aquí es:

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

¿Cómo puedo ajustar esto para producir dos tangentes de producción dentro y fuera?

Para producir curvas como esta: (Inicio lineal hasta final cúbico)

Imagen de Imagehack expirada eliminada

Como una funcion

Y así como otro: (principio cúbico a fin lineal).

Imagen de Imagehack expirada eliminada

¿Alguien tiene alguna idea? Gracias por adelantado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta