Spisu treści:

Symulacja Układu Słonecznego: 4 kroki
Symulacja Układu Słonecznego: 4 kroki

Wideo: Symulacja Układu Słonecznego: 4 kroki

Wideo: Symulacja Układu Słonecznego: 4 kroki
Wideo: Nasz Układ Słoneczny, o Słońcu i planetach 2024, Grudzień
Anonim

W ramach tego projektu postanowiłem stworzyć symulację wpływu grawitacji na ruch ciał planetarnych w Układzie Słonecznym. Na powyższym filmie / ciało Słońca jest reprezentowane przez sferę z siatki drucianej, a planety są generowane losowo.

Ruch planet opiera się na prawdziwej fizyce, prawie powszechnej grawitacji. To prawo określa siłę grawitacyjną wywieraną na masę przez inną masę; w tym przypadku Słońce na wszystkich planetach, a planety na sobie.

W tym projekcie wykorzystałem Processing, środowisko programistyczne oparte na javie. Użyłem również przykładowego pliku Processing, który symuluje grawitację planet. Wszystko, czego potrzebujesz do tego, to oprogramowanie do przetwarzania i komputer.

Krok 1: Symulacja dwuwymiarowa

Zacząłem od obejrzenia kilku filmów o tym, jak kodować to, co Dan Shiffman stworzył na swoim kanale YouTube, The Coding Train (część 1/3). W tym momencie pomyślałem, że użyję rekurencji do wygenerowania Układu Słonecznego, podobnie jak Shiffman używa tylko praw fizyki.

Stworzyłem obiekt planety, który miał „planety potomne”, które z kolei miały również „planety potomne”. Kod do symulacji 2D nie został ukończony, ponieważ nie miałem świetnego sposobu na symulowanie sił grawitacyjnych dla każdej planety. Odwróciłem się od tego sposobu myślenia, w kierunku opartym na wbudowanym przykładzie przetwarzania przyciągania grawitacyjnego. Problem polegał na tym, że musiałem obliczyć siłę grawitacyjną wszystkich innych planet na każdej planecie, ale nie mogłem wymyślić, jak łatwo wyciągnąć informacje z pojedynczej planety. Po zobaczeniu, jak robi to samouczek Przetwarzanie, zdałem sobie sprawę, jak to zrobić, używając zamiast tego pętli i tablic

Krok 2: Przeniesienie go do 3 wymiarów

Korzystając z przykładowego kodu dla Planetary Attraction, który jest dostarczany wraz z przetwarzaniem, uruchomiłem nowy program do symulacji 3D. Główna różnica dotyczy klasy Planet, gdzie dodałem funkcję przyciągania, która oblicza siłę grawitacyjną między dwiema planetami. To pozwoliło mi zasymulować działanie naszego Układu Słonecznego, w którym planety przyciągają nie tylko Słońce, ale także każda inna planeta.

Każda planeta ma losowo wygenerowane cechy, takie jak masa, promień, początkowa prędkość orbitalna itp. Planety są stałymi kulami, a Słońce jest kulą z siatki drucianej. Dodatkowo lokalizacja kamery obraca się wokół środka okna.

Krok 3: Korzystanie z prawdziwych planet

Image
Image

Po opracowaniu struktury symulacji 3D użyłem Wikipedii, aby znaleźć rzeczywiste dane planetarne dla naszego Układu Słonecznego. Stworzyłem tablicę obiektów planet i wprowadziłem prawdziwe dane. Kiedy to zrobiłem, musiałem zmniejszyć wszystkie cechy. Kiedy to zrobiłem, powinienem był wziąć rzeczywiste wartości i pomnożyć przez współczynnik, aby zmniejszyć wartości, zamiast tego zrobiłem to w jednostkach ziemskich. To znaczy wziąłem stosunek wartości Ziemi do wartości innych obiektów, na przykład Słońce ma 109 razy większą masę niż Ziemia. Jednak spowodowało to, że rozmiary planet wydawały się zbyt duże lub zbyt małe.

Krok 4: Końcowe przemyślenia i komentarze

Gdybym miał kontynuować pracę nad tą symulacją, dopracowałbym/ulepszyłbym kilka rzeczy:

1. Najpierw przeskalowałbym wszystko równomiernie, używając tego samego współczynnika skalowania. Następnie, aby poprawić widoczność orbit, dodałbym ślad za każdą planetą, aby zobaczyć, jak każdy obrót ma się do poprzedniego

2. Kamera nie jest interaktywna, co oznacza, że część orbit znajduje się poza ekranem, „za osobą” oglądającą. Istnieje biblioteka kamer 3D o nazwie Peazy Cam, która jest używana w części 2 serii wideo Coding Train na ten temat. Ta biblioteka pozwala widzowi obracać, przesuwać i przybliżać kamerę, aby mogli śledzić całą orbitę planety.

3. Wreszcie, planety są obecnie nie do odróżnienia od siebie. Chciałbym dodać „skórki” do każdej planety i Słońca, aby widzowie mogli rozpoznać Ziemię i tym podobne.

Zalecana: