moment, du gehst von nem Dreieck aus, dessen längste Seite dann den direkten weg darstellt, oder?
folglich hast du Punkt P1 mit den Koordinaten X und Y.
Dazu einen Punkt P2 mit den Koordinaten X2 und Y2.
Um ein Dreieck aufspannen zu können brauchst du also einen 3. Punkt.
Dieser hat dann die Koordinaten X2 und Y. dadurch erhältst du ein rechtwinkliges Dreieck.
Damit funzt dann der Satz.
Die 1. Seite des Dreiecks geht von P1 nach P2, die 2.Seite von P1 nach P3, und die 3.Seite von P2 nach P3.
du willst die Länge der 1.Seite haben. Also ist
d(1.Seite) = Wurzel aus (Seite2)² + (Seite3)²
Seite2 = der Betrag von (X - X2)
Seite3 = der Betrag von (Y - Y2)
in delphi:
Delphi-Quelltext
1: 2: 3:
| var Punkt2, Punkt3: TPoint; dweg := sqrt(sqr(abs(X-X2))+sqr(abs(Y-Y2))); |
falls dein xspeed, yspeed und meine Seiten 2 und 3 übereinstimmen war mein Kommentar bisher sinnlos.
du hast ja dann die Strecke. Wenn du jetzt nen Maßstab setzt, z.B. 1 m = 1 Pixel, und die Timer-Komponente von deiner Zeit hochrechnest kannst du die Geschwindigkeit in m/s berechnen:
Bsp: dweg = 10; Timer.intervall(vergangene Zeit zwischen den 2 Punkten) = 1000.
folglich hast du bei diesem Beispiel eine Geschwindigkeit von 10 meter / Sekunde
raufgerechnet auf km/h sind das dann 10 * 1000(für km) / 3600(für h) = 36 km/h
falls du weniger Zeit hast / den Maßstab anders wählst, musss du halt noch ein wenig mehr multiplizieren.
P.S.: Code nicht getestet, müsste aber stimmen