Innehållsförteckning:
- Steg 1: 2 -dimensionell simulering
- Steg 2: Ta det till 3 dimensioner
- Steg 3: Använda riktiga planeter
- Steg 4: Slutliga tankar och kommentarer
Video: Solsystemsimulering: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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
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:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Steg-för-steg-utbildning i robotik med ett kit: 6 steg
Steg-för-steg-utbildning i robotik med ett kit: Efter ganska många månader av att bygga min egen robot (se alla dessa), och efter att två gånger ha misslyckats med delar, bestämde jag mig för att ta ett steg tillbaka och tänka om min strategi och riktning. De flera månaders erfarenhet var ibland mycket givande och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)