Преобразование направления на карте в азимут на эллипсоиде
az = vinvtran(x,y,th)
az = vinvtran(mstruct,x,y,th)
[az,len] = vinvtran(...)
az = vinvtran(x,y,th) преобразует угол в проекционном пространстве в точке, указанной x и y в азимутальный угол в географических координатах. Отображаемая проекция карты используется для определения проекционного пространства. Углы ввода должны быть в тех же единицах, что и в текущей проекции карты. Входами могут быть скаляры или матрицы одинакового размера. Угол в проекционном пространстве th определяется как положительное против часовой стрелки относительно оси X.
az = vinvtran(mstruct,x,y,th) использует проекцию карты, определенную входными данными struct для вычисления проекции карты.
[az,len] = vinvtran(...) также возвращает длину вектора в географической системе координат. Значение 1 указывает на отсутствие искажения масштаба для этого угла.
Хотя векторы вдоль оси y всегда указывают на север в цилиндрической проекции в нормальном аспекте, они могут указывать на восток или запад от севера на конических, азимутальных и других проекциях. Эта функция вычисляет географический азимут для углов в спроецированном пространстве.
Примерные расчеты:
axesm('eqdconicstd','maplatlim',[-10 45],'maplonlim',[-55 55]) gridm; framem; mlabel; plabel; axis off mstruct = gcm; [x,y] = projfwd(mstruct,[0 0 0],[-45 0 45]); quiver(x,y,[0.2 0.2 0.2],[0 0 0],0) quiver(x,y,[0 0 0],[0.2 0.2 0.2],0)

vinvtran(x,y,[0 0 0])
ans = 56.1765 90.0000 123.8235
vinvtran(x,y,[90 90 90])
ans = 332.8360 0.0000 27.1640
Это преобразование ограничено областью, указанной границами кадра в текущем определении карты.
Географический азимутальный угол измеряется по часовой стрелке с севера, угол проекционного пространства - против часовой стрелки от оси Х.
Эта функция использует метод конечных разностей. Географические координаты слегка возмущены в разных направлениях и спроецированы. Небольшая величина ошибки вводится числовым вычислением производных и изменением параметров искажения карты.