gpt4 book ai didi

java - 如何使用 JTS 中的 Delaunay 三角剖分为点插值 Z 值的示例

转载 作者:行者123 更新时间:2023-11-30 06:27:41 29 4
gpt4 key购买 nike

这是一个相当补救的问题。我一直在查看 JTS DelaunayTriangulationBuilder 的文档,但我不知道如何做看起来应该是一件简单的事情。我希望获取一系列点,对它们进行三角剖分,然后在该网格内插入一个随机点的 Z 值。粗略阅读如何做到这一点并不明显。有任何想法吗?

最佳答案

加载三角剖分对象后,对其调用 getSubdivision() 以获取三角剖分。它使用 quad-edge数据结构,稍后您将需要它。 (如果你知道什么是半边或翼边表示,就更容易理解。)生成的 QuadEdgeSubdivision 有一个方法 locate,给定一个坐标,返回一个封闭三角形的边缘(作为四边形)。使用 orig() 获取其起始顶点,使用 dest() 获取其目标顶点。用oNext() 得到另一条边,它的目的顶点是第三个顶点(也是dPrev().origin() 是同一个顶点)。现在您有了三个顶点,将您的测试点表示为 Vertex 并调用 interpolateZValue

例如:

public static double 
interpolateZ(DelaunayTriangulationBuilder triangulation,
Coordinate coordinate) {
QuadEdgeSubdivision quadEdgeSubdivision = triangulation.getSubdivision();
QuadEdge edge = quadEdgeSubdivision.locate(coordinate);
return new Vertex(coordinate.x, coordinate.y)
.interpolateZValue(edge.orig(), edge.dest(), edge.oNext().dest());
}

不过你是对的。从阅读他们的 API 来看,如何做到这一点并不明显。

关于java - 如何使用 JTS 中的 Delaunay 三角剖分为点插值 Z 值的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13203080/

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