2

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

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

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

顺便说一句,只是在它可能有帮助的情况下。我在 WPF (C#) 上对其进行编码,对于这么小的工作不涉及繁重的库或任何东西会很好

提前致谢 !

4

1 回答 1

2

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


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

计算 Delaunay 三角剖分(选择所有三角形以查看是否有任何点在其外接圆内)的简单算法是O(n^4).

增量算法O(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)(将三角形视为 [domain x range] 空间中的平面。
于 2012-12-14T08:55:07.070 回答