Beispiel #1
0
        public static void SetUp()
        {
            double a = 5;
            CartesianCoordinate localOrigin = new CartesianCoordinate(xOffset, yOffset);
            Angle rotation = Angle.Origin();

            curve = new ParabolicCurve(a, localOrigin, rotation, Tolerance);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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)
 {
 }
Beispiel #9
0
 public ParabolicFocusParametricX(ParabolicCurve parent) : base(parent)
 {
 }
Beispiel #10
0
 /// <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);
 }