Obalania płaskoziemstwa ciąg dalszy

W poprzedniej notce opisałem historię pewnej dyskusji z płaskoziemcami i jak stworzyłem kalkulator refrakcji, żeby mieć silniejsze argumenty. Dzisiaj opiszę, jak sprawa rozwinęła się dalej (sprawa kalkulatora, nie płaskoziemców - chyba nikt się nie łudzi, że zdołałem przekonać jakiegoś pseudonaukowca? ;) ).

Przypomnę może pokrótce sedno dyskusji. Otóż jeden z płaskoziemców upiera się, że widoki różnych krajobrazów wyglądają tak, jak powinny wyglądać na płaskiej Ziemi, a nie jak na kulistej. Na poparcie swoich tez pokazuje zdjęcia i liczy proporcje odległości między charakterystycznymi punktami albo wielkości widocznych na nich obiektów. Podejście całkiem sensowne - o ile wszystko przeprowadzi się rzetelnie, tzn. wyliczy, jakie odpowiednie proporcje powinny być na płaskiej Ziemi, a jakie na kulistej. Okazuje się - o czym traktuje wspomniana wyżej poprzednia notka - że w pełni poprawna analiza musi uwzględniać nawet refrakcję atmosferyczną, która w większości przypadków jest zaniedbywalnie mała.

Stworzony przeze mnie w związku z tym kalkulator refrakcji miał jedną zasadniczą wadę - pozwalał na przeliczenie toru tylko jednego promienia światła naraz. Wobec tego na każdym analizowanym zdjęciu trzeba było wybrać sobie jakieś punkty, po czym liczyć np. stosunki kątów. Wbrew pozorom takie podejście pozwala otrzymać ciekawe wyniki, jednak jest mało atrakcyjne wizualnie - ostatecznie wszystko sprowadza się do porównywania liczb. Wymyśliłem więc, jak wykorzystać komputer, aby poprawić nieco sytuację: a gdyby tak stworzyć program, który zamiast symulować jeden promień, symulował ich wiele naraz, sprawdzał kiedy trafiają w powierzchnię Ziemi i na tej podstawie generował całą panoramę…?

Ku generatorowi panoram

Jeden składnik miałem już gotowy: obliczanie toru pojedynczego promienia zarówno na Ziemi kulistej, jak i płaskiej. Co prawda kod liczący tory był częścią kalkulatora refrakcji, ale stosunkowo łatwo dało się go oddzielić. Pozostało jeszcze stworzyć coś, co potrafiłoby skądś wczytać dane o terenie (program musi skądś wiedzieć, kiedy promień trafia w ziemię albo wodę), oraz napisać sam program generujący obrazki.

Ostatecznie napisanie tego zajęło mi w sumie kilka, może kilkanaście godzin, ale jak to zwykle ze mną bywa, skończyłem pracę nad programem ponad dwa miesiące po jej rozpoczęciu.

Dane o terenie program wczytuje z podanych mu plików DTED (Digital Terrain Elevation Data - ang. "cyfrowe dane o wysokości terenu"). Pliki takie można pobrać za darmo z internetu, ze strony amerykańskiej agencji geologicznej USGS: https://earthexplorer.usgs.gov. Każdy plik na tej stronie pokrywa obszar Ziemi odpowiadający 1 stopniowi szerokości i długości geograficznej. W przypadku mojego zastosowania spowodowało to pewien problem techniczny.

Problem polega na tym, że mój generator ma być w stanie symulować płaską Ziemię, a dane są indeksowane szerokością i długością geograficzną - wielkościami ściśle związanymi z kształtem kulistym. Ziemia jest, jakby nie patrzeć, kulista, więc tego się nie przeskoczy. Trzeba było znaleźć jakieś odwzorowanie sferycznych współrzędnych na płaską powierzchnię. Ostatecznie zdecydowałem się potraktować każdy fragment 1 stopień x 1 stopień jako prostokąt o wymiarach ok. 111 km (odległość między równoleżnikami odległymi o 1 stopień) na 111 x cos(szerokość geograficzna) km (odległość między południkami różniącymi się o 1 stopień na danej szerokości geograficznej). To oczywiście zniekształca niektóre kierunki i odległości, ale lepszego pomysłu nie miałem. Jeśli czyta to jakiś wyznawca płaskiej Ziemi i ma lepszy pomysł - jestem otwarty na propozycje.

W każdym razie, program działa. Nie jest zbyt szybki, na moim komputerze z 8-rdzeniowym procesorem wygenerowanie obrazka 960x600 to kwestia kilkunastu minut, ale sobie radzi. Kod jest dostępny na GitHubie: https://github.com/fizyk20/atm-raytracer

Przyjrzyjmy się więc paru przykładowym wynikom.

Wyniki

Symulowane widoki to te same, które analizowałem w poprzedniej notce przy pomocy kalkulatora refrakcji: Schneeberg widziany z Pradziada oraz góry w Nowej Zelandii.

Zaczniemy od gór, bo są mniej spektakularne, ale też ciekawe.

Przypomnijmy najpierw widok:

Kadr z filmiku z widocznymi górami

Oto symulacja na kulistej Ziemi:

Symulacja widoku wyżej na Ziemi kulistej

A oto wynik na płaskiej Ziemi

Symulacja widoku na Ziemi płaskiej z oznaczonymi przykładowymi niezgodnościami

Na drugiej symulacji oznaczyłem od razu dwa szczegóły, które nie zgadzają się ze zdjęciem.

W miejscu wskazanym strzałką po prawej stronie widać szczyt, którego nie ma na zdjęciu - a dokładniej jest, ale zasłonięty przez grzbiet na bliższym planie - tak samo jak na symulacji kulistej.

Z kolei w ramce zaznaczyłem pasmo na pierwszym planie, które zachowuje się niewłaściwie. Gdy się przyjrzeć zdjęciu i symulacji kulistej, to pasmo obniża się praktycznie do samej granicy z wodą. Na symulacji płaskiej, ze względu na brak chowania się odległych obiektów pod horyzont, analogiczne zjawisko nie występuje i pasmo powinno być widoczne zdecydowanie wyżej.

Solidny punkt dla kulistej Ziemi. O ironio, sam widok pochodzi z filmiku z "1000% Flat Earth Proof" w tytule ;)

To teraz przyjrzyjmy się widokowi Schneebergu z Pradziada:

Schneeberg widziany z Pradziada

Popatrzmy co pokaże symulacja na kulistej Ziemi:

Symulacja widoku na Schneeberg na kulistej Ziemi

Wygląda całkiem podobnie. Widać grzbiety obecne na zdjęciu i sam czubek Schneebergu, również jak na zdjęciu.

A jak wyglądałby widok na płaskiej Ziemi...?


Noo... jest różnica. Co więcej, ten widok jest pomniejszony w stosunku do symulacji dla kulistej Ziemi (pole widzenia w poziomie 5 stopni, na kulistej 2 stopnie) - inaczej góry nie mieściły się w kadrze! Dla lepszego porównania, czerwony grzbiet pośrodku obrazu to ten sam grzbiet, zza którego wychyla się Schneeberg na Ziemi kulistej...

Co tu się dzieje? Znowu główną przyczyną powstania takiego widoku jest brak obniżania się oddalonych obiektów. Gdy Ziemia jest kulista, góry odległe o 277 km są obniżone o tyle, że ich szczyty są poniżej poziomu obserwatora na Pradziadzie. Na płaskiej Ziemi takiego efektu nie ma, więc szczyty gór wyższych od Pradziada (a Schneeberg jest 500 m wyższy) muszą być dla obserwatora powyżej poziomu.

Nawiasem mówiąc, ta symulacja dobrze ilustruje liczby otrzymane w poprzedniej notce. Z obliczeń wynikało, że na kulistej Ziemi Schneeberg powinien wystawać na ok. 0,075 stopnia, a na płaskiej - na ponad 0,9 stopnia. Tę ogromną dysproporcję widać na symulacjach.

Podsumowanie

Jaki jest więc werdykt? Jak widać, kiedy ma się z czym porównać zdjęcia krajobrazów, całkiem wyraźnie widać, że teza o płaskości Ziemi jest nie do obronienia. Oczywiście zawziętych płaskoziemców to nie przekona - ale i nie o to w tym chodziło. Głównym celem była zabawa w napisanie symulatora, a że da się później z niego otrzymać ciekawe wyniki... to tylko wartość dodana ;)