WaBis

walter.bislins.ch

Sim: Funktionen

Sim : Demo | Download | Anwendung | Properties | Funktionen
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()

new Sim( Params )

Params: SimParams

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.

SimParams

SimParams = {
TimeStep: Number; Optional; Default = 0.001
Zeitintervall Δt einer Simulation
TimeSpeed: Number; Optional; Default = 1
Simulations-Geschwindigkeit
TargetFPS: Number; Optional; Default = 25
Simulation soll mindestens diese Anzahl Bilder simulieren
SimObj: Object; Optional; Default = null
Hier kann eine Referenz auf das simulierte Objekt gespeichert werden
TimeStepFuncs: Function(Sim) or Array of Function(Sim); Optional; Default = []
Diese Funktionen werden für jeden Simulationsschritt gerufen. Siehe auch AddTimeStepFunc()
FrameFuncs: Function(Sim) or Array of Function(Sim); Optional; Default = []
Diese Funktionen werden gerufen, wenn das simulierte Objekt neu gezeichnet werden soll. Siehe auch AddFrameFunc()
ResetFuncs: Function(Sim) or Array of Function(Sim); Optional; Default = []
Diese Funktionen werden beim Aufruf von Reset() gerufen. Siehe auch AddResetFunc()
RunFuncs: Function(Sim) or Array of Function(Sim); Optional; Default = []
Diese Funktionen werden beim Aufruf von Run() gerufen. Siehe auch AddRunFunc()
StopFuncs: Function(Sim) or Array of Function(Sim); Optional; Default = []
Diese Funktionen werden beim Aufruf von Stop() gerufen. Siehe auch AddStopFunc()
EnableStatistics: Boolean; Optional; Default = false
Berechnung der Statistik ein-/ausschalten.
NAvgSamples: Number; Optional; Default = 25
Anzahl Werte, die zu einem Mittelwert zusammengerechnet werden
SampleTime: Number; Optional; Default = 500
Zeitraum der für die Berechnung von Min-/Max-Werten verwendet wird in ms
}

Sim.AddTimeStepFunc()

Sim.AddTimeStepFunc( funcs )

funcs: Function(Sim) or array of Function

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()

Sim.AddFrameFunc( funcs )

funcs: Function(Sim) or array of Function

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()

Sim.AddResetFunc( funcs )

funcs: Function(Sim) or array of Function

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()

Sim.AddRunFunc( funcs )

funcs: Function(Sim) or array of Function

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()

Sim.AddStopFunc( funcs )

funcs: Function(Sim) or array of Function

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()

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()

Sim.Stop( reset )

reset: Boolean; Optional; Default = false

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()

Sim.Run( reset )

reset: Boolean; Optional; Default = false

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()

Sim.Pause( reset )

reset: Boolean; Optional; Default = false

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()

Sim.InitStates( states )

states: State Objekt or array of State Objekt

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.

State = {
OldAccel: Number or array of Numer;
wird zum Speichern der letztem Accel verwendet
Accel: Number or array of Numer;
aktuelle Beschleunigung aller Objekte
Speed: Number or array of Numer;
hier werden die neu berechneten Geschwindigkeiten aller Objekte gespeichert
Pos: Number or array of Numer;
hier werden die neu berechneten Position aller Objekte gespeichert
}

states kann ein State Object oder ein Array von State Objekten sein. Die Properties des State Objektes können Zahlen oder Vektoren (Arrays aus Zahlen) sein.

Sim.CompNewStates()

Sim.CompNewStates( states )

states: State Objekt or array of State Objekt

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.

Weitere Infos zur Seite
Erzeugt Donnerstag, 13. Juli 2017
von wabis
Zum Seitenanfang
Geändert Sonntag, 15. Juli 2018
von wabis