public static void Differentiate_Differentiates_Equations(double position, double expectedX, double expectedY, double expectedXPrime, double expectedYPrime, double expectedXPrimePrime, double expectedYPrimePrime) { // Base function double xValue = parametric.Xcomponent.ValueAt(position); Assert.AreEqual(expectedX, xValue); double yValue = parametric.Ycomponent.ValueAt(position); Assert.AreEqual(expectedY, yValue); // First differential Assert.IsTrue(parametric.HasDifferential()); CartesianParametricEquationXY parametricPrime = parametric.Differentiate(); double xValuePrime = parametricPrime.Xcomponent.ValueAt(position); Assert.AreEqual(expectedXPrime, xValuePrime); double yValuePrime = parametricPrime.Ycomponent.ValueAt(position); Assert.AreEqual(expectedYPrime, yValuePrime); // Second differential Assert.IsTrue(parametricPrime.HasDifferential()); CartesianParametricEquationXY parametricPrimePrime = parametricPrime.Differentiate(); double xValuePrimePrime = parametricPrimePrime.Xcomponent.ValueAt(position); Assert.AreEqual(expectedXPrimePrime, xValuePrimePrime); double yValuePrimePrime = parametricPrimePrime.Ycomponent.ValueAt(position); Assert.AreEqual(expectedYPrimePrime, yValuePrimePrime); // No third differential Assert.IsFalse(parametricPrimePrime.HasDifferential()); }
public static void Differentiate_Throws_ArgumentOutOfRangeException_if_Index_is_Greater_Than_Differentiations_Available() { CartesianParametricEquationXY parametricPrimePrime = parametric.DifferentiateBy(2); Assert.Throws <ArgumentOutOfRangeException>(() => parametricPrimePrime.Differentiate()); }
/// <summary> /// Returns a differential of the parametric vector. /// For any component that no longer has a differential, the associated function returns a pre-defined constant value. /// </summary> /// <returns>VectorParametric.</returns> public VectorParametric Differentiate() { CartesianParametricEquationXY differential = _curveParametric.Differentiate() as CartesianParametricEquationXY; return(new VectorParametric(differential, Tolerance)); }