Сколько можно изобретать велосипеды?
Дано: координаты наблюдателя -
долгота Lon, геодезическая широта Lat.
Момент наблюдения - год Year, месяц Mon, день Day, всемирное время в часах UT.
Найти: Азимут Az, высоту над горизонтом H
1.Вычисление модифицированной юлианской даты на начало суток
Море готовых процедур на всех языках.
Например,
Var1 = 10000 * Year + 100 * Mon + Day
Если Mon <= 2 Mon = Mon + 12, Year = Year - 1
Если Var1 <= 15821004, то Var2 = -2 + (Year + 4716) \ 4 - 1179
Иначе Var2 = Year \ 400 - Year \ 100 + Year \ 4
Var3 = 365 * Year - 679004
MD = Var3 + Var2 + 306001 * (Mon + 1) \ 10000 + Day
\ - деление нацело
2. Вычисление местного звездного времени
T0 = (MD - 51544.5) / 36525 ' мод.юл.дата на начало суток в юлианских столетиях
a1 = 24110.54841
a2 = 8640184.812
a3 = 0.093104
a4 = 0.0000062
S0 = a1 + a2 * T0 + a3 * T0 ^ 2 - a4 * T0 ^ 3 ' звездное время в Гринвиче на начало суток в секундах
Nsec =UT * 3600 ' количество секунд, прошедших от начала суток до момента наблюдения
UT - всемирное время в часах, момент расчета NsecS = Nsec * 366.2422 / 365.2422 ' количество звездных секунд
SG = (S0 + NsecS) /3600 * 15 ' гринвическое среднее звездное время в градусах
ST = SG + Lon ' местное звездное время
Lon -
долгота наблюдателя
3. Вычисление
эклиптических координат Солнца
T0 = (MD - 51544.5) / 36525 ' мод.юл.дата на начало суток в юлианских столетиях
UT - время в часах от полуночи даты
M = 357.528 + 35999.05 * T0 + 0.04107 * UT ' средняя аномалия
L0 = 280.46 + 36000.772 * T0 + 0.04107 * UT
L = L0 + (1.915 - 0.0048 * T0) * Sin(M) + 0.02 * Sin(2 *M) '
долгота Солнца
X = Cos(L) ' вектор
Y = Sin(L) ' в
эклиптическойZ = 0 ' системе координат
4.Координаты Cолнца в прямоугольной экваториальной системе координат
Eps = 23.439281 ' наклон эклиптики к экватору
X' = X ' вектор
Y' = Y * Cos(Eps) - Z * Sin(Eps) ' в экваториальной
Z' = Y * Sin(Eps) + Z * Cos(Eps) ' системе координат
5. Экваториальные геоцентрические координаты Солнца
tg (Ra) = Y' /X'
tg (Dec)= Z' / Sqrt(X' ^ 2 + Y' ^ 2)
Можно и топоцентрические вычислить, но разница несущественна - несколько угловых секунд.
6. Азимутальные координаты Солнца
ST - местное звездное время
Lat - широта
Th = ST - Ra ' часовой угол
Cos (z) = Sin(Lat) * Sin(Dec) + Cos(Lat) * Cos(Dec) * Cos(Th) ' косинус зенитного угла
H = 90 -z
tg (Az) = Sin(Th) * Cos(Dec) * Cos(Lat) / (sin(H) * Sin(Lat) - Sin(Dec))
Проверка геоцентрических координат - сравнение с численными эфемеридами DE200 в течение 2009 года.
Точность лучше 30 угловых секунд, что для Солнца вполне достаточно, не точечный же объект.