Matlab: Рассчитать видимый угол горизонта для точек на карте высот
У меня есть карта высот горной местности (большой 2d массив со значениями z)
Я хочу знать высоту видимого угла горизонта для всех компасных опор для определенных точек на моей карте высот.
Чтобы проиллюстрировать, на этом сайте есть несколько примеров того, что я хочу.
Редактировать: я перестал пытаться найти функцию, которая делает это, и сейчас пишу свою собственную.
Мой подход заключается в рисовании линий от моей точки радиально, интерполируя высоту вдоль этих линий, а затем принимая max(z/r)
вдоль каждой линии.
Если вы знаете функцию, которая уже делает это, пожалуйста, скажите мне, если нет, надеюсь, я скоро смогу загрузить ее.
1 ответ
Допустим, у вас есть 3 матрицы, X
Y
а также 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
(касательные) значения для разных направлений, вы можете вычислить углы обзора от вашей позиции.