Matlab: Рассчитать видимый угол горизонта для точек на карте высот

У меня есть карта высот горной местности (большой 2d массив со значениями z)

Я хочу знать высоту видимого угла горизонта для всех компасных опор для определенных точек на моей карте высот.

Чтобы проиллюстрировать, на этом сайте есть несколько примеров того, что я хочу.

Редактировать: я перестал пытаться найти функцию, которая делает это, и сейчас пишу свою собственную.

Мой подход заключается в рисовании линий от моей точки радиально, интерполируя высоту вдоль этих линий, а затем принимая max(z/r) вдоль каждой линии.

Если вы знаете функцию, которая уже делает это, пожалуйста, скажите мне, если нет, надеюсь, я скоро смогу загрузить ее.

1 ответ

Решение

Допустим, у вас есть 3 матрицы, XY а также Z и ваша позиция (x,y,z) Вы можете вычислить

R = sqrt((X-x)**2 + (Y-y)**2) (TX Даниэль...)

R = sqrt((X-x).^2 + (Y-y).^2)
Z = (Z-z)

т.е. расстояния от позиции и относительной высоты, так что

T = Z/R

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

Для заданного направления вы можете найти список точек, ближайших к сетке с вариацией алгоритма Брезенхэма, и, наконец, найти самый высокий T значение в вашем списке очков.

В конце концов, из списка макс T (касательные) значения для разных направлений, вы можете вычислить углы обзора от вашей позиции.

Другие вопросы по тегам