@Test public void testIsEarTip2() { List<VectorXZ> outlineNoDup = outlineB.subList(0, outlineB.size() - 1); assertTrue(EarClippingTriangulationUtil.isEarTip(0, outlineNoDup)); assertFalse(EarClippingTriangulationUtil.isEarTip(1, outlineNoDup)); assertFalse(EarClippingTriangulationUtil.isEarTip(2, outlineNoDup)); assertTrue(EarClippingTriangulationUtil.isEarTip(3, outlineNoDup)); assertFalse(EarClippingTriangulationUtil.isEarTip(4, outlineNoDup)); }
@Test public void testIsConvex2() { List<VectorXZ> outlineNoDup = outlineB.subList(0, outlineB.size() - 1); for (int i = 0; i < outlineNoDup.size(); i++) { if (i == 4) { assertFalse(EarClippingTriangulationUtil.isConvex(i, outlineNoDup)); } else { assertTrue("at " + i, EarClippingTriangulationUtil.isConvex(i, outlineNoDup)); } } }
@Test public void testFindVisibleOutlineVertex3() { assertNull( EarClippingTriangulationUtil.findVisibleOutlineVertex( outlineA, new VectorXZ(0.55f, 0.55f), Arrays.asList(holeA, holeB))); }
@Test public void testFindVisibleOutlineVertex1() { assertNotNull( EarClippingTriangulationUtil.findVisibleOutlineVertex( outlineA, new VectorXZ(0.55f, 0.55f), Collections.<SimplePolygonXZ>emptyList())); }
@Test public void testIsEarTip1() { for (int i = 0; i < outlineA.size(); i++) { assertTrue(EarClippingTriangulationUtil.isEarTip(i, outlineA)); } }
@Test public void testTriangulateSimplePolygon() { List<TriangleXZ> triangles = new ArrayList<TriangleXZ>( EarClippingTriangulationUtil.triangulateSimplePolygon( new ArrayList<VectorXZ>(outlineA))); assertSame(triangles.size(), 2); Collection<VectorXZ> vsT0 = Arrays.asList(triangles.get(0).v1, triangles.get(0).v2, triangles.get(0).v3); Collection<VectorXZ> vsT1 = Arrays.asList(triangles.get(1).v1, triangles.get(1).v2, triangles.get(1).v3); if (vsT0.contains(outlineA0) && vsT0.contains(outlineA1) && vsT0.contains(outlineA2)) { assertTrue(vsT1.contains(outlineA0) && vsT1.contains(outlineA3) && vsT1.contains(outlineA2)); } else if (vsT0.contains(outlineA1) && vsT0.contains(outlineA2) && vsT0.contains(outlineA3)) { assertTrue(vsT1.contains(outlineA1) && vsT1.contains(outlineA0) && vsT1.contains(outlineA3)); } else if (vsT0.contains(outlineA2) && vsT0.contains(outlineA3) && vsT0.contains(outlineA0)) { assertTrue(vsT1.contains(outlineA2) && vsT1.contains(outlineA1) && vsT1.contains(outlineA0)); } else if (vsT0.contains(outlineA3) && vsT0.contains(outlineA0) && vsT0.contains(outlineA1)) { assertTrue(vsT1.contains(outlineA3) && vsT1.contains(outlineA2) && vsT1.contains(outlineA1)); } else { fail(); } }
@Test public void testFindVisibleOutlineVertex2() { assertEquals( outlineA2, outlineA.get( EarClippingTriangulationUtil.findVisibleOutlineVertex( outlineA, new VectorXZ(0.55f, 0.55f), Arrays.asList(holeA)))); }
/** rearrange, invert */ @Test public void testRearrangeOutline2() { List<VectorXZ> newOutline = EarClippingTriangulationUtil.rearrangeOutline(outlineA, 3, true); assertSame(5, newOutline.size()); assertEquals(outlineA3, newOutline.get(0)); assertEquals(outlineA2, newOutline.get(1)); assertEquals(outlineA1, newOutline.get(2)); assertEquals(outlineA0, newOutline.get(3)); assertEquals(outlineA3, newOutline.get(4)); }
@Test public void testInsertHoleInPolygonOutline() { List<VectorXZ> newOutline = new LinkedList<VectorXZ>(outlineA); EarClippingTriangulationUtil.insertHoleInPolygonOutline( newOutline, holeB, Arrays.asList(holeA)); assertSame(outlineA.size() + holeB.getVertexLoop().size() + 1, newOutline.size()); for (VectorXZ innerVertex : holeB.getVertexLoop()) { assertTrue(newOutline.contains(innerVertex)); } }
@Test public void testInsertVertexInPolygonOutline() { VectorXZ point = new VectorXZ(0.55f, 0.55f); List<VectorXZ> newOutline = new LinkedList<VectorXZ>(outlineA); EarClippingTriangulationUtil.insertVertexInPolygonOutline(newOutline, point); assertSame(7, newOutline.size()); assertTrue(newOutline.contains(point)); assertEquals( newOutline.get(newOutline.indexOf(point) - 1), newOutline.get(newOutline.indexOf(point) + 1)); }