/// <summary> /// Interpolates between two values using a cubic equation. /// </summary> /// <param name="value1">Source value.</param> /// <param name="value2">Source value.</param> /// <param name="amount">Weighting value.</param> /// <returns>Interpolated value.</returns> public static double SmoothStep(double value1, double value2, double amount) { /* It is expected that 0 < amount < 1. * If amount < 0, return value1. * If amount > 1, return value2. */ double result = MathHelperD.Clamp(amount, 0f, 1f); result = MathHelperD.Hermite(value1, 0f, value2, 0f, result); return(result); }
/// <summary> /// Creates a new <see cref="Vector2D"/> that contains hermite spline interpolation. /// </summary> /// <param name="value1">The first position vector.</param> /// <param name="tangent1">The first tangent vector.</param> /// <param name="value2">The second position vector.</param> /// <param name="tangent2">The second tangent vector.</param> /// <param name="amount">Weighting factor.</param> /// <param name="result">The hermite spline interpolation vector as an output parameter.</param> public static void Hermite( ref Vector2D value1, ref Vector2D tangent1, ref Vector2D value2, ref Vector2D tangent2, double amount, out Vector2D result ) { result.X = MathHelperD.Hermite(value1.X, tangent1.X, value2.X, tangent2.X, amount); result.Y = MathHelperD.Hermite(value1.Y, tangent1.Y, value2.Y, tangent2.Y, amount); }