streszczenie
Biorąc pod uwagę położenie Słońca, możesz łatwo utworzyć siatkę natężenia światła na powierzchni (ignorując efekty atmosferyczne i topograficzne) we współrzędnych lat-lon. Zmień tę siatkę zgodnie z potrzebami i nałóż ją na mapę.
Detale
Wzory są standardowe dla współrzędnych sferycznych: wektor jednostkowy odpowiadający współrzędnej sferycznej (lon, lat) wynosi
(cos(lon)cos(lat), sin(lon)cos(lat), sin(lat)).
Intensywność zależy od cosinusa między jednostkowym kierunkiem na zewnątrz normalnym („w górę”) a kierunkiem do słońca. Ten cosinus jest tylko iloczynem kropkowym tych dwóch wektorów jednostkowych. To znaczy, niech (x, y, z) będzie wektorem jednostkowym skierowanym w stronę słońca (we współrzędnych geocentrycznych), przekształci geodezyjną (lat, lon) centralnego punktu każdej komórki siatki w wektor jednostkowy (xi, eta, zeta) i oblicz
(x,y,z) . (xi, eta, zeta) = x*xi + y*eta + z*zeta.
Wszelkie wyniki mniejsze niż 0 odpowiadają niewidzialnemu słońcu, więc ustaw je na zero.
Uwagi dotyczące wdrożenia
Obliczenia te są proste do wykonania za pomocą algebry mapy, zaczynając od siatki wartości (lat, lon) (tak to zrobiłem) lub od pary siatek, jednej dla szerokości i drugiej dla długości geograficznej (tak byś miał zrobić to na przykład za pomocą oprogramowania ESRI).
(Aby utworzyć siatkę szerokości i długości geograficznej, uformuj odpowiednio siatkę współrzędnych y lub współrzędnych x we współrzędnych geograficznych, a następnie rzutuj ją.) Na podstawie tych informacji początkowych oblicz raz na zawsze trzy siatki [xi], [eta ] i [zeta] (lub siatka o pojedynczym wektorze [xi, eta, zeta]) w celu przedstawienia kierunków w górę w komórkach siatki. Dla dowolnej pozycji słońca obliczenie staje się prostą kombinacją liniową [xi], [eta] i [zeta] podaną powyżej; Słońce określa współczynniki x, yiz z (które oczywiście są tylko liczbami).
Przykład
Oto mapa świata w rzucie Plate Carree o takiej siatce intensywności (216 na 432 komórek).
Główny południk znajduje się w centrum, a północ jak zwykle na szczycie. Do tego obliczenia ustawiłem wektor słońca proporcjonalnie na (0,6, -0,8, 0,5), aby przybliżyć dzień letni w południe nad oceanem środkowoatlantyckim. (Z perspektywy czasu wartość z 0,4 byłaby bardziej realistyczna; słońce nigdy nie dociera tak daleko na północ).
Nakładka alfa (która sprawia, że jaśniejsze obszary są również nieco bardziej przezroczyste) na kolorowej mapie Aster tworzy ten obraz.
Wraz ze zmianą czasu wektor słońca (x, y, z) jest ponownie obliczany, co wymaga ponownego obliczenia siatki intensywności. To szybkie obliczenie. Nie potrzebujesz też wysokiej rozdzielczości: użyłem tylko jednej dziesiątej rozdzielczości oryginalnej siatki (2160 na 4320 komórek) dla tej ilustracji. Interpolacja zastosowana do wyświetlenia siatki zgrubniejszej intensywności działa dobrze, aby wypełnić luki. Powinno to umożliwić ci niemal natychmiastową modyfikację wyświetlacza, tworząc płynną animację.