我一直在寻找相当于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,但我不知道它如何帮助我获得三维点。有什么想法吗?
答案 0 :(得分:1)
请注意,此数据集不能提供良好的网格,因为点形成链状结构而不是网络。
如果你有3d点,其对XY平面的投影足够分散,你可以建立三角测量(某种类型,例如Delaunay)。然后对于给定的x,y坐标找到适当的三角形并找到插值的Z值。