package org.osm2world.core.math.algorithms; import static org.osm2world.core.test.TestUtil.assertAlmostEquals; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.junit.Test; import org.osm2world.core.math.LineSegmentXZ; import org.osm2world.core.math.SimplePolygonXZ; import org.osm2world.core.math.TriangleXZ; import org.osm2world.core.math.VectorXZ; import org.osm2world.core.util.exception.TriangulationException; public class Poly2TriTriangulationUtilTest { private static final VectorXZ outlineA0 = new VectorXZ(-1.1f, -1.1f); private static final VectorXZ outlineA1 = new VectorXZ(-1.1f, 1.1f); private static final VectorXZ outlineA2 = new VectorXZ(1.1f, 1.1f); private static final VectorXZ outlineA3 = new VectorXZ(1.1f, -1.1f); private static final List<VectorXZ> outlineA = Arrays.asList(outlineA0, outlineA1, outlineA2, outlineA3, outlineA0); private static final List<VectorXZ> outlineB = Arrays.asList( new VectorXZ(100, 0), new VectorXZ(0, 100), new VectorXZ(-99, 0), new VectorXZ(0, -99), new VectorXZ(100, 0)); @Test public void triangulateTest() throws TriangulationException { SimplePolygonXZ polygon = new SimplePolygonXZ(outlineB); List<TriangleXZ> triangles = Poly2TriTriangulationUtil.triangulate( polygon, Collections.<SimplePolygonXZ>emptyList(), Collections.<LineSegmentXZ>emptyList(), Collections.<VectorXZ>emptyList()); double triangleArea = 0; for (TriangleXZ t : triangles) { triangleArea += t.getArea(); } assertAlmostEquals(polygon.getArea(), triangleArea); } }