Baansimulatie: een kleine applet

Moderators: Michel Uphoff, jkien

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

Baansimulatie: een kleine applet

Na wat gepruts heb ik een eerste versie van een baansimulatieprogrammaatje in elkaar gezet. Deze versie draait in je browser, als Java applet. Nadeel van deze versie is dat-ie niet van grootte veranderd kan worden (wat bij de standalone-versie dus wel kan). Dit programmaatje is een work-in-progress, en er wordt nog druk aan gewerkt. Telkens als ik een nieuwere versie heb zal ik dat hier melden.

Even wat info: dit programmaatje is een 2D-simulatie van hoe objecten bewegen onder invloed van elkaars zwaartekracht. De gebruiker kan nieuwe objecten toevoegen, hun positie/snelheid/massa/straal/kleur aanpassen en ze desnoods weer verwijderen en simulatie starten/stoppen door gebruik te maken van een stel knopjes in de interface.

Als je de applet start, bevinden zich al twee objecten in de window: een blauwe en een oranje. Dit is zodat je gelijk al op 'run' kunt klikken om te zien wat voor bewegingen de objecten maken.

Om een object te verslepen:

- LMB-drag het object naar de gewenste plek (direct-klaar-methode), of

- Vul rechts de gewenste coordinaten in nadat je het object geselecteerd hebt met de LMB en klik dan op 'apply parameters'.

Om de snelheidsvector van een object te wijzigen:

- MMB-drag de rode vector naar de gewenste richting en grootte, of

- Vul rechts de snelheidscomponenten in wanneer het object is geselecteerd en klik dan op 'apply parameters'.

Om in en uit te zoomen:

- Gebruik je muiswiel.

Om het beeldveld te verschuiven:

- RMB-drag het beeldveld in de gewenste richting.

Noot: wanneer je numeriek waarden aanpast in de tekstvakjes moet je daarna altijd op 'apply parameters' klikken om de instellingen te bevestigen.

N.B., de eenheden die gebruikt worden zijn:

positie: km

snelheid: km/s

radius: km

kleur: waarden van 0 tot 255 voor elk van de drie vakjes (rood, groen, blauw)

mu (gravitatieparameter, dus G*M): km^3/s^2 (zie http://en.wikipedia.org/wiki/Standard_grav...ional_parameter )

Het knopje 'reset sim' zet de posities en snelheden van alle objecten terug naar de laatste waarden die ze hadden voordat er voor de laatste keer op 'start' geklikt werd.

Overige operaties wijzen zich vanzelf - heb je vragen, posts ze dan gerust in dit onderwerp.

Hier kun je 'm vinden:

http://www.wetenschapsforum.nl/moderator/orbitsim.html

Toekomstige wijzigingen en ideeen:

- Toevoeging van een manier om configuraties te laden uit bestanden en op te kunnen slaan, zodat gebruikers interessante situatie aan elkaar kunnen laten zien

- Toevoeging van Hill-oppervlakken (eigenlijk iso-energie lijnen) in de grafische interface om een beeld te krijgen van de toegestane banen voor een object

- Toevoegen van de 'history' van een object, bij voorbeeld d.m.v. een spoor van stipjes

- Toevoegen van een programmeermodus, waarin bijvoorbeeld het thrust- en stuurgedrag van een ruimtescheepje kan worden ingesteld (simulatie translunar injection van de Apollo bijvoorbeeld).

Mocht je nog opmerkingen of tips hebben, suggesties willen doen of fouten willen melden: plaats ze gerust hier!

Gebruikersavatar
Moderator
Berichten: 51.270

Re: Baansimulatie: een kleine applet

Afbeelding
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
Berichten: 3.751

Re: Baansimulatie: een kleine applet

heel mooi.

grappig dat er standaard een aantal objecten heel hard van het frame wegvliegen. Is er daar een bepaalde reden voor? Zijn de parameters daarvan van een grootteorde dat interacties hiermee ervoor zorgen dat impulsbehoud in mijn klein frame niet volledig opgaat? Of ligt dat aan een te kleine tijdstap?

Gebruikersavatar
Berichten: 36

Re: Baansimulatie: een kleine applet

zozo das een mooie... hopen dat ik ook ooit nog zo ver kom haha.

Ik zie wel iets raars: als ik van de twee standaardobjecten de snelheid bij allebei op 0 zet, bewegen ze eerst naar elkaar toe en als ze elkaar raken, schieten ze ineens ontzettend hard weg in de bewegingsrichting van het kleine bolletje. Het lijkt me niet dat dat echt zo gaat, haha.

Gebruikersavatar
Berichten: 3.751

Re: Baansimulatie: een kleine applet

edit: dat heb ik blijkbaar zelf gedaan :D excuses

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Baansimulatie: een kleine applet

Willemwever, dat klopt - wanneer objecten zeer dicht bij elkaar komen ontstaan er flinke numerieke afrondingsfouten (en is de stapgrootte van de integrator niet meer klein genoeg om de symplecticiteit te behouden), en loopt de simulatie in de soep. Manieren om dit te omzeilen zijn er op zich wel: de stapgrootte bijvoorbeeld kleiner maken wanneer objecten zo dicht bij elkaar in de buurt komen, of objecten gewoon laten samensmelten wanneer ze botsen.

Dit laatste lijkt me trouwens wel een eenvoudige en elegante oplossing. Ik ga eens kijken of dit leuk uitpakt.

Intussen werk ik door aan een versie met meer functionaliteit erin - maar ik wacht nog even met uploaden (waarvoor overigens dank aan Miels!) omdat er nog wat kleine dingetjes aan veranderd kunnen worden.

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Baansimulatie: een kleine applet

Er is een nieuwe versie geupload! Enkele aanpassingen zijn het schaalrooster dat nu in de achtergrond aanwezig is, en het weergeven van de vorige posities van objecten in de vorm van 'sporen' die achtergelaten worden. Ook bevindt zich een link op de pagina naar de 'stand-alone' versie, die je buiten je browser kunt draaien.

Zie:

http://www.wetenschapsforum.nl/moderator/orbitsim.html

Aan een botsingsmodel wordt nog gewerkt. Plaats je ervaringen, vragen en suggesties hier, als je ze hebt! Met feedback kan ik het beste bepalen wat de moeite waard is om er nog meer in te stoppen.

Gebruikersavatar
Berichten: 17.659

Re: Baansimulatie: een kleine applet

Als feedback om verder te sleutelen heb je er weinig aan, maar had ik al gezegd dat je goed bezig bent? :D
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -

Gebruikersavatar
Berichten: 1.279

Re: Baansimulatie: een kleine applet

Nope, werkt niet voor me. Het zal wel liggen aan het feit dat ik met Linu werk. Ik zal mijn Java eens bijwerken en dan probeer ik het nog eens.

Het lag me dus aan de Java plugin. Gelukkig is in Linux alles zoveel eenvoudiger aan te passen. :D

Waaauw, dat is echt wel een fantastische applet.

Ik zit keilang te sukkelen in Visual Basic om iets te maken en dat van jou is nog tien keer beter. Khoop dat je het nog uitbreidt. Veel succes

Gebruikersavatar
Berichten: 238

Re: Baansimulatie: een kleine applet

Ziet er mooi uit!

Wat je zou kunnen doen is om er echt een compleet baansimulatie programma/applet van te maken. Je moet dan een mogelijkheid hebben om op een bepaalde tijd of plaats een burn uit te voeren. Ook zou je een aantal standaardobjecten beschikbaar kunnen maken (aarde, zon) waarvan alle data bekend is en in één keer geladen wordt. Of gewoon de mogelijkheid om in één keer het hele zonnestelsel te laden. Dat kan je dan weer de mogelijkheid geven om de stand van de planeten te laten zien op een bepaalde datum. En hetzelfde voor het aarde-maan systeem. Waar je dan weer de baan van bijvoorbeeld appollo 11 in zou kunnen laden. En een aantal standaardbanen om de aarde zoals GSO, GTO, ISS orbit, polar orbit, LEO etc. En dan in het planetenstelsel de baan van de voyagers.

Dus in het kort: burns kunnen uitvoeren en het programma allemaal standaard banen en objecten meegeven die door de gebruiker geladen kunnen worden.
Peter van Gemert

2e jaars Luchtvaart- en Ruimtevaarttechniek, TU Delft

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Baansimulatie: een kleine applet

Peter, allemaal steengoede suggesties. Dank je wel, dat zie ik graag!

De punten die je aandraagt heb ik inderdaad ook al in mijn hoofd zitten. Lijstje:

- Bibliotheek van standaardobjecten

- Mogelijkheid tot opslaan/laden van situaties via bestanden

- Missiemodus, waarin je een ruimtevaartuig een eenvoudig missieprofiel kunt laten vliegen

Bij vooral het laatste punt moet ik eens goed gaan bekijken op welke manier dat het prettigste in te bouwen is. Wat dat betreft zijn suggesties uiteraard ook welkom. pi.gif

Bedankt voor jullie positieve reacties! Leuk om te horen dat zo'n projectje wel gewaardeerd wordt. Het is de bedoeling dat dit zo'n nuttig programmaatje wordt, dat het op een gegeven moment in een minisursus ingebouwd kan worden om allerlei baanmechanicaconcepten toe te lichten.

Gebruikersavatar
Berichten: 305

Re: Baansimulatie: een kleine applet

Hi! Ziet er leuk uit!

Er lijkt nog wel een probleem te zijn met 'flicker' op het weergavescherm, en bij mij doen de knoppen aan de rechterkant het niet zo goed...

Misschien is het ook handig om voor het tweelichamenprobleem de massa, afstand en tijd te normaliseren in de integratieroutine, en de schaling in een postprocessingroutine op te nemen. Oh, en het is misschien ook handig om voor het tweelichamenprobleem de snelheden te definieren t.o.v. het zwaartepunt, en voor het drielichamenprobleem om de snelheid van het zwaartepunt van de massa's te berekenen en af te trekken van de beginsnelheden, zodat de massa's in beeld blijven als ze niet de ontsnappingssnelheid hebben. Voor het meerlichamenprobleem is het denk ik ook handig om de gelijkheid van Lagrange-Jacobi en de ongelijkheid van Sundman te berekenen (voordat de simulatie gestart wordt), zodat het programma van tevoren iets kan zeggen over de stabiliteit / instabiliteit. (secties 3.2, 3.3 van astrodynamica dl. 1) Om nog wat toe te voegen aan de suggestie van Peter: het zou ook leuk zijn als er bv. een aantal speciale resonantiegevallen in een bibliotheek zouden zitten.

Gebruikersavatar
Lorentziaan
Berichten: 1.433

Re: Baansimulatie: een kleine applet

Bedankt voor je feedback, dr. Who?! (haha, dat klinkt raar)

De problemen die je noemt (flicker, knoppen die niet goed reageren) komen me nog niet bekend voor. Kun je zien of er iets mafs gebeurt in de Java-console, een exception of zo?

Over de normalisatie: is een optie, maar ik vraag me af of het zinvol is bij meerdere objecten (zoals een model van het zonnestelsel bijvoorbeeld). Ik wil de code voorlopig nog zo algemeen mogelijk houden, en zolang het de prestaties niet hindert geldt hoe simpeler hoe beter - ook met het oog op bijdragen door anderen in de toekomst.

Ik heb al gedacht aan een "set barycenter speed to 0"-knopje, zodat een bewegend stelsel van objecten in beeld blijft staan. Of een 'volgmodus', waarbij de gebruiker een set objecten kan kiezen die dan getrackt wordt (leuk voor het bestuderen van een component van bijvoorbeeld een dubbel dubbelstersysteem).

De manier van snelheden definieren die je voorstelt (t.o.v. het gemeenschappelijk zwaartepunt) is goed te implementeren, denk ik - ik zal de interface met de knoppen aan de rechterkant wel even moeten wijzigen om ruimte te maken voor die extra opties, maar dat is geen probleem.

De gelijkheid van Lagrange-Jacobi en de ongelijkheid van Sundman zijn bij mij al danig weggezakt vrees ik (en ik heb mijn dictaat niet bij de hand) - is daarover het een en ander te lezen op internet? Of kun je hier misschien de strekking ervan samenvatten?

Gebruikersavatar
Moderator
Berichten: 51.270

Re: Baansimulatie: een kleine applet

(en is de stapgrootte van de integrator niet meer klein genoeg om de symplecticiteit te behouden),
zomaar tussendoor: heb je dit woord zelf verzonnen of bestaat het echt? Ik krijg er op google maar één hit voor, en dat is een verwijzing naar dit topic...... :D
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: Baansimulatie: een kleine applet

Heh Jan, met dat woord verwijs ik naar een eigenschap die 'symplectisch' genoemd wordt: los gezegd betekent dat, dat een 'symplectische integrator' de totale energie en impuls in het systeem behoudt (zolang het om een Hamiltoniaans systeem gaat). 'Symplecticiteit' leek me de logische verzelfstandiging van dat bijvoeglijke naamwoord. :D

Reageer