public static void CloneParametric()
        {
            double                position   = 1;
            double                xExpected  = 5;
            double                yExpected  = 4;
            LinearCurve           curve      = new LinearCurve(new CartesianCoordinate(1, 2), new CartesianCoordinate(5, 4));
            LinearCurveParametric parametric = new LinearCurveParametric(curve);

            double xValue = parametric.Xcomponent.ValueAt(position);

            Assert.AreEqual(xExpected, xValue);

            double yValue = parametric.Ycomponent.ValueAt(position);

            Assert.AreEqual(yExpected, yValue);

            CartesianParametricEquationXY parametricClone = parametric.CloneParametric();

            double xValueClone = parametricClone.Xcomponent.ValueAt(position);

            Assert.AreEqual(xExpected, xValueClone);

            double yValueClone = parametricClone.Ycomponent.ValueAt(position);

            Assert.AreEqual(yExpected, yValueClone);
        }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="VectorParametric" /> class that is based on the provided parametric function.
        /// </summary>
        /// <param name="parametricCartesian">The parametric function.</param>
        /// <param name="tolerance">The tolerance.</param>
        public VectorParametric(CartesianParametricEquationXY parametricCartesian, double tolerance = Numbers.ZeroTolerance)
        {
            _curveParametric = parametricCartesian;

            if (tolerance != Numbers.ZeroTolerance)
            {
                Tolerance = tolerance;
            }
        }
        public static void DifferentiateBy_0_Returns_Base_Function(double position, double expectedValueX, double expectedValueY)
        {
            CartesianParametricEquationXY parametricDifferential = parametric.DifferentiateBy(0);
            double xValue = parametricDifferential.Xcomponent.ValueAt(position);

            Assert.AreEqual(expectedValueX, xValue);
            double yValue = parametricDifferential.Ycomponent.ValueAt(position);

            Assert.AreEqual(expectedValueY, yValue);
        }
        public static void DifferentialFirst(double position, double expectedValueX, double expectedValueY)
        {
            CartesianParametricEquationXY parametricPrimeFirst = parametric.DifferentialFirst();

            double xValue = parametricPrimeFirst.Xcomponent.ValueAt(position);

            Assert.AreEqual(expectedValueX, xValue);
            double yValue = parametricPrimeFirst.Ycomponent.ValueAt(position);

            Assert.AreEqual(expectedValueY, yValue);
        }
        public static void DifferentiateBy_Differentiates_Equations_by_Specified_Number(
            int differentialNumber, double position,
            double expectedValueX, double expectedValueY)
        {
            CartesianParametricEquationXY parametricDifferential = parametric.DifferentiateBy(differentialNumber);
            double xValue = parametricDifferential.Xcomponent.ValueAt(position);

            Assert.AreEqual(expectedValueX, xValue);
            double yValue = parametricDifferential.Ycomponent.ValueAt(position);

            Assert.AreEqual(expectedValueY, yValue);
        }
        public static void DifferentialSecond(double position, double expectedValueX, double expectedValueY)
        {
            CartesianParametricEquationXY parametricPrimeSecond = parametric.DifferentialSecond();

            double xValue = parametricPrimeSecond.Xcomponent.ValueAt(position);

            Assert.AreEqual(expectedValueX, xValue);
            double yValue = parametricPrimeSecond.Ycomponent.ValueAt(position);

            Assert.AreEqual(expectedValueY, yValue);

            // No third differential
            Assert.IsFalse(parametricPrimeSecond.HasDifferential());
        }
        public static void Divided_by_Constant_Scales_Values_Down(double position, double expectedValueX, double expectedValueY)
        {
            double scale = 2;

            double yValue = parametric.Ycomponent.ValueAt(position);

            Assert.AreEqual(expectedValueY, yValue);

            double xValue = parametric.Xcomponent.ValueAt(position);

            Assert.AreEqual(expectedValueX, xValue);

            CartesianParametricEquationXY linearParametric = parametric.DifferentiateBy(0) / scale;

            double xValueScaled = linearParametric.Xcomponent.ValueAt(position);

            Assert.AreEqual(expectedValueX / scale, xValueScaled);

            double yValueScaled = linearParametric.Ycomponent.ValueAt(position);

            Assert.AreEqual(expectedValueY / scale, yValueScaled);
        }
        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());
        }
        public static void DifferentiateBy_Throws_ArgumentOutOfRangeException_if_Index_is_Less_Than_Current_Differentiation_Index()
        {
            CartesianParametricEquationXY parametricPrimePrime = parametric.DifferentiateBy(2);

            Assert.Throws <ArgumentOutOfRangeException>(() => parametricPrimePrime.DifferentiateBy(1));
        }
示例#11
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));
        }