def LST(dzien_roku_2015): # Współrzędne radioteleskopu RT4 Lambda = 18.56406 # 18°33'50.6" fi = 53.09546 # 53°05'43.7" (nie potrzebne tu, ale...) #------------------------------- liczba_dni = int(dzien_roku_2015) ulamek_dnia_ut = (24.0*dzien_roku_2015) % 24 # GMST Greenwitch 1.01.2015 UT1: 0h GMST_2015 = 6.0 + 41.0/60.0 + 19.1318/60.0/60.0 # 6h 41m 19.1318s - żródło: Rocznik Astronomiczny na rok 2015, str 8 GST_0h = (GMST_2015 + (liczba_dni-1) * 24.06570982441908)% 24 # czas gwiazdowy w Greenwith w danym dniu o 0hUT GST_UT = GST_0h + (1.0+1.0/365.2422)*ulamek_dnia_ut LST_UT = GST_UT + Lambda/360.0*24.0 print("LST: %f, LST_HMS: %dh%dm%fs" % (LST_UT, int(LST_UT),\ int(LST_UT*60.0 % 60), LST_UT*60.0*60.0 % 60) ) return LST_UT
Funkcja działa nie tylko na rok 2015 - jeśli data jest np późniejsza, wystarczy dodać odpowiednią ilość dni, np. 365 dla roku 2016. Zapewne w kolejnych wersjach ją ulepszę. Działania są na tyle proste, że można je szybko przenieść do innych języków.
Do uzyskania podobnego efektu w Pythonie (ale już bez podglądania co się dzieje dokładnie) można wykorzystać moduł ephem.
obserwator = ephem.Observer() obserwator.long, obserwator.lat = '18.56406', '53.09546' obserwator.date = '2015/1/1 00:00' LST = obserwator.sidereal_time() print LST
Z mojej obserwacji wynika, że oba fragmenty kodu dają zbieżne wyniki z dokładnością do sekundy.
Brak komentarzy:
Prześlij komentarz