Skocz do zawartości

Algorytmy astronomiczne czyli Python w rachunkach astro. - Cz. VIII czyli trochę teorii (przydatnej)


Wiesiek1952

Rekomendowane odpowiedzi

Podstawowe terminy używane w astro(nawigacji)

 

 

 

- Widnokrąg – to linia styku nieba z obiektami na ziemi czy morzu. Na lądzie bywa nieregularna, na morzu to ta kreska rozdzielająca ciemno i jasno niebieskie.

 

- Horyzont – to płaszczyzna prostopadła do linii zenit-nadir i przechodząca przez środek Ziemi. Często opisywana przymiotnikiem „astronomiczny” dla odróżnienia od horyzontu obserwatora.

 

- Horyzont obserwatora – to płaszczyzna prostopadła do linii zenit-nadir i przechodząca przez oczy obserwatora.

 

Noc – wow, tu to dopiero jest kłopot. Noc i zmierzch są (umownie) sciśle określone. Mamy zmierzch cywilny, nautyczny i astronomiczny. Cywilny to gdy słońce jest od 0 do 6° poniżej horyzontu. Odpowiednio nautyczny to 6 do 12 a astronomiczny to do 18°. EDIT(spotkałem się z określeniem zmierzch nawigacyjny - nie wiem kto to tłumaczył w j.ang jest "nautical twillight" ). Wniosek jest jeden  - w Polsce od ok połowy maja do końca lipca nie ma nocy astronomicznej bo słońce, w tym okresie, nigdy nie jest więcej niż 18° poniżej horyzontu. Proszę zwrócić uwagę na to, że używam słowa ‘horyzont” bo wizualna pozycja słońca może się znacznie  różnić z powodu refrakcji. 

 

 

 

Z powyższych definicji wynika kilka istotnych rzeczy. Na otwartej przestrzeni (na morzu) widnokrąg jest poniżej horyzontu obserwatora a kąt pomiędzy płaszczyzną horyzontu a kierunkiem na widnokrąg nazywamy „obniżenie widnokręgu”. 

 

Mila morska – def: „długość łuku południka odpowiadająca długości jednej minuty na południku na danej szerokości geograficznej”.  Mila morska nie jest wielkością stałą w jednostkach długości z układu SI. Promień Ziemi na biegunie i na równiku różni się dość znacznie stąd 1 Nm (od Nautical Mile). ! Nm na równiku ma długość 6046.4 feet = 1842.94 m a na biegunie 6107.8 feet = 1861.66 m. Przyjęto standardową średnią długość Mili Morskiej za równą 1852.0 m. Tak jest w Polsce ale nie wszędzie. Np. W USA 1 Nm = 1853 m, w Wielkiej Brytanii długo było 6080 feet = 1853.18 m . Zdaje się nic się w tym względzie nie zmieniło i różne kraje różnie to przyjmują. Powyższa definicja jest jedyną poprawną 

 

Szerokość geograficzna – wiele osób będzie pewnie zdziwionych bo w podstawówce na geografii mówili nieco inaczej mówiąc o kącie pomiędzy płaszczyzną równika a linią łączącą środek Ziemi z danym punktem. To jest szerokość geocentryczna! Szerokość geograficzna to kąt pomiędzy płaszczyzną równika a linią pionu w danym miejscu. (Linia pionu = linia zenit-nadir). Linia pionu przechodzi przez środek Ziemi tylko na równiku i na biegunie. Na wszystkich innych szerokościach jest różnica spowodowana „spłaszczeniem” biegunowym Ziemi. Najlepiej przybliżającym modelem kształtu Ziemi jest elipsoida obrotowa. Najwieksza różnica pomiędzy szerokością geograficzną i geocentryczną jest na szerokości ok. 45° i wynosi aż 11.6’ czyli 11.6 Nm czyli blisko 21.5 km

 

Wysokość CN to kąt pomiędzy horyzontem a kierunkiem na dane ciało. Celowo nie napisałem czy to horyzont astronomiczny czy obserwatora bo wobec odległości gwiazd czy nawet Słońca od Ziemi różnice są całkowicie pomijalne.

 

Trygonometria sferyczna

 

            To dział matematyki zajmujący się rozwiazywanie trójkątów sferycznych czyli trójkątów na powierzchni sfery w których wszystkie boki są kołami wielkimi.

 

Na rysunku poniżej mamy taki trójkąt sferyczny – w astro(nawigacji)nazywany trójkątem paralaktycznym. Jest on identyczny z trójkątem ortodromicznym o tych samych wierzchołkach i bokach a różni się jedynie nazewnictwem boków i wierzchołków.

 

W trójkącie paralaktycznym mamy dwa boki leżące na południkach, które są łukami (90-fi) i (90-dec). Trzeci bok tworzy koło wielkie łączące gwiazdę i obserwatora (90 – h) 

 

Trygonometria sferyczna jest dość rozbudowana i ma nawet swoje „twierdzenie pitagorasa” ;-) cos(przeciwprostokątnej) = iloczynowi cosinusów przyprostokątnych. Ponieważ boki trójkąta są łukami więc kąt prosty niekoniecznie musi być kątem dwuściennym a może być „bokiem trójkąta”.

 

Żeby nie komplikować uproszczę mocno całość trygonometrii sferycznej bo wszystko co nam potrzebne do wyliczeń astro można zrobić z pomocą tylko dwóch wzorków. Tak, moi nauczyciele od trygonometrii i nawigacji pewnie by mnie za to zabili  Rysunek mój osobisty bo nigdzie nie znalazłem tego tak prosto :-)

 

image.thumb.jpeg.7bc6a94c30e2cba5e02b310387746fc3.jpeg

 

 

 

Twierdzenie sinusów:  w trójkącie sferycznym wypukłym sinusy boków są proporcjonalne do sinusów przeciwległych im kątów

 

            Czyli w naszym trójkącie paralaktycznym:

 

 

 image.png.2ce5cb0fc2083358830582de5845cb14.png

 

                        

 

 

Wzory redukcyjne upraszczają powyższe do funkcji cosinus w mianowniku bo sin(90-a) = cos(a)

 

Twierdzenie(wzór) cosinusów:

 

image.png.19243ca3f141d0bf4aa0ee9f82c5655a.png

 

 

 

I po zastosowaniu wzorów redukcyjnych:

 

image.png.d4c319876371905f568decebf3d8cf19.png

 

 

 

Jeśli dodam regułkę na obliczanie  musi być <= 180°, że:

 

image.png.2dc0880a4077bcf555a20d7cd00d13a7.png

 

a jeśli wynik większy od 180° to odejmujemy od 360° i zmieniamy znak na przeciwny.

 

Np.     i  

 

-150° – 150° = -300°  => +60° 

 

(dygresja – znak ° w Windowsach uzyskujemy klepiąc 248 na klawiaturze numerycznej z wciśniętym ALT, na Mac OS Shift+Option+8)

 

 

z tego wynikają dwie istotne funkcje: (ta druga jest nieco rozbudowana bo... arcsin to pierwsza ćwiartka czyli -90 do +90° a azymut jest z przedziału 0 do 360°

 

# ******************************************************************************************


def great_circle_distance(pkt_a: GeoPoint, pkt_b: GeoPoint) -> float:
    # dawniej DORT distance in [Rad]

    delta_long = delta_lambda(pkt_a.longitude, pkt_b.longitude)
    distance_gc = math.sin(pkt_a.latitude) * math.sin(pkt_b.latitude) \
                  + math.cos(pkt_a.latitude) * math.cos(pkt_b.latitude) * math.cos(delta_long)
    return abs(math.acos(distance_gc))

 

# ******************************************************************************************
# FUNKCJA OBLICZA POCZATKOWY KAT DROGI PO ORTODROMIE
# moze byc tez uzywana w innych zastosowaniach np.azymut CN
#
# Argumenty wejsciowe - class GeoPoint(latitude, longitude) [w radianach]
# ******************************************************************************************

def great_circle_direction(pointA: GeoPoint, pointB: GeoPoint) -> float:
    # dawniej ALFA direction in [Rad]
    delta_long = delta_lambda(pointA.longitude, pointB.longitude)
    distance = great_circle_distance(pointA, pointB)
    direction = 0
    if distance > 0:
        direction = (math.sin(pointB.latitude) - math.sin(pointA.latitude) * math.cos(distance)) \
                    / (math.sin(distance) * math.cos(pointA.latitude))
        # **********************************************************************************
        # below is a protection against values bigger than 1 - it CAN happen due to small
        # inaccuracies in calculations!!!
        # **********************************************************************************

    if direction > 1.0:
        direction = 1.0
    elif direction < -1.0:
        direction = -1.0

    direction = math.acos(direction)
    if abs(direction) < 1.0e-4:
        direction = 0.0
    if math.sin(delta_long) < 0:
        return 2.0 * math.pi - direction
    else:
        return direction


# ******************************************************************************************

 

  • Lubię 3
Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.