Inhaltsverzeichnis:

Sonnensystemsimulation - Gunook
Sonnensystemsimulation - Gunook

Video: Sonnensystemsimulation - Gunook

Video: Sonnensystemsimulation - Gunook
Video: warp speed realistic simulation #shorts 2024, Juli
Anonim

Für dieses Projekt wollte ich eine Simulation erstellen, wie sich die Schwerkraft auf die Bewegung von Planetenkörpern in einem Sonnensystem auswirkt. Im obigen Video wird der Sonnenkörper durch die Drahtgitterkugel dargestellt und die Planeten werden zufällig generiert.

Die Bewegung der Planeten basiert auf echter Physik, dem Gesetz der universellen Gravitation. Dieses Gesetz definiert die Gravitationskraft, die von einer anderen Masse auf eine Masse ausgeübt wird; in diesem Fall die Sonne auf allen Planeten und die Planeten aufeinander.

Für dieses Projekt habe ich Processing verwendet, eine Java-basierte Programmierumgebung. Ich habe auch die Beispieldatei Processing verwendet, die die Schwerkraft von Planeten simuliert. Dazu benötigen Sie lediglich die Processing-Software und einen Computer.

Schritt 1: 2-dimensionale Simulation

Ich begann damit, dass ich mir einige Videos ansah, wie man das codiert, die Dan Shiffman auf seinem YouTube-Kanal, dem Coding Train (Teil 1/3), erstellt hat. An diesem Punkt dachte ich, dass ich Rekursion verwenden würde, um das Sonnensystem zu erzeugen, ähnlich wie es Shiffman nur mit den Gesetzen der Physik macht.

Ich habe ein Planetenobjekt erstellt, das „Kinderplaneten“hatte, die wiederum auch „Kindplaneten“hatten. Der Code für die 2D-Simulation war noch nicht fertig, da ich keine gute Möglichkeit hatte, die Gravitationskräfte für jeden Planeten zu simulieren. Ich schwenkte von dieser Denkweise in eine Richtung, die auf dem eingebauten Verarbeitungsbeispiel der Gravitationsanziehung basiert. Das Problem war, dass ich die Gravitationskraft aller anderen Planeten auf jedem Planeten berechnen musste, mir aber nicht vorstellen konnte, wie ich die Informationen eines einzelnen Planeten einfach abrufen könnte. Nachdem ich gesehen hatte, wie das Processing-Tutorial es macht, wurde mir klar, wie es stattdessen mit Schleifen und Arrays funktioniert

Schritt 2: Bringen Sie es in 3 Dimensionen

Mit dem Beispielcode für Planetary Attraction, der mit der Verarbeitung geliefert wird, habe ich ein neues Programm für eine 3D-Simulation gestartet. Der Hauptunterschied besteht in der Planet-Klasse, wo ich eine Anziehungsfunktion hinzugefügt habe, die die Gravitationskraft zwischen zwei Planeten berechnet. Dadurch konnte ich simulieren, wie unser Sonnensystem funktioniert, wo die Planeten nicht nur von der Sonne angezogen werden, sondern auch von jedem anderen Planeten.

Jeder Planet hat zufällig generierte Eigenschaften wie Masse, Radius, anfängliche Umlaufgeschwindigkeit usw. Die Planeten sind feste Kugeln und die Sonne ist eine drahtgeflechtete Kugel. Außerdem dreht sich die Kameraposition um die Mitte des Fensters.

Schritt 3: Verwenden von echten Planeten

Image
Image

Nachdem ich das Framework für die 3D-Simulation fertig gestellt hatte, habe ich Wikipedia benutzt, um die tatsächlichen Planetendaten für unser Sonnensystem zu finden. Ich habe ein Array von Planetenobjekten erstellt und die echten Daten eingegeben. Als ich dies tat, musste ich alle Eigenschaften herunterskalieren. Als ich dies tat, hätte ich die tatsächlichen Werte nehmen und mit einem Faktor multiplizieren sollen, um die Werte zu verkleinern, stattdessen habe ich es in Erdeinheiten gemacht. Das heißt, ich habe das Verhältnis des Erdwertes zum Wert der anderen Objekte genommen, zum Beispiel hat die Sonne 109 mal mehr Masse als die Erde. Dies führte jedoch dazu, dass die Größen der Planeten zu groß oder zu klein aussahen.

Schritt 4: Abschließende Gedanken und Kommentare

Wenn ich weiter an dieser Simulation arbeiten würde, würde ich ein paar Dinge verfeinern/verbessern:

1. Zuerst würde ich alles gleichmäßig mit dem gleichen Skalierungsfaktor skalieren. Um die Sichtbarkeit der Umlaufbahnen zu verbessern, würde ich dann hinter jedem Planeten eine Spur hinzufügen, um zu sehen, wie jede Umdrehung im Vergleich zur vorherigen ist

2. Die Kamera ist nicht interaktiv, was bedeutet, dass ein Teil der Umlaufbahnen außerhalb des Bildschirms "hinter der Person" zu sehen ist. Es gibt eine 3D-Kamerabibliothek namens Peazy Cam, die in Teil 2 der Videoserie des Coding Train zu diesem Thema verwendet wird. Diese Bibliothek ermöglicht es dem Betrachter, die Kamera zu drehen, zu schwenken und zu zoomen, sodass er die gesamte Umlaufbahn eines Planeten verfolgen kann.

3. Schließlich sind die Planeten derzeit nicht voneinander zu unterscheiden. Ich möchte jedem Planeten und der Sonne „Skins“hinzufügen, damit die Betrachter die Erde und dergleichen erkennen können.