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());
        }
예제 #3
0
        /// <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));
        }