public static void SetUp() { double a = 5; CartesianCoordinate localOrigin = new CartesianCoordinate(xOffset, yOffset); Angle rotation = Angle.Origin(); curve = new ParabolicCurve(a, localOrigin, rotation, Tolerance); }
public static void YsAtX_Out_of_Range_Return_Empty_Arrays(double xCoord, double x, double y, double rotation) { CartesianCoordinate center = new CartesianCoordinate(x, y); ParabolicCurve curve = new ParabolicCurve(a, center, rotation, Tolerance); double[] yCoords = curve.YsAtX(xCoord); Assert.AreEqual(0, yCoords.Length); }
public static void YatX(double xCoord, double x, double y, double rotation, double yCoordExpected) { CartesianCoordinate center = new CartesianCoordinate(x, y); ParabolicCurve curve = new ParabolicCurve(a, center, rotation, Tolerance); double yCoord = curve.YatX(xCoord); Assert.AreEqual(yCoordExpected, yCoord, Tolerance); }
public static void YatX_Out_of_Range_Return_Infinity(double xCoord, double x, double y, double rotation) { CartesianCoordinate center = new CartesianCoordinate(x, y); ParabolicCurve curve = new ParabolicCurve(a, center, rotation, Tolerance); double yCoord = curve.YatX(xCoord); Assert.AreEqual(double.PositiveInfinity, yCoord); }
public static void XsAtY(double yCoord, double x, double y, double rotation, double x1CoordExpected, double x2CoordExpected) { CartesianCoordinate center = new CartesianCoordinate(x, y); ParabolicCurve curve = new ParabolicCurve(a, center, rotation, Tolerance); double[] xCoords = curve.XsAtY(yCoord); Assert.AreEqual(x1CoordExpected, xCoords[0], Tolerance); Assert.AreEqual(x2CoordExpected, xCoords[1], Tolerance); }
public static void Initialization_at_Local_Origin_with_Distances() { // Expected Complex Results CartesianCoordinate center = CartesianCoordinate.Origin(); Angle rotation = Angle.Origin(); double a = 5; double b = 2 * a; double c = a; double e = 1; double p = 2 * a; double xe = a; CartesianCoordinate vertexMajor1 = center; CartesianCoordinate vertexMinor1 = new CartesianCoordinate(a, b, Tolerance); CartesianCoordinate vertexMinor2 = new CartesianCoordinate(a, -b, Tolerance); CartesianCoordinate focus1 = new CartesianCoordinate(c, 0, Tolerance); CartesianCoordinate directrix1I = new CartesianCoordinate(-xe, 0, Tolerance); CartesianCoordinate directrix1J = new CartesianCoordinate(-xe, 1, Tolerance); // Initialization ParabolicCurve curve = new ParabolicCurve(a, center, rotation, Tolerance); // Simple properties Assert.AreEqual(0, curve.DistanceFromVertexMajorToLocalOrigin, Tolerance); Assert.AreEqual(b, curve.DistanceFromVertexMinorToMajorAxis, Tolerance); Assert.AreEqual(a, curve.DistanceFromFocusToLocalOrigin, Tolerance); Assert.AreEqual(e, curve.Eccentricity, Tolerance); Assert.AreEqual(p, curve.SemilatusRectumDistance, Tolerance); Assert.AreEqual(xe, curve.DistanceFromDirectrixToLocalOrigin, Tolerance); Assert.AreEqual(c + xe, curve.DistanceFromFocusToDirectrix, Tolerance); // Position properties Assert.AreEqual(Angle.Origin(), curve.Rotation); Assert.AreEqual(focus1, curve.Focus); Assert.AreEqual(center, curve.LocalOrigin); // Coordinate properties Assert.AreEqual(vertexMajor1, curve.VerticesMajor.Item1); Assert.AreEqual(vertexMajor1, curve.VerticesMajor.Item2); Assert.AreEqual(vertexMinor1, curve.VerticesMinor.Item1); Assert.AreEqual(vertexMinor2, curve.VerticesMinor.Item2); Assert.AreEqual(directrix1I, curve.Directrix.ControlPointI); Assert.AreEqual(directrix1J, curve.Directrix.ControlPointJ); Assert.AreEqual(vertexMajor1, curve.Range.Start.Limit); Assert.AreEqual(vertexMajor1, curve.Range.End.Limit); }
public static void CloneCurve() { ParabolicCurve curveCloned = curve.CloneCurve(); Assert.AreEqual(curve.Focus, curveCloned.Focus); Assert.AreEqual(curve.Directrix.ControlPointI, curveCloned.Directrix.ControlPointI); Assert.AreEqual(curve.Directrix.ControlPointJ, curveCloned.Directrix.ControlPointJ); Assert.AreEqual(curve.DistanceFromDirectrixToLocalOrigin, curveCloned.DistanceFromDirectrixToLocalOrigin, Tolerance); Assert.AreEqual(curve.DistanceFromFocusToDirectrix, curveCloned.DistanceFromFocusToDirectrix, Tolerance); Assert.AreEqual(curve.DistanceFromFocusToLocalOrigin, curveCloned.DistanceFromFocusToLocalOrigin, Tolerance); Assert.AreEqual(curve.DistanceFromVertexMajorToLocalOrigin, curveCloned.DistanceFromVertexMajorToLocalOrigin, Tolerance); Assert.AreEqual(curve.DistanceFromVertexMinorToMajorAxis, curveCloned.DistanceFromVertexMinorToMajorAxis, Tolerance); Assert.AreEqual(curve.SemilatusRectumDistance, curveCloned.SemilatusRectumDistance, Tolerance); Assert.AreEqual(curve.Eccentricity, curveCloned.Eccentricity, Tolerance); Assert.AreEqual(curve.LocalOrigin, curveCloned.LocalOrigin); Assert.AreEqual(curve.Rotation, curveCloned.Rotation); Assert.AreEqual(curve.VerticesMajor.Item1, curveCloned.VerticesMajor.Item1); Assert.AreEqual(curve.VerticesMajor.Item2, curveCloned.VerticesMajor.Item2); Assert.AreEqual(curve.VerticesMinor.Item1, curveCloned.VerticesMinor.Item1); Assert.AreEqual(curve.VerticesMinor.Item2, curveCloned.VerticesMinor.Item2); Assert.AreEqual(curve.Range.Start.Limit, curveCloned.Range.Start.Limit); Assert.AreEqual(curve.Range.End.Limit, curveCloned.Range.End.Limit); }
/// <summary> /// Initializes a new instance of the <see cref="ParabolicParametricY"/> class. /// </summary> /// <param name="parent">The parent.</param> public ParabolicParametricY(ParabolicCurve parent) : base(parent) { }
public ParabolicFocusParametricX(ParabolicCurve parent) : base(parent) { }
/// <summary> /// Initializes a new instance of the <see cref="ParabolicCurveParametric" /> class. /// </summary> /// <param name="parent">The parent object whose properties are used in the associated parametric equations.</param> public ParabolicCurveParametric(ParabolicCurve parent) { _x = new ParabolicParametricX(parent); _y = new ParabolicParametricY(parent); }