Azymator odpowiada na pytanie: „Jeśli stoję w tym miejscu i robię to zdjęcie, w którym punkcie obrazu powinien znajdować się szczyt X?” Poniżej opisano, skąd program bierze dane, co z nimi liczy i dlaczego akurat tak.
Położenie szczytu na zdjęciu to dwie liczby: piksel poziomy (jak daleko od lewej krawędzi) i piksel pionowy (jak wysoko lub nisko). Poziomo decyduje kierunek na szczyt (azymut), pionowo kąt, pod jakim go widać (kąt wzniesienia). Obie wielkości trzeba potem zamienić na piksele, a do tego służy kalibracja na dwóch rozpoznanych szczytach.
| Dana | Skąd | Do czego służy |
|---|---|---|
| Punkt obserwatora (szerokość, długość) | kliknięcie na mapie lub wpisanie współrzędnych | początek wszystkich obliczeń |
| Wysokość oczu \( h_1 \) | pobierana dla punktu albo wpisana ręcznie (np. szczyt, wieża) | wysokość, z której patrzymy |
| Lista szczytów (szerokość, długość, wysokość \( h_2 \), nazwa) | plik tekstowy z dysku albo z serwera | cele, których położenie liczymy |
| Dwa szczyty kalibracyjne | wybrane na zdjęciu przez użytkownika (klik w zdjęcie + azymut z mapy) | przeliczenie azymutów i kątów na piksele |
| Refrakcja | współczynnik \( k' \) wpisany przez użytkownika albo plik CSV z radiosondy | poprawka na załamanie światła w atmosferze |
| Promień Ziemi \( R \) | domyślnie 6 371 000 m | krzywizna Ziemi |
Azymut to kierunek na szczyt liczony od północy zgodnie z ruchem wskazówek zegara (0° = północ, 90° = wschód). Odległość to długość najkrótszej drogi po powierzchni Ziemi.
Program liczy je metodą Vincenty'ego na elipsoidzie WGS-84 (czyli na kształcie Ziemi używanym w GPS), co daje dokładność rzędu milimetrów nawet na setkach kilometrów. Dla intuicji: na kuli wzory wyglądałyby tak (\( \varphi \) – szerokość, \( \lambda \) – długość, \( \Delta\lambda = \lambda_2 - \lambda_1 \)):
Odległość \( D \) to długość łuku koła wielkiego. W programie używana jest wersja elipsoidalna, a nie sferyczna: te dwie różnią się o ułamek procenta, co przy 300 km daje do kilkuset metrów.
Kąt wzniesienia \( \theta \) to kąt między poziomem obserwatora a linią widzenia do szczytu: dodatni, gdy szczyt jest „w górę”, ujemny, gdy „w dół”. Tak, kąt może być ujemny nawet dla szczytu wyższego od obserwatora, jeśli jest dostatecznie daleko: Ziemia „ucieka w dół”.
To działa tylko na krótkich dystansach, bo pomija kulistość Ziemi.
Poziom obserwatora (styczna do Ziemi) oddala się od powierzchni. W odległości \( D \) Ziemia leży poniżej niego o \( D^2 / 2R \). Dla 300 km to ponad 7 km, więc cel o 289 m wyżej od oczu leży daleko pod poziomem:
Schemat poglądowy (nie w skali). Ziemia jest wypukła, więc w odległości D jej powierzchnia leży poniżej stycznej o D²/2R. Szczyt stoi na tej powierzchni, więc nawet gdy jego wierzchołek jest wyżej niż oczy obserwatora, linia widzenia do niego może biegnąć w dół (ujemny kąt θ₀).
Powietrze jest gęstsze niżej, więc promień światła zakrzywia się w stronę gęstszego ośrodka, czyli ku Ziemi. Dlatego widzimy trochę dalej, niż wynikałoby z geometrii. Najprostsza poprawka to współczynnik refrakcji \( k' \) (w standardowej atmosferze około 0,13): promień ma wtedy krzywiznę równą \( k'/R \), czyli opadanie Ziemi względem linii widzenia jest mniejsze:
To jest metoda „standardowa”: jeden współczynnik na całą trasę. Wartość \( k' = 0{,}13 \) odpowiada gradientowi współczynnika załamania około −20 jednostek N na kilometr wysokości.
Gdy tuż nad ziemią leży warstwa o innych własnościach (np. inwersja), jedno \( k' \) nie wystarcza. Można podać \( k_1 \) od obserwatora do granicy \( B \) i \( k_2 \) dalej. Zakrzywienie blisko obserwatora wpływa na całą dalszą trasę, więc program liczy średnią ważoną drogą:
Dla celów bliższych niż \( B \) liczy się tylko \( k_1 \).
Stałe \( k' \) to uproszczenie. Radiosonda mierzy ciśnienie, temperaturę i punkt rosy na kolejnych wysokościach, więc możemy policzyć, jak w rzeczywistości zmienia się gęstość optyczna powietrza z wysokością i prześledzić promień przez tę atmosferę.
a) Refrakcyjność z pomiarów. Dla światła widzialnego (długość fali 0,55 µm):
Tu \( p \) – ciśnienie [hPa], \( T \) – temperatura [K], \( e \) – prężność pary wodnej [hPa] policzona z punktu rosy. Uwaga: dla światła widzialnego wpływ pary wodnej jest mały i ma przeciwny znak niż dla fal radiowych, więc wzoru „radiowego” nie wolno tu użyć.
b) Profil \( N(h) \). Między punktami pomiarowymi program interpoluje liniowo, a wynik wygładza (średnia z 50 m), żeby szum pomiarowy nie tworzył fałszywych obrazów. Poza zakresem sondy zakłada gradient standardowy.
c) Tor promienia. W atmosferze kulistosymetrycznej obowiązuje prawo Snella w postaci \( n\,r\cos\theta = \text{const} \) (\( r = R + h \)). Z niego wynikają równania toru promienia, gdzie \( s \) to droga wzdłuż promienia, a \( \varphi \) kąt środkowy (\( D = R\varphi \)):
Program całkuje je numerycznie (metodą Runge–Kutty, krok 500 m): wypuszcza promień z wysokości oczu pod kątem \( \theta \) i sprawdza, na jakiej wysokości jest po przebyciu odległości \( D \).
d) Którędy trafić w cel. Szukamy kątów \( \theta \), dla których promień trafia dokładnie na wysokość szczytu:
Program przeszukuje kąty w pobliżu \( \theta_0 \) (±1,5°, krok 0,03°, gęściej tam, gdzie \( g \) jest bliskie zeru) i każde miejsce zerowe precyzuje bisekcją. W zwykłej atmosferze wychodzi jedno rozwiązanie. Przy inwersji może ich być kilka: obserwator widzi ten sam szczyt w kilku miejscach naraz (obraz górny, odwrócony, dolny) – to jest miraż. Obraz główny to rozwiązanie najbliższe kątowi standardowemu \( \theta_{\text{std}} \) dla \( k' = 0{,}13 \). Pozostałe pokazywane są jako dodatkowe (pomarańczowe) znaczniki.
Atmosfera nad początkiem i końcem długiej trasy bywa różna. Dlatego można podać dwie sondy: bliższą (działa od obserwatora) i dalszą (działa za granicą). Na odcinku przejścia obie płynnie się mieszają. Jeśli \( s \) to odległość od obserwatora, \( B \) – granica, a \( W \) – szerokość przejścia, to w równaniu toru:
Program nie zna położenia stacji sondujących, liczy się tylko ich kolejność i podana granica.
Mamy już dla każdego szczytu azymut \( \alpha \) i kąt \( \theta \) (liczone z tą samą refrakcją). Teraz trzeba je zamienić na piksele. Program nie zna obiektywu ani zoomu aparatu, więc uczy się skali ze zdjęcia: użytkownik wskazuje dwa rozpoznane szczyty (azymut i kąt znamy z obliczeń, piksele odczytujemy na zdjęciu).
Dwa punkty kalibracji: azymuty \( A_1, A_2 \) i piksele \( X_1, X_2 \). Skala to liczba pikseli na stopień azymutu i dalej interpolacja liniowa:
Punkty kalibracji mają kąty \( \theta_i \) i piksele \( Y_i \). Dla szukanego kąta \( \theta \) program interpoluje liniowo między sąsiednimi punktami (posortowanymi wg kąta), a poza ich zakresem przedłuża prostą z dwóch skrajnych:
Obserwator: Śnieżnik Kłodzki, współrzędne 50,2075°N, 16,8469°E, wysokość oczu \( h_1 = 1454 \) m. Cel: Hochwechsel (Alpy), \( h_2 = 1743 \) m.
| Krok | Wynik |
|---|---|
| 1. Vincenty: odległość i azymut | \( D = 305{,}48 \) km, \( \alpha = 193{,}30^\circ \) (kierunek SSW) |
| 2a. Opadanie Ziemi \( D^2/2R \) | 7324,6 m |
| 2b. Kąt bez atmosfery \( \theta_0 \) | \( \operatorname{atan2}(289 - 7324{,}6;\ 305500) = -1{,}319^\circ \) |
| 2c. Standard \( k' = 0{,}13 \) | \( \Delta = 0{,}87 \cdot 7324{,}6 = 6372{,}4 \) m, \( \theta_{\text{std}} = -1{,}141^\circ \) |
| 2d. Radiosonda Prostějov (27.12.2024, 12 UTC) | trzy obrazy: −0,922°, −0,971°, −1,023° |
| 2e. Radiosonda Wiedeń | jeden obraz: −0,967° |
| 2f. Obie sondy (granica 150 km, przejście 40 km) | pięć obrazów: −0,928°, −0,933°, −0,967°, −0,971°, −1,013° |
Przykładowa kalibracja (liczby ilustracyjne): azymut 190,0° → piksel 400 i 196,0° → piksel 2200 daje skalę 300 px/°, więc \( X(193{,}30^\circ) = 400 + 3{,}30\cdot 300 \approx 1391 \) px. Dla kąta: −1,00° → 520 px i −0,50° → 380 px (skala −280 px/°). Obraz główny −0,967° wypada na \( Y \approx 511 \) px, a ten sam szczyt według standardu (−1,141°) na \( Y \approx 560 \) px, czyli prawie 50 pikseli niżej. Różnice między atmosferami naprawdę widać na zdjęciu.
Wyniki są wskazówką do interpretacji zdjęcia, a nie dowodem.
© 2026 OGraf.pl | opis dla Azymator v.3.45.88