@Test public void testIntersectionWithLineSegment2() { // empty polygon T polygon = createEmptyConvexPolygon2D(); Point2D result1 = new Point2D(); Point2D result2 = new Point2D(); LineSegment2D segment1 = new LineSegment2D(); Point2D[] expected1 = null; assertPointsEqual(expected1, polygon.intersectionWith(segment1), false); assertTrue(polygon.intersectionWith(segment1, result1, result2) == 0); }
@Test public void testIntersectionWithLineSegment3() { // point polygon T polygon = createEmptyConvexPolygon2D(); polygon.addVertex(new Point2D(1.0, 1.0)); polygon.update(); Point2D result1 = new Point2D(); Point2D result2 = new Point2D(); LineSegment2D segment1 = new LineSegment2D(new Point2D(1.0, 0.0), new Point2D(2.0, 0.0)); Point2D[] expected1 = null; assertPointsEqual(expected1, polygon.intersectionWith(segment1), false); assertTrue(polygon.intersectionWith(segment1, result1, result2) == 0); LineSegment2D segment2 = new LineSegment2D(new Point2D(1.0, 1.0), new Point2D(2.0, 0.0)); Point2D[] expected2 = new Point2D[] {new Point2D(1.0, 1.0)}; assertPointsEqual(expected2, polygon.intersectionWith(segment2), false); assertTrue(polygon.intersectionWith(segment2, result1, result2) == 1); LineSegment2D segment3 = new LineSegment2D(new Point2D(0.0, 0.0), new Point2D(1.0, 1.0)); Point2D[] expected3 = new Point2D[] {new Point2D(1.0, 1.0)}; assertPointsEqual(expected3, polygon.intersectionWith(segment3), false); assertTrue(polygon.intersectionWith(segment3, result1, result2) == 1); }
@Test public void testIntersectionWithLine4() { // empty polygon T polygon = createEmptyConvexPolygon2D(); Line2D line1 = new Line2D(new Point2D(3.0, 1.0), new Vector2D(-1.6, -0.8)); Point2D[] expected1 = null; assertPointsEqual(expected1, polygon.intersectionWith(line1), false); }
assertPointsEqual(expected1, polygon.intersectionWith(segment1), false); assertTrue(polygon.intersectionWith(segment1, result1, result2) == 2); assertPointsEqual(expected2, polygon.intersectionWith(segment2), false); assertTrue(polygon.intersectionWith(segment2, result1, result2) == 2); assertPointsEqual(expected3, polygon.intersectionWith(segment3), false); assertTrue(polygon.intersectionWith(segment3, result1, result2) == 2); assertPointsEqual(expected4, polygon.intersectionWith(segment4), false); assertTrue(polygon.intersectionWith(segment4, result1, result2) == 2); assertPointsEqual(expected5, polygon.intersectionWith(segment5), false); assertTrue(polygon.intersectionWith(segment5, result1, result2) == 0); assertPointsEqual(expected6, polygon.intersectionWith(segment6), false); assertTrue(polygon.intersectionWith(segment6, result1, result2) == 1); assertPointsEqual(expected7, polygon.intersectionWith(segment7), false); assertTrue(polygon.intersectionWith(segment7, result1, result2) == 1); assertPointsEqual(expected8, polygon.intersectionWith(segment8), false); assertTrue(polygon.intersectionWith(segment8, result1, result2) == 1); assertPointsEqual(expected9, polygon.intersectionWith(segment9), false); assertTrue(polygon.intersectionWith(segment9, result1, result2) == 2);
@Test public void testIntersectionWithLine3() { // point polygon T polygon = createEmptyConvexPolygon2D(); polygon.addVertex(new Point2D(1.0, 0.0)); polygon.update(); Line2D line1 = new Line2D(new Point2D(3.0, 1.0), new Vector2D(-2.0, -1.0)); Point2D[] expected1 = new Point2D[] {new Point2D(1.0, 0.0)}; assertPointsEqual(expected1, polygon.intersectionWith(line1), false); Line2D line2 = new Line2D(new Point2D(2.0, 1.0), new Vector2D(-1.3, -0.8)); Point2D[] expected2 = null; assertPointsEqual(expected2, polygon.intersectionWith(line2), false); }
assertPointsEqual(expected1, polygon.intersectionWith(segment1), false); assertTrue(polygon.intersectionWith(segment1, result1, result2) == 1); assertPointsEqual(expected2, polygon.intersectionWith(segment2), false); assertTrue(polygon.intersectionWith(segment2, result1, result2) == 2); assertPointsEqual(expected3, polygon.intersectionWith(segment3), false); assertTrue(polygon.intersectionWith(segment3, result1, result2) == 0); assertPointsEqual(expected4, polygon.intersectionWith(segment4), false); assertTrue(polygon.intersectionWith(segment4, result1, result2) == 0); assertPointsEqual(expected5, polygon.intersectionWith(segment5), false); assertTrue(polygon.intersectionWith(segment5, result1, result2) == 2); assertPointsEqual(expected6, polygon.intersectionWith(segment6), false); assertTrue(polygon.intersectionWith(segment6, result1, result2) == 2); assertPointsEqual(expected7, polygon.intersectionWith(segment7), false); assertTrue(polygon.intersectionWith(segment7, result1, result2) == 2); assertPointsEqual(expected8, polygon.intersectionWith(segment8), false); assertTrue(polygon.intersectionWith(segment8, result1, result2) == 0); assertPointsEqual(expected9, polygon.intersectionWith(segment9), false); assertTrue(polygon.intersectionWith(segment9, result1, result2) == 2); assertPointsEqual(expected10, polygon.intersectionWith(segment10), false); result1.set(expected10[0]);
@Test public void testIntersectionWithLine2() { // line polygon T polygon = createEmptyConvexPolygon2D(); polygon.addVertex(new Point2D(1.0, 0.0)); polygon.addVertex(new Point2D(-1.0, 0.0)); polygon.update(); Line2D line1 = new Line2D(new Point2D(-1.0, 1.0), new Vector2D(0.0, -0.8)); Point2D[] expected1 = new Point2D[] {new Point2D(-1.0, 0.0)}; assertPointsEqual(expected1, polygon.intersectionWith(line1), false); Line2D line2 = new Line2D(new Point2D(-0.5, 1.0), new Vector2D(0.0, -0.8)); Point2D[] expected2 = new Point2D[] {new Point2D(-0.5, 0.0)}; assertPointsEqual(expected2, polygon.intersectionWith(line2), false); Line2D line3 = new Line2D(new Point2D(1.5, 1.0), new Vector2D(0.0, -0.8)); Point2D[] expected3 = null; assertPointsEqual(expected3, polygon.intersectionWith(line3), false); Line2D line4 = new Line2D(new Point2D(-0.8, 0.0), new Vector2D(0.1, 0.0)); Point2D[] expected4 = new Point2D[] {new Point2D(-1.0, 0.0), new Point2D(1.0, 0.0)}; assertPointsEqual(expected4, polygon.intersectionWith(line4), false); Line2D line5 = new Line2D(new Point2D(1.0, 0.0), new Vector2D(0.0, -0.1)); Point2D[] expected5 = new Point2D[] {new Point2D(1.0, 0.0)}; assertPointsEqual(expected5, polygon.intersectionWith(line5), false); Line2D line6 = new Line2D(new Point2D(-1.0, 0.0), new Vector2D(0.0, -0.1)); Point2D[] expected6 = new Point2D[] {new Point2D(-1.0, 0.0)}; assertPointsEqual(expected6, polygon.intersectionWith(line6), false); }
assertPointsEqual(expected1, polygon.intersectionWith(line1), false); assertPointsEqual(expected2, polygon.intersectionWith(line2), false); assertTrue(polygon.intersectionWith(line2, result1, result2) == 1); EuclidCoreTestTools.assertTuple2DEquals(expected2[0], result1, EPSILON); assertPointsEqual(expected3, polygon.intersectionWith(line3), false); assertTrue(polygon.intersectionWith(line3, result1, result2) == 2); EuclidCoreTestTools.assertTuple2DEquals(expected3[0], result1, EPSILON); EuclidCoreTestTools.assertTuple2DEquals(expected3[1], result2, EPSILON); assertPointsEqual(expected4, polygon.intersectionWith(line4), false); assertPointsEqual(expected5, polygon.intersectionWith(line5), false); result1.set(0.0, 0.0); result2.set(0.0, 0.0); assertPointsEqual(expected6, polygon.intersectionWith(line6), false); assertTrue(polygon.intersectionWith(line6, result1, result2) == 0); assertPointsEqual(expected7, polygon.intersectionWith(line7), false);
public int cutPolygonWithLine(Line2DReadOnly cuttingLine, ConvexPolygon2DBasics polygonToCut, RobotSide sideOfLineToCut) int intersectionPoints = polygonToCut.intersectionWith(cuttingLine, intersectionPoint1, intersectionPoint2);