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); }
/// <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)); }
/// <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)); }