OpenMetaverse.Utils.Hermite C# (CSharp) Method

Hermite() public static method

public static Hermite ( double value1, double tangent1, double value2, double tangent2, double amount ) : double
value1 double
tangent1 double
value2 double
tangent2 double
amount double
return double
        public static double Hermite(double value1, double tangent1, double value2, double tangent2, double amount)
        {
            // All transformed to double not to lose precission
            // Otherwise, for high numbers of param:amount the result is NaN instead of Infinity
            double v1 = value1, v2 = value2, t1 = tangent1, t2 = tangent2, s = amount, result;
            double sCubed = s * s * s;
            double sSquared = s * s;

            if (amount == 0d)
                result = value1;
            else if (amount == 1f)
                result = value2;
            else
                result = (2d * v1 - 2d * v2 + t2 + t1) * sCubed +
                    (3d * v2 - 3d * v1 - 2d * t1 - t2) * sSquared +
                    t1 * s + v1;
            return result;
        }

Same methods

Utils::Hermite ( float value1, float tangent1, float value2, float tangent2, float amount ) : float

Usage Example

示例#1
0
        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 = Utils.Clamp(amount, 0f, 1f);

            return(Utils.Hermite(value1, 0f, value2, 0f, result));
        }
All Usage Examples Of OpenMetaverse.Utils::Hermite