Example #1
0
        [TestCase(11, 6, 7, 6.899515)] // Intersection
        public static void RadicalLineLength_Static_Returns_Length_of_Radical_Line_Formed_By_Circular_Intersection(
            double separation, double radius1, double radius2,
            double expected)
        {
            double result = IntersectionCircularCircular.RadicalLineLength(separation, radius1, radius2, Tolerance);

            Assert.AreEqual(expected, result, Tolerance);
        }
Example #2
0
        public static void Initialization()
        {
            CircularCurve curve1 = new CircularCurve(new CartesianCoordinate(1, 2), new CartesianCoordinate(3, 4));
            CircularCurve curve2 = new CircularCurve(new CartesianCoordinate(-1, 2), new CartesianCoordinate(-3, 4));

            IntersectionCircularCircular intersections = new IntersectionCircularCircular(curve1, curve2);

            Assert.AreEqual(curve1, intersections.Curve1);
            Assert.AreEqual(curve2, intersections.Curve2);
        }
Example #3
0
        [TestCase(4, -5, 6, 13.5262794416288, -10.5, 3)]   // No intersection, Translated  and Rotated to quadrant 4
        public static void IntersectionCoordinates_Static_of_Not_Intersecting_Returns_Empty_Array(
            double x1, double y1, double r1,
            double x2, double y2, double r2)
        {
            CircularCurve curve1 = new CircularCurve(r1, new CartesianCoordinate(x1, y1));

            curve1.Tolerance = Tolerance;
            CircularCurve curve2 = new CircularCurve(r2, new CartesianCoordinate(x2, y2));

            curve2.Tolerance = Tolerance;

            CartesianCoordinate[] intersectionCoordinates = IntersectionCircularCircular.IntersectionCoordinates(curve1, curve2);
            Assert.AreEqual(0, intersectionCoordinates.Length);
        }
Example #4
0
        [TestCase(0, 0, 6, 0, 0, 6)]  // Circles overlap, same sizes
        public static void RadicalLineLength_Throws_OverlappingCurvesException_when_No_Separation(
            double x1, double y1, double r1,
            double x2, double y2, double r2)
        {
            CircularCurve curve1 = new CircularCurve(r1, new CartesianCoordinate(x1, y1));

            curve1.Tolerance = Tolerance;
            CircularCurve curve2 = new CircularCurve(r2, new CartesianCoordinate(x2, y2));

            curve2.Tolerance = Tolerance;

            IntersectionCircularCircular intersections = new IntersectionCircularCircular(curve1, curve2);

            Assert.Throws <OverlappingCurvesException>(() => intersections.RadicalLineLength());
        }
Example #5
0
        [TestCase(0, 0, 6, 0, 0, 3, 0)]                      // Circles overlap
        public static void CenterSeparations_Static_Returns_Distance_Circle_Centers_Are_Separated_By(
            double x1, double y1, double r1,
            double x2, double y2, double r2,
            double expected)
        {
            CircularCurve curve1 = new CircularCurve(r1, new CartesianCoordinate(x1, y1));

            curve1.Tolerance = Tolerance;
            CircularCurve curve2 = new CircularCurve(r2, new CartesianCoordinate(x2, y2));

            curve2.Tolerance = Tolerance;

            double result = IntersectionCircularCircular.CenterSeparations(curve1, curve2);

            Assert.AreEqual(expected, result, Tolerance);
        }
Example #6
0
        [TestCase(4, 5, 6, 13.5262794416288, 10.5, 7, true)]      // Intersection, Translated  and Rotated to quadrant 1
        public static void AreIntersecting_Static(
            double x1, double y1, double r1,
            double x2, double y2, double r2,
            bool expectedResult)
        {
            CircularCurve curve1 = new CircularCurve(r1, new CartesianCoordinate(x1, y1));

            curve1.Tolerance = Tolerance;
            CircularCurve curve2 = new CircularCurve(r2, new CartesianCoordinate(x2, y2));

            curve2.Tolerance = Tolerance;

            bool result = IntersectionCircularCircular.AreIntersecting(curve1, curve2);

            Assert.AreEqual(expectedResult, result);
        }
Example #7
0
        [TestCase(4, -5, 6, 13.5262794416288, -10.5, 5, 9.196152, -8)]    // Tangent, Translated and Rotated to quadrant 4
        public static void IntersectionCoordinates_Static_of_Tangents_Returns_Tangent_Coordinate(
            double x1, double y1, double r1,
            double x2, double y2, double r2,
            double x1Expected, double y1Expected)
        {
            CircularCurve curve1 = new CircularCurve(r1, new CartesianCoordinate(x1, y1));

            curve1.Tolerance = Tolerance;
            CircularCurve curve2 = new CircularCurve(r2, new CartesianCoordinate(x2, y2));

            curve2.Tolerance = Tolerance;

            CartesianCoordinate[] intersectionCoordinates = IntersectionCircularCircular.IntersectionCoordinates(curve1, curve2);
            Assert.AreEqual(1, intersectionCoordinates.Length);
            Assert.AreEqual(x1Expected, intersectionCoordinates[0].X, Tolerance);
            Assert.AreEqual(y1Expected, intersectionCoordinates[0].Y, Tolerance);
        }
Example #8
0
        [TestCase(4, -5, 6, 13.5262794416288, -10.5, 7, 6.899515)] // Intersection, Translated and Rotated to quadrant 4
        public static void RadicalLineLength_Returns_Length_of_Radical_Line_Formed_By_Circular_Intersection(
            double x1, double y1, double r1,
            double x2, double y2, double r2,
            double expected)
        {
            CircularCurve curve1 = new CircularCurve(r1, new CartesianCoordinate(x1, y1));

            curve1.Tolerance = Tolerance;
            CircularCurve curve2 = new CircularCurve(r2, new CartesianCoordinate(x2, y2));

            curve2.Tolerance = Tolerance;

            IntersectionCircularCircular intersections = new IntersectionCircularCircular(curve1, curve2);
            double result = intersections.RadicalLineLength();

            Assert.AreEqual(expected, result, Tolerance);
        }
Example #9
0
        [TestCase(4, -5, 6, 13.5262794416288, -10.5, 7, 9.976276, -4.466968, 6.526519, -10.442123)]     // Intersection, Translated and Rotated to quadrant 4
        public static void IntersectionCoordinates(
            double x1, double y1, double r1,
            double x2, double y2, double r2,
            double x1Expected, double y1Expected,
            double x2Expected, double y2Expected)
        {
            CircularCurve curve1 = new CircularCurve(r1, new CartesianCoordinate(x1, y1));

            curve1.Tolerance = Tolerance;
            CircularCurve curve2 = new CircularCurve(r2, new CartesianCoordinate(x2, y2));

            curve2.Tolerance = Tolerance;

            IntersectionCircularCircular intersections = new IntersectionCircularCircular(curve1, curve2);

            CartesianCoordinate[] intersectionCoordinates = intersections.IntersectionCoordinates();

            Assert.AreEqual(x1Expected, intersectionCoordinates[0].X, Tolerance);
            Assert.AreEqual(y1Expected, intersectionCoordinates[0].Y, Tolerance);
            Assert.AreEqual(x2Expected, intersectionCoordinates[1].X, Tolerance);
            Assert.AreEqual(y2Expected, intersectionCoordinates[1].Y, Tolerance);
        }
 /// <summary>
 /// Determines if the curves intersect each other.
 /// </summary>
 /// <param name="curve1">The curve1.</param>
 /// <param name="curve2">The curve2.</param>
 /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
 /// <exception cref="NotImplementedException"></exception>
 public static bool AreIntersecting(CircularCurve curve1, CircularCurve curve2)
 {
     return(IntersectionCircularCircular.AreIntersecting(curve1, curve2));
 }
 /// <summary>
 /// Returns points where the circular curve intersects the provided circular curve.
 /// </summary>
 /// <param name="otherLine">Circular curve that intersects the current circular curve.</param>
 /// <returns>CartesianCoordinate.</returns>
 public CartesianCoordinate[] IntersectionCoordinate(CircularCurve otherLine)
 {
     return(IntersectionCircularCircular.IntersectionCoordinates(this, otherLine));
 }
Example #12
0
 [TestCase(0, 6, 6)]  // Circles overlap, same sizes
 public static void RadicalLineLength_Static_Throws_OverlappingCurvesException_when_No_Separation(double separation, double radius1, double radius2)
 {
     Assert.Throws <OverlappingCurvesException>(() => IntersectionCircularCircular.RadicalLineLength(separation, radius1, radius2));
 }