C#中的3D分散插值

时间:2016-01-28 15:23:13

标签: c# math 3d interpolation

我一直在寻找相当于Mathlabs TriScatteredInterp或scatteredInterpolant方法的C#(C或C ++等价物也很好)。

我所拥有的是x,y,z点的矩阵,这是我的基础数据。我希望然后使用它们创建一个插值,我可以发送新的x,y值并返回z值。例如,假设我有以下数据:

0 2,27869819312637 853,922374575371

1,98605233685976 2,06708520671126 837,753747324253

3,90229069472608 1,88752766631698 823,029331096166

5,75551273267257 1,73306236324839 809,260707800665

7,54873798463369 1,59817317688994 796,049456606332

9,28197384246315 1,47842437187912 783,061777856689

10,9534957278425 1,37052388894339 770,064642137392

12,5656687239417 1,27364051243946 757,204621862504

14,1251442365748 1,18794371439132 744,781009547588

15,642287566849 1,11385507647315 733,134144366184

我想发送x = 1.7,y = 2.2并获得该位置的z。

我目前正在使用Math.Net,但我不知道它如何帮助我获得三维点。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

请注意,此数据集不能提供良好的网格,因为点形成链状结构而不是网络。

如果你有3d点,其对XY平面的投影足够分散,你可以建立三角测量(某种类型,例如Delaunay)。然后对于给定的x,y坐标找到适当的三角形并找到插值的Z值。

enter image description here