Witam,
piszę program symulujący ruch jednostajnie przyspieszony. Mam narysowaną oś drogi, po której przemieszcza się samochód(bitmapa).Przemieszczanie odbywa się w timerze o ustawionej wartości interval na 100 ms:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Zwiekszaj ilosc uzyc z kazdym wywolaniem metody
//ANIMACJA
t:=t+0.1;
S:=a*(t*t) / 2;
S:=S * 1.75; //1.75px = 1 m w rzeczywistosci
Image4.Left := Image4.Left + trunc(S); //przenies bitmapy
Image5.Left := Image5.Left + trunc(S);
if S < 0 then
begin
Image4.Visible := true;
Image5.Visible := false;
if Image4.Left < Image1.Left then
begin
Timer1.Enabled := false;
end;
end;
if S > 0 then
begin
Image4.Visible := false;
Image5.Visible := true;
if Image5.Left > Image1.Width-20 then
begin
Timer1.Enabled := false;
end;
end;
end;
</code=delphi>
Na Image4 jest bitmapa samochodem jadącym do tyłu,a na Image5 jest bitmapa z samochodem skierowanym w przód. Na komponencie image1 znajduje się oś czasu, na której 1m w rzeczywistości odpowiada 1,75 px. Jeżeli zmienną a ustawię na wartość 5, to wtedy przejazd takiego samochodu powinien był zająć 8s, a zajmuje niecałe 2s. Nie wiem co tutaj jest źle, dlatego byłbym wdzięczny za pomoc.
Pozdrawiam.
EDIT1://
Image1 - tutaj narysowana jest oś, po której przemieszczają się Image4 i Image5