Indholdsfortegnelse:

Solsystemsimulering: 4 trin
Solsystemsimulering: 4 trin
Anonim

Til dette projekt satte jeg mig for at skabe en simulering af, hvordan tyngdekraften påvirker planetenes bevægelser i et solsystem. I videoen ovenfor / er sollegemet repræsenteret af trådmasken, og planeterne genereres tilfældigt.

Planeternes bevægelse er baseret på ægte fysik, loven om universel gravitation. Denne lov definerer den tyngdekraft, der udøves på en masse af en anden masse; i dette tilfælde Solen på alle planeterne og planeterne på hinanden.

Til dette projekt brugte jeg Processing, et java -baseret programmeringsmiljø. Jeg brugte også forarbejdningseksempelfilen, der simulerer planets tyngdekraft. Alt hvad du skal bruge til dette er forarbejdningssoftwaren og en computer.

Trin 1: 2 dimensionel simulering

Jeg begyndte med at se nogle videoer om, hvordan man koder dette, som Dan Shiffman oprettede på sin YouTube -kanal, kodningstoget (del 1/3). På dette tidspunkt troede jeg, at jeg ville bruge rekursion til at generere solsystemet, svarende til hvordan Shiffman kun gør ved hjælp af fysikkens love.

Jeg skabte et planetobjekt, der havde 'børneplaner', som igen også havde 'barneplaneter'. Koden til 2D -simuleringen var ikke færdig, fordi jeg ikke havde en god måde at simulere tyngdekræfterne for hver planet. Jeg svingede fra denne tankegang i en retning baseret på det indbyggede bearbejdningseksempel på gravitationsattraktion. Spørgsmålet var, at jeg havde brug for at beregne tyngdekraften fra alle de andre planeter på hver planet, men kunne ikke tænke på, hvordan jeg let kunne trække informationen fra en individuel planet. Efter at have set hvordan Processing -tutorialen gør det, indså jeg præcis, hvordan jeg skulle gøre det ved hjælp af loops og arrays i stedet

Trin 2: Tager det til 3 dimensioner

Ved hjælp af eksempelkoden til Planetary Attraction, der følger med behandling, startede jeg et nyt program til en 3D -simulering. Den største forskel er i klassen Planet, hvor jeg tilføjede en attraktionsfunktion, der beregner tyngdekraften mellem to planeter. Dette tillod mig at simulere, hvordan vores solsystemer fungerer, hvor planeterne ikke bare tiltrækkes af solen, men også af enhver anden planet.

Hver planet har tilfældigt genererede karakteristika, såsom masse, radius, indledende orbitalhastighed osv. Planeterne er solide kugler og solen er en kugle af trådnet. Derudover roterer kamerapositionen omkring midten af vinduet.

Trin 3: Brug af rigtige planeter

Image
Image

Efter at jeg fik rammen for 3D -simuleringen nede, brugte jeg Wikipedia til at finde de faktiske planetdata for vores solsystem. Jeg oprettede en række planetobjekter og indtastede de rigtige data. Da jeg gjorde dette, var jeg nødt til at nedskalere alle egenskaberne. Da jeg gjorde dette, skulle jeg have taget de faktiske værdier og ganget med en faktor for at nedskalere værdierne, i stedet gjorde jeg det i enheder af jorden. Det er jeg tog forholdet Jordens værdi til de andre objekters værdi, for eksempel har solen 109 gange mere masse end Jorden. Dette resulterede imidlertid i, at planternes størrelser så for store eller for små ud.

Trin 4: Afsluttende tanker og kommentarer

Hvis jeg fortsatte med at arbejde med denne simulering, ville jeg forfine/forbedre et par ting:

1. Først ville jeg skalere alt ensartet ved hjælp af den samme skaleringsfaktor. For derefter at forbedre banernes synlighed ville jeg tilføje et spor bag hver planet for at se, hvordan hver revolution kan sammenlignes med den foregående

2. Kameraet er ikke interaktivt, hvilket betyder, at en del af banerne er uden for skærmen, "bag personen" ser. Der er et 3D -kamerabibliotek kaldet Peazy Cam, der bruges på del 2 af kodningstogets videoserie om dette emne. Dette bibliotek giver seeren mulighed for at rotere, panorere og zoome kameraet, så de kunne følge hele en planets kredsløb.

3. Endelig kan planeterne i øjeblikket ikke skelnes fra hinanden. Jeg vil gerne tilføje 'skind' til hver planet og Solen, så seerne kan genkende Jorden og sådan.

Anbefalede: