gpt4 book ai didi

java - 如何在 Java 中对某些形状进行三角剖分/分割?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:08 28 4
gpt4 key购买 nike

我想从 GeoTools 分割国家/地区形状,以便在地球表面以 3D 形式显示它。 GeoTools 内部使用 JTS 拓扑套件,功能丰富。

它是否包含镶嵌某些形状的实用程序?我看到有三角测量包,但不知道如何将它用于带孔的形状。

此外,我不仅像这里那样连接现有的顶点

enter image description here

它应该填充内部有多个顶点的形状。

更新

我发现,JTS 包含类 ConformingDelaunayTriangulationBuilder,它允许以某种方式制作希望的曲面分割,但效果不佳。首先,它只允许约束,这意味着需要额外的代码来从凹面区域移除三角形。并且它还试图保留曲面分割的 Delaunay 性质,这导致创建许多额外的部分。

最后,对于国家和不可用等复杂形状,它会导致 ConstraintEnforcementException

我还找到了"triangle" package ,用 C 语言编写并实现 Chew's second algorithm并且效果很好

enter image description here

现在我想知道,它是移植到 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com