我知道这篇文章比较老,但我最近遇到了同样的情况,需要一些 Java 库或类似的工具来对一些复杂的多边形进行三角剖分(因为我想在 OpenGL 上显示它们,它只能将三角形绘制为原始操作)。
经过相当多的搜索和测试,对我有用的库是Orbgis的 Poly2Tri。您可以在此处从 Maven 获取该库*。
这个库有很多特性,包括带孔的多边形、优化三角剖分的施泰纳点和其他东西。一个基本的使用示例如下(基于链接仓库的示例):
//Create the polygon passing a List of PolygonPoints
Polygon polygon = new Polygon(
Arrays.asList(
new PolygonPoint(0, 0, 0),
new PolygonPoint(10, 0, 1),
new PolygonPoint(10, 10, 2),
new PolygonPoint(0, 10, 3)));
//Here you could add holes as needed, passing them as Polygons
polygon.addHole(someHoleYouCreated);
//Next, proceed to calculate the triangulation of the polygon
Poly2Tri.triangulate(polygon);
//Finally, obtain the resulting triangles
List<DelaunayTriangle> triangles = polygon.getTriangles();
编辑:不知道您是否已经尝试过,但 JTS Topology Suite 也有一个DelaunayTriangulationBuilder
类(即没有 Conforming 部分)。它位于org.locationtech.jts.triangulate.DelaunayTriangulationBuilder
,也许它比您尝试过但表现不佳的另一个效果更好。
*注意:注意不要改用这个,就像我一开始做的那样,发现它不是正确的依赖项(不是 -core 版本)