new Sim() | Konstruktor eines Sim Objektes |
AddTimeStepFunc() | Installiert TimeStep Callback-Funktionen |
AddFrameFunc() | Installiert Frame Callback-Funktionen |
AddResetFunc() | Installiert Reset Callback-Funktionen |
AddRunFunc() | Installiert Run Callback-Funktionen |
AddStopFunc() | Installiert Stop Callback-Funktionen |
Reset() | Setzt die Simulation zurück |
Stop() | Hält die Simulation an |
Run() | Startet die Simulation oder setzt sie fort |
Pause() | Stopt oder setzt die Simulation fort |
InitStates() | Initialisiert ein State Objekt |
CompNewStates() | Berechnet den nächsten State durch numerische Integration des aktuellen State |
new Sim( Params )
Erzeugt ein neues Sim Objekt. Es können mehrere Sim Objekte parallel betrieben werden. Ein einzelnes Sim Objekt kann aber auch mehrere Modelle verwalten, indem mehrere Callback-Funktionen installiert werden.
Die Simulationsparameter können über das Objekt SimParams definiert werden oder es können entsprechende Properties direkt verändert werden, z.T. während die Simulation läuft, oder über Funktionen gesetzt werden.
Ob ein Property während der Laufzeit geändert werden kann, wird beim entsprechenden Property beschrieben.
}
Sim.AddTimeStepFunc( funcs )
Installiert TimeStep Callback-Funktionen. Diese Funktionen werden für jeden Simulationsschritt der Schrittweite DeltaTime gerufen.
DeltaTime wird berechnet aus der Vorgabe TimeStep und der effektiv zur Verfügung stehenden Zeitspanne zwischen zwei Frames berechnet.
Note: TargetFPS erzwingt intern eine minimale Anzahl Frames. Wird diese Anzahl unterschritten, läuft die Simulation ab, als wären TargetFPS Frames vorhanden. Dies bewirkt jedoch, dass die Simulation effektiv langsamer läuft als gewünscht, weil die CPU nicht genug Rechenzeit zur Verfügung hat, um TargetFPS einzuhalten.
Sim.AddFrameFunc( funcs )
Installiert Frame Callback-Funktionen. Diese Funktionen werden gerufen, wenn das simulierte Objekt neu gezeichnet werden soll.
Das System ruft in regelmässigen Abständen eine interne Sim-Funktion auf, immer wenn der Bildschirm neu aufgebaut wird. Der Sim berechnet dann, wieviele Schritte der länge TimeStep nötig sind, damit die Simulation beim nächsten Frame Zeitsynchron mit dem Bildschirm, d.h. mit der Realzeit ist. Es werden enstprechend viele TimeStepFuncs aufgerufen, was in der Regel weniger Zeit beansprucht als zur Verfügung steht. Danach werden die Frame Callback-Funktionen aufgerufen, in denen der aktuelle Simulationsstand neu gezeichnet werden soll.
Sim.AddResetFunc( funcs )
Installiert Reset Callback-Funktionen. Diese Funktionen werden beim Aufruf von Reset() gerufen, oder optional beim Aufruf von Run().
Eine Reset Callback-Funktion kann verwendet werden, um dem Benutzer anzuzeigen, dass ein Simulations-Reset ausgeführt wurde.
Sim.AddRunFunc( funcs )
Installiert Run Callback-Funktionen. Diese Funktionen werden beim Aufruf von Run() gerufen, allenfalls nach Aufruf der StopFuncs und der ResetFuncs.
Note: Run() wird auch von der Funktion Pause() aufgerufen.
Die StopFuncs werden aufgerufen, wenn die Simulation gerade ausgeführt wird, also Running = true ist.
Die ResetFuncs werden aufgerufen, wenn beim Aufruf von Run() der entsprechende Parameter true gesetzt ist.
Eine Run Callback-Funktion kann verwendet werden, um dem Benutzer anzuzeigen, dass die Simulation gestartet wurde.
Sim.AddStopFunc( funcs )
Installiert Stop Callback-Funktionen. Diese Funktionen werden beim Aufruf von Stop() gerufen, oder allenfalls beim Aufruf von Run() und Pause(), wenn die Animation schon aktiv war.
Eine Stop Callback-Funktion kann verwendet werden, um dem Benutzer anzuzeigen, dass die Simulation gestoppt wurde.
Sim.Reset( )
Setzt die Simulation zurück.
Wenn die Simulation aktiv ist, wird sie zuvor mit Stop() angehalten. Diese Funktion kann auch implizit durch Aufruf von Run() oder Pause() aufgerufen werden.
Diese Funktion ruft die ResetFuncs und allenfalls zuvor die StopFuncs auf.
Sim.Stop( reset )
Hält die Simulation an und ruft die StopFuncs auf. Wenn reset = true gesetzt wird, wird anschliessend die Funktion Reset() gerufen.
Diese Funktion wird auch in Run() und Pause() allenfalls aufgerufen.
Sim.Run( reset )
Startet die Simulation oder setzt sie fort. Wenn reset = true gesetzt wird, wird die Simlation zuvor mit Stop() angehalten und mit Reset() zurückgesetzt.
Diese Funktion wird auch in Pause() aufgerufen.
Sim.Pause( reset )
Stopt oder setzt die Simulation fort, abhängig vom Zustand Running. Wenn reset = true gesetzt wird, wird beim Aufruf von Run() die Simulation zuvor zurückgesetzt.
Sim.InitStates( states )
Initialisiert das State-Objekt states. Diese Funktion sollte vor dem ersten Aufruf von CompNewStates() gerufen werden. In states.Accel muss die aktuelle Beschleunigung aller Objekte gespeichert sein.
}
states kann ein State Objekt oder ein Array von State Objekten sein. Die Properties des State Objektes können Zahlen oder Vektoren (Arrays aus Zahlen) sein.
Sim.CompNewStates( states )
Berechnet die neue Geschwindigkeit und Position von Objekten durch numerische Integration der aktuellen Beschleunigung und Geschwindigkeit.
Vor dem ersten Aufruf dieser Funktion muss InitStates() aufgerufen werden. Für eine Beschreibung des State Objektes siehe InitStates().
Anwendung: In den installierten TimeStepFuncs werden die Kräfte aller Objekte berechnet und daraus die Beschleunigungen. Die Beschleunigungen werden in states.Accel gespeichert. Durch Aufruf von CompNextStates() werden daraus die neuen Geschwindigkeiten states.Speed und Positionen states.Pos durch numerische Integration berechnet.