Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Allgemeine Beschleunigungsprozedur

  Alt 22. Mär 2007, 22:07
Zitat von Flo.Hoe:
Und wie kann ich ohne Timer auskommen?
Beschleunigte Bewegungen (zumindest gleichmässig beschleunigte Bewegungen, für andere ist a auch zeitabhängig) lassen sich immer wie folgt darstellen:

Code:
x(t) = ½at² + v0*t + x0
Und die Zeit wächst linear. Also wirds einfach: Du brauchst nur eine Schleife durchlaufen und die Zeit, die sich ja bei jedem Durchlauf der Schleife erhöht, als Parameter t in die Gleichung einzusetzen.

That's it.

Delphi-Quellcode:
procedure Move (picture : TPicture) ;
var
 t0 : integer ;
 t : double ;
begin
    t0 := gettickcount ; // in ms
    while True do begin
       t := (gettickcount - t0) / 1000 ;
       x := 1/2 * a * t * t + v0 * t + x0 ; // a, v0 und x0 sind Konstanten ;
       picture.left := x ;
       // Eventuell ein Sleep einbauen, wenn die Prozessorlast zu hoch steigt
       // Und eine Abbruchbedingung der Schleife
    end ;
end ;
  Mit Zitat antworten Zitat