Zon + planeet simulator; hoe?

Moderators: Michel Uphoff, jkien

Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Berichten: 6

Zon + planeet simulator; hoe?

Goedemorgen,

ik heb me net aangemeld op het forum, en daarom hoop ik ook dat ik deze vraag in de juiste categorie stel.

Ik ben een aantal dagen geleden begonnen met het programmeren van een softwareprogramma, waarmee het mogelijk moet worden om zonnestelsels na te bootsen. Hiermee bedoel ik zoals ons zonnestelsel, de zon plus zijn negen (of acht?) planeten. Het idee is dat mensen dan zelf zo'n systeem op kunnen bouwen en kunnen kijken wat er gebeurt als dat systeem echt zou bestaan (qua baan om de zon van de planeten etc.

Momenteel ben ik zover dat het mij gelukt is om één zon en twee planeten (statisch) weer te geven, maar nu vliegen zij nog in een perfecte cirkel om de zon. Van de zon kan de gebruiker de massa en de diameter invullen, en van de planeet ook. Hiermee zou het mogelijk moeten zijn om één of andere berekening uit te voeren waardoor uitgerekend wordt wat er met die planeet zou gebeuren.

In mijn zoektocht op internet kwam ik de volgende formule tegen voor de 'gravitational force': Gravitational force = (G * m1 * m2) / (d2). Zoals ik het heb vernomen, kan ik voor G 1 invullen (dit weet ik niet 100% zeker). m1 en m2 zijn de massa's van de ster en de planeet, en d is de afstand tussen de twee.

Ik weet niet zeker of ik met deze formule überhaupt op de goede weg ben, maar ik zou het zeer op prijs stellen als iemand mij hiermee zou kunnen helpen. Zelf zal ik uiteraard nog het internet af struinen op zoek naar het antwoord.

Voor de duidelijkheid: het programma dat ik aan het ontwikkelen ben (werktitel 'System Simulator'), zal een open source programma worden.

Met vriendelijke groeten,

Archer aka Michiel

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Zon + planeet simulator; hoe?

Leuk project, ik ben zelf ook net bezig aan een klein programmaatje waarmee mensen spelenderwijs bekend kunnen raken met baanmechanica.

De vergelijking die je hebt gevonden is prima te gebruiken. Voor 'G' kun je inderdaad gewoon een handig gekozen getal invullen, maar dan heb je wel het probleem dat je niet meer met realistische waarden werkt: in je simulatie draait een planeet in een bepaalde baan dan bijvoorbeeld in een kwartiertje rond de zon, terwijl dat in het echt bijvoorbeeld iets van 12 jaar zou zijn.

Wat misschien makkelijker is, is om in plaats van 'G' en de massa van de zon gewoon de gravitatieparameter \(\mu\) van de zon te gebruiken:
\(\mu_{zon} = GM_{zon}\)
zodat de formule er zo uitziet:
\(\vec{F} = \frac{\mu_{zon} \cdot M_{planeet}}{|r|^3}\vec{r}\)
of, nog makkelijker:
\(\vec{a} = \frac{\mu_{zon}}{|r|^3}\vec{r}\)
Wil je trouwens alleen de zwaartekracht van de zon beschouwen, of ook de zwaartekracht van de planeten (zodat ze invloed hebben op elkaars banen)? Bovenstaande vergelijking is prima voor het eerste geval. Voor het tweede geval moet je de versnellingen ten gevolge van de zwaartekracht van alle andere objecten meenemen voor de totale versnelling van een object.

Berichten: 6

Re: Zon + planeet simulator; hoe?

Bedankt voor het snelle antwoord! Op het moment wil ik het nog simpel houden met één ster en meerdere planeten, waar de ster de planeten alleen beïnvloedt. Als ik meer bekend ben met de formules etc. wil ik in een volgende versie van het programma de optie om twee of meerdere sterren te plaatsen inbouwen, en dus ook dat de zwaartekracht van alle lichamen een accuraat beeld geeft van wat er daadwerkelijk zou gebeuren.

Qua tijd wil ik het zo realistisch mogelijk maken, dat de gebruiker de optie heeft de tijd schaal in te stellen, bijvoorbeeld 1 sec/sec (er verstrijkt seconde in de simulatie per 'echte' seconde), 1uur/sec (1 uur per seconde), 1dag/sec, etc. De afstanden tussen de ster en het lichaam (zoals een planeet) wordt op een bepaalde schaal weergegeven, die ik nog moet bepalen. Ik was van plan deze schaal ook te gebruiken voor de grootte van de ster en de planeten, maar dit is natuurlijk onmogelijk (de ster is te groot en de planeet te klein).

Ik zal kijken of ik met deze formule iets aankan. Nogmaals bedankt voor de snelle reactie!

Archer aka Michiel

Gebruikersavatar
Moderator
Berichten: 51.265

Re: Zon + planeet simulator; hoe?

Dan is die µzon natuurlijk heel leuk, maar dan zul je daar nog steeds een realistische G in moeten stoppen.

Die is er gelukkig maar één: 6,6726·10-11Nm2kg-2

Da's heel wat anders dan "1". :smile:
ALS WIJ JE GEHOLPEN HEBBEN...
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Zon + planeet simulator; hoe?

Klopt! Bovendien is de \(\mu\) van de zon nauwkeuriger bekend dan 'G' of de massa van de zon apart.

Berichten: 6

Re: Zon + planeet simulator; hoe?

Jan van de Velde schreef:Dan is die µzon natuurlijk heel leuk, maar dan zul je daar nog steeds een realistische G in moeten stoppen.

Die is er gelukkig maar één: 6,6726·10-11Nm2kg-2

Da's heel wat anders dan "1". :smile:
En hoe geef ik dat weer in ene gewoon getal? Dus iets wat ik in het programma kan stoppen?

Gebruikersavatar
Moderator
Berichten: 51.265

Re: Zon + planeet simulator; hoe?

En hoe geef ik dat weer in een gewoon getal? Dus iets wat ik in het programma kan stoppen?
0,000000000066726

maar de meest computers kunnen ook prima met die tienmachten overweg toch?
ALS WIJ JE GEHOLPEN HEBBEN...
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Zon + planeet simulator; hoe?

Yup, zo'n klein getal als 'G' wordt dan, in gangbare E-notatie, "6.6726E-11".

Maar nogmaals: de waarde van 'G' is niet eens zo heel nauwkeurig bekend. En de massa van de zon zelf ook niet. Maar hun product (die garavitatieparameter \(\mu\) dus) wel! Juist omdat dat zo makkelijk af te leiden valt uit de formule die ik eerder aanhaalde. Meet de positie beweging van je ruimtescheepje, leid daaruit de versnelling af die het ondergaat en je hebt zo een aardig nauwkeurige waarde voor \(\mu\).

Gebruikersavatar
Moderator
Berichten: 51.265

Re: Zon + planeet simulator; hoe?

@Brinx, je blijft dapper naar die µ refereren, maar waar vinden we die dan voor de zon?
ALS WIJ JE GEHOLPEN HEBBEN...
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Zon + planeet simulator; hoe?

Om 'm te vinden is de juiste Engelse term inderdaad wel handig: 'gravitational parameter', of 'standard gravitational parameter'. Hier heb je een hele lijst:

http://en.wikipedia.org/wiki/Standard_grav...ional_parameter

Berichten: 6

Re: Zon + planeet simulator; hoe?

Goed, ik heb nu dus het volgende: m << M, zoals op die Wikipedia pagina staat. Vervolgens gebruik ik die in de formule gegeven door Brinx:
\(\vec{F} = \frac{\mu_{zon} \cdot M_{planeet}}{|r|^3}\vec{r}\)
En dan krijg ik wat? F? En hoe kan ik die vervolgens gebruiken om uit te rekenen wat de volgende positie van de planeet is?

En, misschien heb ik het gemist of ben ik gewoon niet zo slim, maar waar staat "r" voor in de formule? Ik kon niet afleiden wat die was. Ik hoop dat ik niet te veel tot last ben, ik ben nog nooit eerder met deze formules in aanraking gekomen :(

Archer

Gebruikersavatar
Berichten: 2.003

Re: Zon + planeet simulator; hoe?

r staat voor de afstand tussen twee massa's. In de formule van jou is de r met een pijltje erboven de richting van de kracht.
I was born not knowing and have only a little time to change that here and there.

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Zon + planeet simulator; hoe?

Archer, je kunt ook de massa van de planeet gewoon weglaten uit die formule: dan heb je gelijk de versnelling van de planeet, in plaats van de kracht die op de planeet staat (die kracht zou je anders daarna toch weer door de massa van de planeet moeten delen om aan de versnelling te komen!).

'r' staat, zoals Morzon al zei, voor de afstand van de planeet tot de zon: omdat ik 'r' als vector gebruikte, deel je die \(\mu\) eerst door de derde macht van de lengte van die vector (vandaar de |r|, tussen absoluutstrepen) en vermenigvuldig je dat daarna weer met de vector zelf: zo krijg je een versnelling als vector eruit, en dat scheelt dan weer gedoe met sinusjes en cosinusjes omdat j{e die niet meer hoeft te ontbinden verderop.

Voorbeeldje: de afstand tussen zon en planeet is 10, de mu van de zon is 1, en de vector \(\vec{r}\) (gemeten van zon naar planeet!) is (3,4,0). Dan krijg je voor de versnelling:
\(\vec{a_{planeet}} = -\frac{\mu_{zon}}{|r|^3}\cdot \vec{r} = -\frac{1}{10^3}\cdot \left( \startmatrix{3 \\ 4 \\ 0} \endmatrix \right) = \left( \startmatrix{-3/1000 \\ -4/1000 \\ 0} \endmatrix \right) \)

Berichten: 6

Re: Zon + planeet simulator; hoe?

Brinx, heb je het nu over in het 'echt', of in het programma? Voor het programma heb ik een schaal genomen ( standaard 1 pixel per 1.000.000 km), die de gebruiker kan aanpassen (van 500.000 per pixel tot 10.000.000 p/px). Op basis van de schaal bepaald ik vervolgens waar de planeet getekend moet worden (namelijk Afstand / Schaal pixels van de ster vandaan). Op deze manier heb ik dus de 'echte' waarden (zoals dat in het echt zou zijn) weergegeven.

Ik hoop dat jullie nog even geduld met mij hebben, want dan lukt het me misschien. Misschien zit ik er finaal naast, sorry daarvoor dan, maar bij die laatste berekening rolt er een vector uit. Nu ben ik vectors alleen tegengekomen in 3D omgevingen (ik zit meer in de computer-richting dan wiskunde/natuurkunde etc. richting), is dit ook de bedoeling, of dien ik die vector op een andere manier te interpreteren?

In mijn programma gebruik ik een twee dimensionaal vlak. Nu wordt dat blak ongeveer 60 keer per seconde ge-update. Hoe kan ik nu de gegeven formule gebruiken om de volgende locatie van de planeet te bepalen? Ik bedoel dus, in het 'echt', want de locatie van de planeet op het scherm wordt vervolgens bepaald door de schaal, zoals ik al zei.

Ik zal binnenkort een vriend van mij erbij halen, die is goed in wiskunde, misschien kan hij mij ook helpen. Ik hoop - nogmaals - dat ik niet teveel tot last ben en dat iemand me kan helpen dit op te lossen.

Archer

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Zon + planeet simulator; hoe?

Je bent niemand tot last, hoor - iedereen hier helpt je uit vrije wil. Stel zoveel vragen als je wilt - zolang iedereen de indruk krijgt dat je zelf meedenkt zul je genoeg antwoorden krijgen. :(

Wat betreft de schaal, etc: mij zou het het handigst lijken om alle berekeningen, posities, snelheden enzovoort gewoon in 'echte' eenheden te doen. Zo heb je een systeem waarin alle onderlinge verhoudingen en schalen kloppen, en dat hele consistente systeem kun je op het laatst vertalen naar schermcoordinaten. Ik weet niet zeker of je dat nu al doet, namelijk.

Als je alle berekeningen in het tweedimensionale vlak wilt houden, kun je of 2D-vectoren gebruiken (met alleen een x- en een y-component), of 3D-vectoren waarvan de z-component gewoon altijd 0 is (dat is wat ik gebruikte in mijn vorige post). Die laatste mogelijkheid biedt opties voor het uitbreiden van je simulatie naar een volledig 3-dimensionale situatie, mocht je dat later willen.

Over het vector-resultaat van de berekening van de versnelling: dat klopt inderdaad, de versnelling die je berekent met die formule heeft 3 componenten: eentje in x-richting, eentje in y-richting en eentje in z-richting. Die drie componenten van de versnelling kun je elk dus direct gebruiken in de berekening van de volgende positie van de planeet (met standaard numerieke integratietechnieken).

Reageer