Существует ли простая, но точная формула того, где на Земле Солнце и Луна находятся прямо над головой?

Я пытаюсь улучшить сайт , показывающий регион Земли, в настоящее время освещенный дневным светом, и мне нужна формула, которая с учетом текущего времени показывает, где (широта/долгота) солнце и луна находятся над головой с точностью до 1 мили. Кто-нибудь может придумать?

В идеале я надеюсь получить что-то, что JavaScript может вычислить с «разумной скоростью» без рекурсии, циклов или дополнительных библиотек.

Я пробовал несколько вещей (например, ряды Фурье по RA/DEC Солнца/Луны), но ничто не кажется достаточно точным.

Примечание. Я понимаю, что мои расчеты восхода/захода солнца/луны игнорируют рефракцию и лунный параллакс: сейчас я сосредоточен на поиске положения над головой. Я понимаю, что могу извлекать данные из CGI-программы, отличной от JavaScript (и пробовал это делать), но это похоже на много ненужного доступа к сети.

РЕДАКТИРОВАТЬ: Спасибо, Дастин и все.

На самом деле, я знаю о http://ssd.jpl.nasa.gov/?horizons и даже писал программы для загрузки и анализа их данных ( https://github.com/barrycarter/bcapps/blob/master/bc- email-horizons.pl и https://github.com/barrycarter/bcapps/blob/master/bc-parse-horizons.pl ) в надежде найти простые формулы ( https://github.com/barrycarter/bcapps/ blob/master/bc-fourier-cont.m и другие), но никуда не делись.

Я понимаю, что мог бы жестко закодировать данные в свой JavaScript, но это сделало бы сценарий излишне большим.

В настоящее время я перестраиваю скрипт каждую минуту ( https://github.com/barrycarter/bcapps/blob/master/bc-sun-always-shines.pl ), используя интерполированные данные JPL (файлы sun/moonfakex/y.txt в https://github.com/barrycarter/bcapps/tree/master/data ), но это кажется безумно сложным.

Это может быть изначально трудным и/или бессмысленным вопросом: чтобы получить точность в 1 милю, вы должны вычислить положение в пределах 52 угловых секунд, что значительно меньше, чем 30-минутная (1800 секунд) ширина самих Солнца и Луны. .

Конечная цель состоит в том, чтобы позволить людям увеличить свой город на картах Google и наблюдать, как закат «проносится» над их городом (т. е. предсказать, что солнце садится над определенной частью города, и попросить людей в этой части города подтвердить это). ), но с учетом преломления и параллакса это может быть невозможно.

Вы смотрели на ngc7000.org/astrotools/ephemtool.html ?
Получить данные из онлайновой базы данных может быть проще, чем вычислить их.
В лаборатории реактивного движения Калифорнийского технологического института есть онлайн-инструмент эфемерид. Я думаю, вы можете настроить задание cron для подключения к нему. JPL Cal Tech Я только что проверил это, и это называется службой telnet. Вероятно, вы можете настроить что-то через Linux-машину. Если хочешь, я могу сделать это ответом.

Ответы (1)

Никто еще не ответил, так что я сделаю это, но я собираюсь проигнорировать детали и обратиться к геометрии. Широта подсолнечной точки - это просто склонение Солнца. Вы должны легко быть в состоянии убедить себя в этом. С долготой немного сложнее. Вы знаете, что когда Солнце находится в зените, оно должно быть и на местном небесном меридиане. Это означает, что его местный часовой угол (LHA) должен быть равен нулю. Вы знаете, что LHA — это разница между местным звездным временем (LST) и прямым восхождением Солнца (RA). Чтобы LHA был равен нулю, вы должны иметь LHA = RA. Если вы знаете LHA и звездное время по Гринвичу (GST), разница между ними и будет необходимой долготой. Я пренебрег разницей между средним и кажущимся звездным временем и средними, кажущимися и топоцентрическими координатами Солнца. Вы можете объяснить это.

Аналогичный процесс можно применить к Луне, чтобы найти подлунную точку.

Спасибо, @JoeH. Трудность, с которой я столкнулся, заключается в том, чтобы найти простую формулу для RA и DEC Солнца (и особенно Луны), которую легко вычислить и которая достаточно точна, чтобы найти подсолнечную/подлунную точку с точностью до 1 мили. Есть несколько способов оценить это, но ни один из них не является сверхточным.
@JoeH, да! Он прав! Это метод, о котором я подумал, когда впервые увидел вопрос, но он недостаточно точен в реальном мире. Небесное движение гораздо сложнее, чем на бумаге