/** * Determines if the polygonToTest is inside the convex polygon. */ public static boolean isPolygonInside(ConvexPolygon2DReadOnly polygonToTest, ConvexPolygon2DReadOnly polygon) { return isPolygonInside(polygonToTest, 0.0, polygon); }
/** * Determines if the polygonToTest is inside the convex polygon. */ public static boolean isPolygonInside(ConvexPolygon2d polygonToTest, ConvexPolygon2d polygon) { return isPolygonInside(polygonToTest, 0.0, polygon); }
Assert.assertTrue(ConvexPolygon2dCalculator.isPolygonInside(polygon, 10E-10, originalPolygon));
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout = 30000) public void testShrinkingRandomPolygonsAreCompletelyInsideOriginalPolygons() { Random random = new Random(1984L); ReferenceFrame zUpFrame = ReferenceFrame.getWorldFrame(); double xMin = -2.0; double xMax = 2.0; double yMin = -1.0; double yMax = 4.0; double widthMax = 2.2; double heightMax = 1.3; int numberOfPoints = random.nextInt(20); int numberOfPolygons = 100; ArrayList<FrameConvexPolygon2D> randomPolygons = ConvexPolygon2dTestHelpers.generateRandomPolygons(random, zUpFrame, xMin, xMax, yMin, yMax, widthMax, heightMax, numberOfPoints, numberOfPolygons); ConvexPolygonScaler shrinker = new ConvexPolygonScaler(); FrameConvexPolygon2D shrunkenPolygon = new FrameConvexPolygon2D(); for (FrameConvexPolygon2D randomPolygon : randomPolygons) { double distance = RandomNumbers.nextDouble(random, 0.001, 5.0); shrinker.scaleConvexPolygon(randomPolygon, distance, shrunkenPolygon); ConvexPolygon2DReadOnly bigPolygon = randomPolygon; ConvexPolygon2DReadOnly smallPolygon = shrunkenPolygon; boolean completelyInside = ConvexPolygon2dCalculator.isPolygonInside(smallPolygon, bigPolygon); assertTrue(completelyInside); } }
assertTrue(ConvexPolygon2dCalculator.isPolygonInside(shrunkenPolygon, captureRegion));
polygonToTest1.addVertex(new Point2D(0.2, 0.2)); polygonToTest1.update(); assertTrue(ConvexPolygon2dCalculator.isPolygonInside(polygonToTest1, polygon)); assertTrue(ConvexPolygon2dCalculator.isPolygonInside(polygonToTest2, polygon)); assertTrue(ConvexPolygon2dCalculator.isPolygonInside(polygonToTest2, epsilon, polygon)); assertFalse(ConvexPolygon2dCalculator.isPolygonInside(polygonToTest2, -epsilon, polygon)); polygonToTest3.addVertex(new Point2D(1.0, 1.2)); polygonToTest3.update(); assertFalse(ConvexPolygon2dCalculator.isPolygonInside(polygonToTest3, polygon)); assertTrue(ConvexPolygon2dCalculator.isPolygonInside(polygonToTest4, polygon)); assertFalse(ConvexPolygon2dCalculator.isPolygonInside(polygonToTest5, polygon));
assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane)); if (ConvexPolygon2dCalculator.isPolygonInside(initialFoot, 1.0e-5, plane)) assertTrue(initialFoot.epsilonEquals(foot, 1.0e-10));
assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane));
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout = 30000) public void testProjectionThatRequiredRotation() { ConvexPolygon2D plane = PlannerTools.createDefaultFootPolygon(); plane.scale(1.1); ConvexPolygon2D initialFoot = PlannerTools.createDefaultFootPolygon(); RigidBodyTransform initialFootTransform = new RigidBodyTransform(); initialFootTransform.setRotationYawAndZeroTranslation(Math.toRadians(-13.0)); initialFootTransform.setTranslation(-0.1, -0.3, 0.0); initialFoot.applyTransform(initialFootTransform, false); ConvexPolygon2D foot = PolygonWiggler.wigglePolygon(initialFoot, plane, new WiggleParameters()); if (visualize) { addPolygonToArtifacts("Plane", plane, Color.BLACK); addPolygonToArtifacts("InitialFoot", initialFoot, Color.RED); addPolygonToArtifacts("Foot", foot, Color.BLUE); showPlotterAndSleep(artifacts); } assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane)); }
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout = 30000) public void testSimpleProjection() { ConvexPolygon2D plane = new ConvexPolygon2D(); plane.addVertex(0.0, 0.0); plane.addVertex(0.5, 0.0); plane.addVertex(0.0, 0.5); plane.addVertex(0.5, 0.5); plane.update(); ConvexPolygon2D initialFoot = PlannerTools.createDefaultFootPolygon(); RigidBodyTransform initialFootTransform = new RigidBodyTransform(); initialFootTransform.setRotationYawAndZeroTranslation(Math.toRadians(-30.0)); initialFootTransform.setTranslation(-0.1, -0.3, 0.0); initialFoot.applyTransform(initialFootTransform, false); WiggleParameters wiggleParameters = new WiggleParameters(); ConvexPolygon2D foot = PolygonWiggler.wigglePolygon(initialFoot, plane, wiggleParameters); if (visualize) { addPolygonToArtifacts("Plane", plane, Color.BLACK); addPolygonToArtifacts("InitialFoot", initialFoot, Color.RED); addPolygonToArtifacts("Foot", foot, Color.BLUE); showPlotterAndSleep(artifacts); } assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane)); }
assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane1));
assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, hullOfRegion));
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout = 30000) public void testSimpleProjectionWithDeltaInside() { ConvexPolygon2D plane = new ConvexPolygon2D(); plane.addVertex(0.0, 0.0); plane.addVertex(0.5, 0.0); plane.addVertex(0.0, 0.5); plane.addVertex(0.5, 0.5); plane.update(); ConvexPolygon2D initialFoot = PlannerTools.createDefaultFootPolygon(); RigidBodyTransform initialFootTransform = new RigidBodyTransform(); initialFootTransform.setRotationYawAndZeroTranslation(Math.toRadians(-30.0)); initialFootTransform.setTranslation(-0.1, -0.3, 0.0); initialFoot.applyTransform(initialFootTransform, false); WiggleParameters wiggleParameters = new WiggleParameters(); wiggleParameters.deltaInside = 0.06; ConvexPolygon2D foot = PolygonWiggler.wigglePolygon(initialFoot, plane, wiggleParameters); if (visualize) { addPolygonToArtifacts("Plane", plane, Color.BLACK); addPolygonToArtifacts("InitialFoot", initialFoot, Color.RED); addPolygonToArtifacts("Foot", foot, Color.BLUE); showPlotterAndSleep(artifacts); } checkThatWiggledInsideJustTheRightAmount(plane, wiggleParameters, foot); assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane)); }
assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane2));
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout = 30000) public void testProjectionOnlyTranslation() { ConvexPolygon2D plane = new ConvexPolygon2D(); plane.addVertex(0.0, 0.0); plane.addVertex(0.5, 0.0); plane.addVertex(0.0, 0.5); plane.addVertex(0.5, 0.5); plane.update(); ConvexPolygon2D initialFoot = PlannerTools.createDefaultFootPolygon(); RigidBodyTransform initialFootTransform = new RigidBodyTransform(); initialFootTransform.setTranslationAndIdentityRotation(-0.2, 0.25, 0.0); initialFoot.applyTransform(initialFootTransform, false); ConvexPolygon2D foot = PolygonWiggler.wigglePolygon(initialFoot, plane, new WiggleParameters()); if (visualize) { addPolygonToArtifacts("Plane", plane, Color.BLACK); addPolygonToArtifacts("InitialFoot", initialFoot, Color.RED); addPolygonToArtifacts("Foot", foot, Color.BLUE); showPlotterAndSleep(artifacts); } assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane)); }
assertTrue(polygonWithOnePoint.intersectionWith(arbitraryLine) == null); assertFalse(polygonWithOnePoint.isPointInside(arbitraryPoint0)); assertFalse(ConvexPolygon2dCalculator.isPolygonInside(sparePolygon, polygonWithOnePoint)); assertTrue(polygonWithOnePoint.orthogonalProjectionCopy(arbitraryPoint0).equals(pointThatDefinesThePolygon)); assertTrue(polygonWithOnePoint.pointIsOnPerimeter(pointThatDefinesThePolygon));
assertTrue(footCentroid.getY() - initialFootCentroid.getY() <= parameters.maxY); assertTrue(footCentroid.getY() - initialFootCentroid.getY() >= parameters.minY); assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane));
assertTrue(foot.getCentroid().getY() - initialFoot.getCentroid().getY() <= parameters.maxY); assertTrue(foot.getCentroid().getY() - initialFoot.getCentroid().getY() >= parameters.minY); assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane));
assertTrue(foot.getCentroid().getY() - initialFoot.getCentroid().getY() <= parameters.maxY); assertTrue(foot.getCentroid().getY() - initialFoot.getCentroid().getY() >= parameters.minY); assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane));
assertTrue(foot.getCentroid().getY() - initialFoot.getCentroid().getY() <= parameters.maxY); assertTrue(foot.getCentroid().getY() - initialFoot.getCentroid().getY() >= parameters.minY); assertTrue(ConvexPolygon2dCalculator.isPolygonInside(foot, 1.0e-5, plane));