示例#1
0
        /// <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);
        }
示例#2
0
 /// <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);
 }