Пытаюсь разобраться в алгоритмах перевода из одной системы координат в другую.
Разобрал по ссылке 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