java - 在 Delaunay 三角化曲面中定位包含任意点的三角形

标签 java algorithm vba interpolation triangulation

我正在寻找基于 Delaunay 三角剖分的不规则采样函数 z(x,y) 的线性插值。假设我有一座山,我已经为其获得了 Delaunay 三角剖分:

Delaunay-triangulated hill

我知道每个三角形顶点(样本)的高度 z。我想要任意点 (x,y) 的高度 z

  • 如何判断哪个三角形包含点 (x,y)?一旦我知道了这一点,我想在三角形的三个顶点之间进行插值是相当简单的。

  • 您知道现成的实现方式吗?也许还包括插值位?我确信一定有一个开源的实现。我对 Java(源代码或 JAR)特别感兴趣,但任何 VB 风格或其他语言也可能有用。

最佳答案

可以通过walking through the triangulation找到目标三角形朝向搜索点。这假设您可以在恒定时间内访问相邻的三角形,如果三角剖分存储在双向连接的边列表或类似结构中,就是这种情况。实现很简单,因为您不需要任何额外的数据结构。

补充细节:设P为搜索点。取任意三角形 T0 和 T0 中的一点 P0。如果 P 在 T0 中,你就完成了。否则找到与线 P0-P 交叉的 T0 的边 E0。转到边缘 E0 上 T 的邻居三角形 T1,并在 T1 中取一个点 P1。现在重复直到三角形 Tn 包含 P。

关于java - 在 Delaunay 三角化曲面中定位包含任意点的三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7389119/

相关文章:

java - Tomcat 8 中的 SSL : server & client JKS + client public cer

algorithm - 在偏序集中查找大于给定的元素

php - 根据频率计算一系列 future 日期的算法

java - 如何检查一组矩形的孔洞和相互作用?

regex - 从 Excel 工作表上的字符串中删除 unicode 字符

java - Jaxb关于标签包装的简单问题

java - Spring组件扫描中的表达式

Excel VBA - 如果单元格是整数,则删除整行

regex - 将 Excel 中的 2 个列表与 VBA 正则表达式进行比较

java - 英国邮政编码的正则表达式