public void TestRectanglesDistance() { Polygon r1 = new PolygonRectangle(new RealPoint(0, 0), 10, 10); // Polygones décalés vérticalements OU horizontalement + coincidence segment Polygon r11 = new PolygonRectangle(new RealPoint(10, 0), 10, 10); Polygon r12 = new PolygonRectangle(new RealPoint(-10, 0), 10, 10); Polygon r13 = new PolygonRectangle(new RealPoint(0, 10), 10, 10); Polygon r14 = new PolygonRectangle(new RealPoint(0, -10), 10, 10); Assert.AreEqual(0, r1.Distance(r11)); Assert.AreEqual(0, r1.Distance(r12)); Assert.AreEqual(0, r1.Distance(r13)); Assert.AreEqual(0, r1.Distance(r14)); // Polygones décalés vérticalements ou horizontalement + coincidence coin Polygon r21 = new PolygonRectangle(new RealPoint(10, 0), 10, 10); Polygon r22 = new PolygonRectangle(new RealPoint(-10, 0), 10, 10); Polygon r23 = new PolygonRectangle(new RealPoint(0, 10), 10, 10); Polygon r24 = new PolygonRectangle(new RealPoint(0, -10), 10, 10); Assert.AreEqual(0, r1.Distance(r21)); Assert.AreEqual(0, r1.Distance(r22)); Assert.AreEqual(0, r1.Distance(r23)); Assert.AreEqual(0, r1.Distance(r24)); // Polygones décalés vérticalements ET horizontalement Polygon r31 = new PolygonRectangle(new RealPoint(20, 20), 10, 10); Polygon r32 = new PolygonRectangle(new RealPoint(-20, -20), 10, 10); Polygon r33 = new PolygonRectangle(new RealPoint(-20, -20), 10, 10); Assert.AreEqual(Math.Sqrt(10 * 10 + 10 * 10), r1.Distance(r31)); Assert.AreEqual(Math.Sqrt(10 * 10 + 10 * 10), r1.Distance(r32)); }
public void TestCrossRectanglesDistance() { Polygon r1 = new PolygonRectangle(new RealPoint(0, 0), 10, 10); Polygon r11 = new PolygonRectangle(new RealPoint(5, 5), 10, 10); // Rectangles qui se croisent sur 2 points Assert.AreEqual(0, r1.Distance(r11)); Polygon r12 = new PolygonRectangle(new RealPoint(2, 2), 6, 6); // Rectangles imbriqués Assert.AreEqual(0, r1.Distance(r12)); // Test imbrication rectangle A dans B Assert.AreEqual(0, r12.Distance(r1)); // Test imbrication rectangle B dans A }
public void TestRectangleSegmentDistance() { Polygon r1 = new PolygonRectangle(new RealPoint(0, 0), 10, 10); // Test avec segments confondus Segment s11 = new Segment(new RealPoint(0, 0), new RealPoint(0, 10)); Segment s12 = new Segment(new RealPoint(0, 10), new RealPoint(10, 10)); Segment s13 = new Segment(new RealPoint(10, 10), new RealPoint(10, 0)); Segment s14 = new Segment(new RealPoint(10, 0), new RealPoint(0, 0)); Assert.AreEqual(0, r1.Distance(s11)); Assert.AreEqual(0, r1.Distance(s12)); Assert.AreEqual(0, r1.Distance(s13)); Assert.AreEqual(0, r1.Distance(s14)); // Test avec segments décales Segment s21 = new Segment(new RealPoint(20, 0), new RealPoint(20, 10)); Segment s22 = new Segment(new RealPoint(-10, 0), new RealPoint(-10, 10)); Segment s23 = new Segment(new RealPoint(0, -10), new RealPoint(10, -10)); Segment s24 = new Segment(new RealPoint(0, 20), new RealPoint(10, 20)); Assert.AreEqual(10, r1.Distance(s21)); Assert.AreEqual(10, r1.Distance(s22)); Assert.AreEqual(10, r1.Distance(s23)); Assert.AreEqual(10, r1.Distance(s24)); }
public void TestCrossRectangleAndCircleDistance() { Polygon r1 = new PolygonRectangle(new RealPoint(0, 0), 10, 10); Circle c11 = new Circle(new RealPoint(5, 5), 2); Assert.AreEqual(0, r1.Distance(c11)); Assert.AreEqual(0, c11.Distance(r1)); }