Тексты программ послал по почте.
А формулы крайне просты.
SinH = Sin (Phi) * Sin (Decl) + Cos (Phi) * Cos (Decl) * Cos (t)
t = S - ПрямоеВосхлждение (часовой угол)
Во время восхода высота равна нулю.
Солнце не точечный объект, поэтому восходом называется появление на горизонте верхнего края диска. При этом центр Солнца будет на величину радиуса Солнца под горизонтом. Кроме того, рефракция поднимает Солнце над горизонтом. Точное значение рефракции учесть практически невозможно, поэтому при вычислении моментов восходов и заходов используют среднюю рафракцию в горизонте, равную 34 минутам дуги.
Итак, зная координаты Солнца и географические координаты места, находим часовой угол, при котором Солнце находится под горизонтом на высоте
- (Радиус Солнца + 34 минуты дуги)
При этих вычислениях координаты Солнца лучше брать на момент вблизи местного полдня, чтобы уменьшить влияние изменения координат Солнца в течение дня.