我正在寻找基于 Delaunay 三角剖分的不规则采样函数 z(x,y)
的线性插值。假设我有一座山,我已经为其获得了 Delaunay 三角剖分:
我知道每个三角形顶点(样本)的高度 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/