Einzelnen Beitrag anzeigen

Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: canvas - waagerechter wurf mit timer

  Alt 21. Jun 2007, 12:26
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
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat