插入高度图上的点

时间:2012-12-13 12:46:48

标签: interpolation geometry-surface

我在平面上均匀分布了一些值(字节)(来自实际测量),例如温度。 我正在尝试生成整个表面。但我没有成功。

主要条件是点的数量和位置将不知道,并且表面必须保持测量点的值,并插入其间的点。

理想情况下,如果只设置一个点,则最终表面应该是一座山。

顺便说一句,只是在它可能有所帮助的情况下。我在WPF(C#)上对它进行编码,如果不涉及繁重的库或其他任何小工作,那将是件好事

提前致谢!

1 个答案:

答案 0 :(得分:1)

典型的方法是在域中构建Delaunay triangulation样本集(在您的情况下为矩形),然后使用找到的三角形作为表面。


一般点集的delaunay三角剖分被定义为三角形,其外接圆不包含任何其他点。

用于计算Delaunay三角剖分的平凡算法(选择所有三角形以查看是否有任何点位于其外接圆内)是O(n^4)

incremental algorithmO(n log n)预计时间内运行:

  • 产生三点三角测量(在你的情况下,四个 - 房间的角落)。
  • 对于每一点
    • 将其添加到三角测量中。
    • 用于递归地与新点相对的每个边缘
    • 如果边缘不是当前点集的Delaunay三角剖分的一部分,则将其翻转。

分而治之算法也提供O(n log n),但也为某些点集提供O(n log log n)


一旦进行了三角测量,您只需要通过垂直线与曲面相交来找到测量值:

  • 找到点所在的三角形ABC。
  • 将点坐标表示为A + k(B-A) + l(C-A)
  • 然后点值为A.value + k(B.value-A.value) + l(C.value-A.value)(将三角形视为[域x范围]空间中的平面。