Um das Ganze zu vereinfachen erstellt man sich ein festes Zeitraster für das man die eigentlichen Berechnungen durchführt. Dadurch können einige Werte vorberechnet oder fest vorgegeben werden und meistens sind es dann simple Additionen für die Berechnung der neuen Positionswerte.
Vor jedem Zeichnen bestimmt man die Zeit die seit dem letzten Zeichnen vergangen ist und bestimmt daraus die Anzahl der Zeitraster (x). Nun werden die Berechnungen einfach (x) mal durchgeführt und dann wird dieser Zustand gezeichnet. Die noch verbleibende Restzeit wird bei dem nächsten Durchgang berücksichtigt.
Nehmen wir an, das Zeitraster legen wir auf 20ms fest und ca. alle 40-60ms können wir neu zeichnen:
Code:
ZeitRaster = 20
// erster Durchgang
ZeitReserve = 0
ZeitVergangen = 45
Frames = ( ZeitReserve + ZeitVergangen ) div ZeitRaster = 2
ZeitReserve = ZeitReserve + ZeitVergangen - Frames * ZeitRaster = 5
// 2x Frames berechnen und anzeigen
// zweiter Durchgang
ZeitVergangen = 58
Frames = ( ZeitReserve + ZeitVergangen ) div ZeitRaster = 3
ZeitReserve = ZeitReserve + ZeitVergangen - Frames * ZeitRaster = 2
// 3x Frames berechnen und anzeigen
...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)