Разрабатываю приложение, которое должно рассчитывать проходимость автомобильной техники по заданном маршруту, а также видимость из произвольной точки местности в другую с учетом рельефа.
Соответственно, мне нужно построить сетку рельефа (grid) для соответствующих рассчетов.
У меня есть цифровые карты, которые содержат изолинии.
Пытался строить по ним модель рельефа по двум алгоритмам:
- Inverse distance weighted (аппроксимация по обратному средневзвешенному растоянию)
- через модель треугольников.
Оба алгоритма имеют критический недостаток: рельеф, построенный по ним - очень негладкий (идет очень большими ступеньками по 20 метров высотой - такие перепады высот в изолиниях). Кроме того, во всех холмах и горах получаются срезанные вершины в тех случаях, когда высоты не обозначены точками.
Кроме того, в алгоритме Inverse Distance Weighted (я шел по точкам изолиний) мы получаем локальные экстремумы (минимумы или максимумы) возле ключевых точек изолиний. Эти экстремумы также очень сильно мешают видимости и проходимости.
На скриншотах проиллюстрированы эти недостатки:



(матрица рельефа (grid), построенная алгоритмом IDW в моем самописном приложении. Чем светлее - тем выше. Здесь видны резкие переходы аналогично модели треугольников, а на реальной местности эти переходы плавные)
Таким образом, по такой модели рельефа:
- техника не может пересекать изолинии, так как каждая изолиния в модели - это 20-метровый обрыв, хоть на самом деле местность очень гладкая и легко проходимая.
- с видимостью тоже плохо, так как если техника стоит далеко от изолинии в сторону спуска, то возникает эффект плато: человек, который находится далеко от края плато, не видит объектов, которые находятся под плато. При этом реально с этой техники должно быть видно всех, так как она находится на вершине холма! Аналогичная ситуация, когда техника находится под изолинией, и не видит при такой модели рельефа технику, которая над изолинией.
Внимание, вопрос! Как мне построить более плавный, но достаточно точный рельеф?
Есть ли алгоритмы для более сглаженной аппроксимации (но без сильной потери точности)?