Innehållsförteckning:

Solsystemsimulering: 4 steg
Solsystemsimulering: 4 steg

Video: Solsystemsimulering: 4 steg

Video: Solsystemsimulering: 4 steg
Video: Голубая стрела (1958) фильм 2024, Juli
Anonim

För detta projekt satte jag mig för att skapa en simulering av hur gravitationen påverkar planetkropparnas rörelse i ett solsystem. I videon ovan / representeras solkroppen av trådnätssfären och planeterna genereras slumpmässigt.

Planeternas rörelse bygger på verklig fysik, lagen om universell gravitation. Denna lag definierar gravitationskraften som utövas på en massa av en annan massa; i detta fall solen på alla planeter, och planeterna på varandra.

För detta projekt använde jag Processing, en java -baserad programmeringsmiljö. Jag använde också filen Processing exempel som simulerar planets gravitation. Allt du behöver för detta är bearbetningsprogramvaran och en dator.

Steg 1: 2 -dimensionell simulering

Jag började med att titta på några videor om hur man kodar detta som Dan Shiffman skapade på sin YouTube -kanal, Coding Train (del 1/3). Vid denna tidpunkt trodde jag att jag skulle använda rekursion för att generera solsystemet, ungefär som Shiffman bara använder fysikens lagar.

Jag skapade ett planetobjekt som hade "barnplaneter", som i sin tur också hade "barn" -planeter. Koden för 2D -simuleringen var inte klar eftersom jag inte hade ett bra sätt att simulera gravitationskrafterna för varje planet. Jag svängde från detta sätt att tänka, i en riktning baserad på det inbyggda bearbetningsexemplet av gravitationell attraktion. Frågan var att jag behövde beräkna gravitationskraften från alla andra planeter på varje planet, men kunde inte tänka på hur jag enkelt skulle kunna dra informationen från en enskild planet. Efter att ha sett hur bearbetningshandledningen gör det insåg jag exakt hur jag skulle göra det med hjälp av slingor och matriser istället

Steg 2: Ta det till 3 dimensioner

Med hjälp av exempelkoden för Planetary Attraction som följer med bearbetning startade jag ett nytt program för en 3D -simulering. Den största skillnaden är i klassen Planet, där jag lade till en attraktionsfunktion, som beräknar gravitationskraften mellan två planeter. Detta tillät mig att simulera hur våra solsystem fungerar, där planeterna inte bara lockas till solen, utan också till alla andra planeter.

Varje planet har slumpmässigt genererade egenskaper som massa, radie, initiala orbitalhastighet, etc. Planeterna är fasta sfärer och solen är en trådnätskula. Dessutom roterar kamerans plats runt mitten av fönstret.

Steg 3: Använda riktiga planeter

Image
Image

Efter att jag fick ner ramarna för 3D -simuleringen använde jag Wikipedia för att hitta de faktiska planetdata för vårt solsystem. Jag skapade en rad planetobjekt och matade in riktiga data. När jag gjorde detta var jag tvungen att skala ner alla egenskaper. När jag gjorde detta borde jag ha tagit de faktiska värdena och multiplicerat med en faktor för att skala ner värdena, istället gjorde jag det i enheter av jorden. Det är jag tog förhållandet Jordens värde till de andra objektens värde, till exempel har solen 109 gånger mer massa än jorden. Detta resulterade dock i att planetenas storlek såg för stor eller för liten ut.

Steg 4: Slutliga tankar och kommentarer

Om jag skulle fortsätta arbeta med denna simulering skulle jag förfina/förbättra ett par saker:

1. Först skulle jag skala allt enhetligt med samma skalfaktor. För att förbättra banornas synlighet skulle jag lägga till ett spår bakom varje planet för att se hur varje revolution kan jämföras med den föregående

2. Kameran är inte interaktiv, vilket innebär att en del av banorna är utanför skärmen, "bakom personen" tittar. Det finns ett 3D -kamerabibliotek som heter Peazy Cam, som används i del 2 av kodningstågets videoserie om detta ämne. Detta bibliotek tillåter betraktaren att rotera, panorera och zooma kameran så att de skulle kunna följa hela en planets bana.

3. Slutligen är planeterna för närvarande oskiljbara från varandra. Jag skulle vilja lägga till "skinn" till varje planet och solen, så att tittarna kan känna igen jorden och så.

Rekommenderad: