- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想从 GeoTools 分割国家/地区形状,以便在地球表面以 3D 形式显示它。 GeoTools 内部使用 JTS 拓扑套件,功能丰富。
它是否包含镶嵌某些形状的实用程序?我看到有三角测量包,但不知道如何将它用于带孔的形状。
此外,我不仅像这里那样连接现有的顶点
它应该填充内部有多个顶点的形状。
更新
我发现,JTS 包含类 ConformingDelaunayTriangulationBuilder
,它允许以某种方式制作希望的曲面分割,但效果不佳。首先,它只允许约束,这意味着需要额外的代码来从凹面区域移除三角形。并且它还试图保留曲面分割的 Delaunay 性质,这导致创建许多额外的部分。
最后,对于国家和不可用等复杂形状,它会导致 ConstraintEnforcementException
。
我还找到了"triangle" package ,用 C 语言编写并实现 Chew's second algorithm并且效果很好
现在我想知道,它是移植到 Java 还是封装到 Java 中?
最佳答案
我知道这篇文章比较老,但我最近遇到了同样的情况,需要一些 Java 库或类似的工具来对一些复杂的多边形进行三角剖分(因为我想在 OpenGL 上显示它们,它只能将三角形绘制为原始操作) .
经过相当多的搜索和测试,适合我的图书馆是 Poly2Tri来自 Orbgis。您可以从 Maven 获取该库 here *。
该库具有许多功能,包括带孔的多边形、用于优化三角测量的斯坦纳点以及其他内容。基本用法示例如下(基于链接 repo 的示例):
//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
中,也许它比您尝试过但表现不佳的另一个更好。
*注意:注意不要使用this one相反,正如我最初所做的那样,发现它不是正确的依赖项(不是 -core 版本)
关于java - 如何在 Java 中对某些形状进行三角剖分/分割?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23597434/
我是一名优秀的程序员,十分优秀!