Как сделать интерполяцию значений в визуальном базовом массиве? - PullRequest
0 голосов
/ 19 ноября 2010

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 Ответ

2 голосов
/ 02 декабря 2010

По форме напоминает пирамиду с углами.

Если вы хотите, чтобы он выглядел как конус, вы можете рассчитать значение на основе прямого расстояния, а не расстояния 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 = x расстояние от известного значения dy = y расстояние от известного значения val = известное значение dval = разница в значении на расстоянии 1 TERR (dx, dy) = val + sqrt (dx ^ 2 + dy ^ 2)

Это просто и линейно. Существует множество способов размещения плавной трехмерной кривой по точкам, но требуется больше информации, и есть много способов сделать это.

...