Я знаю, что есть другие вопросы, подобные этому, но большинство из них имеют дело только с преобразованием одного в другое. Но я ищу алгоритмы, которые преобразуют друг в друга и друг от друга. Простое использование одного из них не дало желаемых результатов.Реверсивный алгоритм для/от широты и долготы и трехмерной точки
Для моих целей единичная сфера более приемлема. Любое значение радиуса будет 1.
Вот мои текущие методы для этого, в простом psudocode.
От широты и долготы до точки на единичной сфере.
x = cos(longitude) * sin(latitude) y = sin(longitude) * sin(latitude) z = cos(latitude)
Из трехмерных координат на единицу шара на широту и долготу.
latitude = acos(z) longitude = atan2(x, y)
Однако они не являются обратимыми, и моя тригонометрия - это не то, что должно быть.
Многие языки компьютера имеют функцию [atan2 (y, x)] (http://en.wikipedia.org/wiki/Atan2), которая может быть тем, что вам нужно. –
Да, но это не решает неотъемлемую проблему обратимости. – Chase
Какова проблема обратимости, которую вы видите? Atan2 возвращает угол в правильном квадранте, тогда как atan не обязательно сделает это. –