Obracająca się Ziemia
Stronę tą wyświetlono już: 6477 razy
Opis programu i algorytmu
Program EarthAnim.exe transformuje płaską siatkę Ziemi (rys. 1) do okręgu i nakłada cieniowanie (rys. 2), tak aby ostatecznie uzyskać efekt kuli ziemskiej. Cała operacja wykonywana jest z wykorzystaniem Diract Draw.
Czas troszeczkę uchylić rąbka tajemnicy, czyli jak to działa? A zwijanie bitmapy działa mniej więcej tak jak na rysunku poniżej zostało to rozrysowane.
Transformacja punktów x, y z bitmapy źródłowej do punktów x', y' bitmapy docelowej odbywa się poprzez zastosowanie dwóch kątów α i ß, które z kolei powiązane są z współrzędnymi x, y punktu na mapie źródłowej w następujący sposób:
gdzie:
- w - szerokość bitmapy o kształcie kwadratu.
- Teraz można rozpisać ogólny wzór, na położenie punktów x', y' w następujący sposób:
gdzie:
- xc, yc - położenie w środku bitmapy a więc równe połowie jej szerokości
- Δx, Δy - przemieszczenia związane z współrzędnymi sferycznymi
Teraz rozpiszę wzory na Δx, Δy na podstawie rysunku 3 w następujący sposób:
Podstawić teraz należy do równań [3], [4] równania [5], [6], [1], [2] w następujący sposób:
[7] |
Zapis wyrażenia w formacie TeX-a:
[8] |
Zapis wyrażenia w formacie TeX-a:
I w ten jakże przebiegły sposób uzyskałem wzory transformujące współrzędne punktu z bitmapy źródłowej do docelowej uzyskując coś na kształt sfery, ale bez cieniowania.
Wideo prezentacja programu
Wersja prezentacji z lepszej jakości bitmapą i z zmienionym kierunkiem obrotu Ziemi na poprawny.
Druga wersja programu
Ostatnio zdarzyło mi się napisać drugą wersję programu, która nie wykorzystuje DiractDraw a jedynie czyste WinApi. Program nazywa się ShAnim.exe i generuje on animację z pliku file.jpg, który musi być umieszczony w tym samym miejscu co program SgAnim. Możliwe jest również wygenerowanie przez program animacji w postaci pliku avi_anim.avi. Przykład wygenerowanej w ten sposób animacji pokazuję poniżej dla gorącej planety Wenus.
Druga animacja, tym razem planety Mars.
Oraz ostatnia w najwyższej rozdzielczości utworzona animacja Merkurego
Jeżeli program SfAnim.exe się nie uruchamia, to najprawdopodobniej trzeba doinstalować w systemie Microsoft Visual C++ 2008 Redistributable Package (x86).
Tytuł:
C++ Zbiór zadań z rozwiązaniami
Autor:
Tomasz Jaśniewski
Tytuł:
Mikrokontrolery dla hobbystów. Projekty DIY w języku C i C++
Autor:
Miguel Angel Garcia-Ruiz, Pedro Cesar Santana Mancilla
Tytuł:
Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów
Autor:
Adrian Ostrowski, Piotr Gaczkowski
Tytuł:
Wprowadzenie do C++
Autor:
Michał Matlak
Tytuł:
Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet)
Autor:
Jerzy Grębosz
Tytuł:
Programowanie wieloplatformowe z C++ i wxWidgets 3
Autor:
Bartosz W. Warzocha
Tytuł:
Język C++ i przetwarzanie współbieżne w akcji. Wydanie II
Autor:
Anthony Williams
Tytuł:
C++ dla bystrzaków. Wydanie VII
Autor:
Stephen R. Davis
Tytuł:
Tablice informatyczne. Podstawy C++
Autor:
Radosław Sokół
Tytuł:
Opus magnum C++11. Programowanie w języku C++ (komplet)
Autor:
Jerzy Grębosz
Załączniki:
Animacja obracającej się ZiemiProgram SfAnim.exe tworzący animację z umieszczonej na dysku twardym w miejscu położenia programu bitmapy o nazwie file.jpg