protected List<Polygon> computePolygons(List<Coord3d> coordinates) { // Append all input Jzy3d coordinates in JDT triangulator DelaunayTriangulation triangulator = new DelaunayTriangulation(); for (Coord3d coord: coordinates) { triangulator.insertPoint(JDTConverter.toJdtPoint(coord)); } // Retrieve triangles computed by JDT List<Polygon> polygons = new ArrayList<Polygon>(triangulator.trianglesSize()); Iterator<Triangle> it = triangulator.trianglesIterator(); while (it.hasNext()) { Triangle triangle = it.next(); // isHalfplane indicates a degenerated triangle if (triangle.isHalfplane()) continue; polygons.add(JDTConverter.toJzyPolygon(triangle)); } return polygons; }