Wie berechnet man die Verzögerung, die benötigt wird, um eine bestimmte Geschwindigkeit über eine bestimmte Distanz zu erreichen?
Ich habe die typischen physikalischen Gleichungen dafür ausprobiert, aber keine von ihnen funktioniert wirklich, weil die Gleichungen mit konstanter Beschleunigung umgehen und meine sich ändern müssen, um richtig zu funktionieren. Grundsätzlich habe ich ein Auto, das in einem großen Geschwindigkeitsbereich fahren kann und langsamer werden und über eine bestimmte Distanz und Zeit anhalten muss, wenn es das Ende seines Weges erreicht.
Also habe ich:V0
oder die aktuelle GeschwindigkeitVf
oder die Geschwindigkeit, die ich erreichen möchte (normalerweise 0)t
oder die Zeit, die ich brauche, um das Ende meines Weges zu erreichend
, oder die Entfernung, die ich zurücklegen möchte, wenn ich von V0 nach Vf wechsle
Ich will rechnena
oder die Beschleunigung, die benötigt wird, um von V0 nach Vf zu gelangen
Der Grund, warum dies eine programmierspezifische Frage wird, liegt darin, dassa
muss bei jedem einzelnen Zeitschritt neu berechnet werden, wenn das Auto anhält. So,V0
ständig wird geändert zu werdenV0
vom letzten Zeitschrittplus
dasa
Das wurde im letzten Zeitschritt berechnet. Im Grunde genommen wird es langsam anhalten und dann plötzlich anhalten, ähnlich wie ein Auto im wirklichen Leben.
EDITS:
Okay, danke für die tollen Antworten. Vieles, was ich brauchte, war nur ein bisschen Nachdenken. Lassen Sie mich jetzt genauer darauf eingehen, da ich noch einige Ideen von Ihnen allen habe:
ich habe ein Autoc
das ist64 pixels
von seinem Bestimmungsort, sod=64
. Es fährt an2 pixels per timestep
, wo eintimestep is 1/60 of a second
. Ich möchte die Beschleunigung findena
das bringt es auf eine Geschwindigkeit von0.2 pixels per timestep
Bis es gereist istd
.d = 64 //distance
V0 = 2 //initial velocity (in ppt)
Vf = 0.2 //final velocity (in ppt)
Auch weil dies in einer Spieleschleife passiert, eine Variabledelta
wird an jede Aktion durchgereicht, die diemultiple of 1/60s that the last timestep took
. Mit anderen Worten, wenn es 1 / 60s dauerte, danndelta
ist 1.0, wenn es 1 / 30s gedauert hatdelta
ist 0,5. Bevor die Beschleunigung tatsächlich angewendet wird, wird sie mit diesem Deltawert multipliziert. In ähnlicher Weise wird, bevor sich das Auto wieder bewegt, seine Geschwindigkeit mit dem Delta-Wert multipliziert. Das ist ziemlich normal, aber es könnte Probleme mit meinen Berechnungen verursachen.