Entwickler-Ecke
Sonstiges (Delphi) - Drehbewegungsgeschwindigkeit...
Rool - Do 27.02.03 19:47
Titel: Drehbewegungsgeschwindigkeit...
Ich habe eine Scheibe, die der User per Maus dreht! Das klappt soweit alles bestens, die aktuelle Gradzahl wird an einer scrollbar veranschaulicht, dessen Button sich (wenn der User mit regelmässiger Bewegung dreht) mit regelmäßiger Geschwindigkeit von links (0) bis rechts (360) bewegt. Dann fängt er wieder links an!
Jetzt will ich die aktuelle Drehbewegungsgeschwindigkeit messen. Das heisst, wenn sich der Scrollbarwert schneller und mit größeren Schritten ändert, ist die Geschwindigkeit schneller.
Das ganze soll jetzt aber weich verlaufen. Ich hab im Moment n Timer, der immer den Unterschied des letzten Wertes mit dem aktuellen vergleicht. Sobald der User die Scheibe langsam dreht ist der Aktuelle minus den alten Wert manchmal null, deswegen ist der Speed dann plätzlich null. -> Der speed "flackert" die ganze zeit.
Wie kann ich das beheben?
(über Code-Bsp. würde ich mich auch sehr freuen...)
Christian S. - Do 27.02.03 20:01
Hi!
Wie wäre es hiermit?
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| var Form1: TForm1; alter_winkel : Integer; alte_zeit : Integer; first_change : Boolean;
implementation
{$R *.dfm}
procedure TForm1.ScrollBar1Change(Sender: TObject); VAR omega : Real; aktuelle_zeit : Integer; begin if not first_change then begin aktuelle_zeit:=GetTickCount; if aktuelle_zeit = alte_zeit then aktuelle_zeit:=alte_zeit+1; omega:=(Scrollbar1.Position-alter_winkel)/(aktuelle_zeit-alte_zeit)*1000; edit1.text:=FloatToStr(omega); end; if first_change then first_change:=False; alter_winkel:=ScrollBar1.Position; alte_zeit:=GetTickCount; end;
procedure TForm1.FormCreate(Sender: TObject); begin first_change:=true; end; |
MfG,
Peter
P.S.: Omega ist in Grad/s angegeben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!