Inhoudsopgave:

Zonnestelselsimulatie: 4 stappen
Zonnestelselsimulatie: 4 stappen

Video: Zonnestelselsimulatie: 4 stappen

Video: Zonnestelselsimulatie: 4 stappen
Video: Werking van een 4 takt motor. 2024, Juli-
Anonim

Voor dit project wilde ik een simulatie maken van hoe zwaartekracht de beweging van planetaire lichamen in een zonnestelsel beïnvloedt. In de video hierboven\ wordt het zonnelichaam weergegeven door de bol van draadgaas en worden de planeten willekeurig gegenereerd.

De beweging van de planeten is gebaseerd op echte fysica, de wet van universele zwaartekracht. Deze wet definieert de zwaartekracht die door een andere massa op een massa wordt uitgeoefend; in dit geval de zon op alle planeten, en de planeten op elkaar.

Voor dit project heb ik Processing gebruikt, een op Java gebaseerde programmeeromgeving. Ik heb ook het voorbeeldbestand Processing gebruikt dat de zwaartekracht van planeten simuleert. Het enige dat u hiervoor nodig heeft, is de verwerkingssoftware en een computer.

Stap 1: 2-dimensionale simulatie

Ik begon met het bekijken van enkele video's over hoe je dit kunt coderen, die Dan Shiffman heeft gemaakt op zijn YouTube-kanaal, de codeertrein (deel 1/3). Op dit punt dacht ik dat ik recursie zou gebruiken om het zonnestelsel te genereren, vergelijkbaar met hoe Shiffman alleen de wetten van de fysica gebruikt.

Ik heb een planeetobject gemaakt met 'kinderplaneten', die op hun beurt ook 'kinderplaneten' hadden. De code voor de 2D-simulatie was nog niet af omdat ik geen goede manier had om de zwaartekrachten voor elke planeet te simuleren. Ik draaide vanuit deze manier van denken, in een richting die gebaseerd was op het ingebouwde verwerkingsvoorbeeld van zwaartekracht. Het probleem was dat ik de zwaartekracht van alle andere planeten op elke planeet moest berekenen, maar niet kon bedenken hoe ik gemakkelijk de informatie van een individuele planeet kon trekken. Nadat ik had gezien hoe de zelfstudie Processing het doet, realiseerde ik me precies hoe ik het moest doen door in plaats daarvan loops en arrays te gebruiken

Stap 2: Het naar 3 dimensies brengen

Met behulp van de voorbeeldcode voor Planetary Attraction die bij de verwerking wordt geleverd, begon ik een nieuw programma voor een 3D-simulatie. Het grootste verschil zit in de klasse Planet, waar ik een aantrekkingsfunctie heb toegevoegd, die de zwaartekracht tussen twee planeten berekent. Hierdoor kon ik simuleren hoe onze zonnestelsels werken, waar de planeten niet alleen door de zon worden aangetrokken, maar ook door elke andere planeet.

Elke planeet heeft willekeurig gegenereerde kenmerken zoals de massa, straal, initiële baansnelheid, enz. De planeten zijn vaste bollen en de zon is een bol van gaas. Bovendien roteert de cameralocatie rond het midden van het venster.

Stap 3: Echte planeten gebruiken

Image
Image

Nadat ik het raamwerk voor de 3D-simulatie had gevonden, gebruikte ik Wikipedia om de werkelijke planetaire gegevens voor ons zonnestelsel te vinden. Ik heb een reeks planeetobjecten gemaakt en de echte gegevens ingevoerd. Toen ik dit deed, moest ik alle kenmerken verkleinen. Toen ik dit deed, had ik de werkelijke waarden moeten nemen en vermenigvuldigd met een factor om de waarden te verkleinen, in plaats daarvan deed ik het in eenheden van de aarde. Dat wil zeggen, ik nam de verhouding van de waarde van de aarde tot de waarde van de andere objecten, de zon heeft bijvoorbeeld 109 keer meer massa dan de aarde. Dit resulteerde er echter in dat de afmetingen van de planeten te groot of te klein leken.

Stap 4: Laatste gedachten en opmerkingen

Als ik aan deze simulatie zou blijven werken, zou ik een aantal dingen verfijnen/verbeteren:

1. Eerst zou ik alles uniform schalen met dezelfde schaalfactor. Om de zichtbaarheid van de banen te verbeteren, zou ik een spoor achter elke planeet toevoegen om te zien hoe elke revolutie zich verhoudt tot de vorige

2. De camera is niet interactief, wat betekent dat een deel van de banen zich buiten het scherm bevindt, "achter de persoon" kijkend. Er is een 3D-camerabibliotheek genaamd Peazy Cam, die wordt gebruikt in deel 2 van de videoserie van de codeertrein over dit onderwerp. Met deze bibliotheek kan de kijker de camera draaien, pannen en zoomen, zodat ze de hele baan van een planeet kunnen volgen.

3. Tot slot zijn de planeten momenteel niet van elkaar te onderscheiden. Ik zou aan elke planeet en de zon 'huiden' willen toevoegen, zodat kijkers de aarde en dergelijke kunnen herkennen.

Aanbevolen: