Hallo tar,
hier werden ja keine Hausaufgaben gelößt, dennoch möchte ich Dir einen Denkanstoß geben.
Der Waagrechte Wurf besteht ja aus zwei getrennten Bewegungen.
1. Bewegung in x-Richtung
Da diese Berechnung von einer reibungslosen Umgebung ausgeht, heißt das bei einer Geschwindigkeit V>0 ändert sich der Weg in X-Richtung linear (s = v*t). Bitte im Code beachten was passiert bei v = 0 !!!
2. Bewegung in y-Richtung
Da hier keine Anfangsgeschwindigkeit vorhanden ist (also Vy=0) wirkt nur die Erdbeschleunigung. Die Formel s = 1/2 * a *t^2 zeigt einem ja schon, dass der Weg in Y-Richtung von Zeitschritt zu Zeitschritt (Timer-Event) Größer wird (t geht quadratisch ein).
-> Folge wie auf der Abbildung zu sehen ist ist eine nach unten geöffnete Parabel.
Lösungsansatz:
Berechne im Timer mal nur mit diesen Formeln x und y. D.h.
Delphi-Quellcode:
// Vor der Timer-Routine:
TimerCount := 0;
v := ...
h := ...
//in der TimerRoutine:
inc(TimerCount);
t := TimerCount * Timer.Interval / 1000;
x := v * t; // Achtung: Hier muss danach noch die Koordinatenumrechnung auf die Canvas erfolgen
y := h - 0.5 * 9.81 * t; // Achtung: Hier muss noch die Koordinatenumrechnung auf die Canvas erfolgen
Das sollte, wie ich denke als Hilfestellung reichen
Gruß, Chris