You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
748 B

import datetime
from typing import Union
from astral.julian import julianday_2000
Degrees = float
def gmst(at: Union[datetime.datetime, datetime.date]) -> Degrees:
"""Calculate Greenwich Mean Sidereal Time in degrees"""
jd2000 = julianday_2000(at)
t0 = jd2000 / 36525
value = (
280.46061837
+ 360.98564736629 * jd2000
+ 0.000387933 * pow(t0, 2)
+ pow(t0, 3) / 38710000
)
return value % 360
def lmst(
at: Union[datetime.datetime, datetime.date],
longitude: Degrees,
) -> Degrees:
"""Local Mean Sidereal Time for longitude in degrees
Args:
jd2000: Julian day
longitude: Longitude in degrees
"""
mst = gmst(at)
mst += longitude
return mst

Powered by TurnKey Linux.