Пытаюсь разобраться в алгоритмах перевода из одной системы координат в другую.
Разобрал по ссылке http://www.astronet.ru/db/msg/1169819/node3.html и на тамошних формулах и примера из учебника понял, как перевести из геоцентрической системы координат (например WGS-84) в декартовую прямоугольную (ECEF).
В учебнике, по которому я занимаюсь, примеры программ на матлабе, но пояснений к ним очень мало.
Начал смотреть, как переводится обратно из ECEF в геоцентрическую. И что-то мне стало все совсем не понятно.
Кому не жалко свободного времени, просьба дать мне ссылку на литературу/сайт, где такой способ объясняется (я именно понять хочу, что там делается, желательно не сухие формулы, а с рисунками).
Вот код из книжки:
Код: Выделить всё
function [llh] = LLHECEF_N(XYZ,ab)
%Имя функции: LLHECEF_N
%Назначение функции: преобразование координат из прямоугольной системы в географическую
%Входные данные:
%XYZ.x,XYZ.y,XYZ.z- координаты X, Y, Z соответственно в ECEF
%ab.a-большая полуось эллипсоида;
%ab.b- малая полуось эллипсоида в WGS-84;
%Выходные данные:
%llh.lon-долгота;
%llh.lat-широта;
%llh.h-высота;
a=6378137.0;
b=6356752.314;
a2=ab.a*ab.a;
b2=ab.b*ab.b;
xy = sqrt(XYZ.x*XYZ.x + XYZ.y*XYZ.y);
thet = atan(XYZ.z*ab.a/(xy*ab.b)); %это что, откуда, куда?
esq = 1.0-b2/a2; %это вроде эксцентриситет...
epsq = a2/b2-1.0; %а это вообще что?
llh.lat = atan((XYZ.z+epsq*ab.b*(sin(thet)^3))/(xy-esq*ab.a*(cos(thet)^3))); %откуда формула?
llh.lon = atan2(XYZ.y,XYZ.x);%!
%ну дальше вроде суть понятна
if llh.lon < 0
llh.lon = 2*pi + llh.lon;
end ;
r = a2/sqrt(a2*cos(llh.lat)*cos(llh.lat) + b2*sin(llh.lat)*sin(llh.lat));
llh.h = xy/cos(llh.lat)-r;
end