如何在visual basic数组中进行值插值?

时间:2010-11-19 10:11:24

标签: interpolation linear-interpolation

HI

如果存在具有特定粗糙度的均匀地形(已知轮廓间隔),如果知道特定点周围的网格,如何执行插值?

例如,如果起始高程为105米,轮廓间隔为0.2米。此外,如果有一个7x7的网格可用(这是VB中的数组,TERR(6,6))。 如果105的位置在TERR(4,3)中,那么它周围的其他值应减少0.2的值,它看起来像这样:

104.2 104.2 104.2 104.2 104.2 104.2 104.2

104.4 104.4 104.4 104.4 104.4 104.4 104.4

104.4 104.6 104.6 104.6 104.6 104.6 104.4

104.4 104.6 104.8 104.8 104.8 104.6 104.4

104.4 104.6 104.8 105 104.8 104.6 104.4

104.4 104.6 104.8 104.8 104.8 104.6 104.4

104.4 104.6 104.6 104.6 104.6 104.6 104.4

数组中数字的分布将因改变起始高程的位置和数组(网格)的大小而有所不同。

我发现了许多文章和插值方法(邻域,立方体,双线性等等),但没有人能够接近这个问题。

谢谢!

1 个答案:

答案 0 :(得分:2)

形状像金字塔,有角。

如果要使其看起来像圆锥体,可以根据直接距离而不是x或y距离计算值。在此示例中,水平和垂直值(相对于105)将与它们现在相同。但是从TERR(4,3)到TERR(3,2)将是sqrt(1 ^ 2 + 1 ^ 2)的“距离”,或1.414。因此,多个0.2乘1.414并将TERR(3,2)赋值为105-.2828 = 102.7272

dx =与已知值的距离 dy =距离已知值的距离 val =已知值 dval =距离1的值差异 TERR(dx,dy)= val + sqrt(dx ^ 2 + dy ^ 2)

这很简单且线性。有很多方法可以在点上绘制平滑的3D曲线,但需要输入更多信息,并且有很多方法可以做到。

相关问题