Wie kann die Verzögerung berechnet werden, um eine bestimmte Geschwindigkeit über eine bestimmte Entfernung zu erreichen?

8

Ich habe die typischen physikalischen Gleichungen dafür ausprobiert, aber keine von ihnen funktioniert wirklich, weil die Gleichungen mit konstanter Beschleunigung umgehen und meine müssen sich ändern, um richtig zu funktionieren. Grundsätzlich habe ich ein Auto, das mit einer großen Bandbreite an Geschwindigkeiten fahren kann und über eine bestimmte Strecke und Zeit am Ende seines Weges verlangsamen und anhalten muss.

Also, ich habe:
V0 , oder die aktuelle Geschwindigkeit von Vf , oder die Geschwindigkeit, die ich erreichen möchte (normalerweise 0)
t , oder die Menge an Zeit I möchte nehmen, um das Ende meines Weges zu erreichen. d , oder die Entfernung, die ich gehen möchte, wenn ich von V0 nach Vf wechsele.

Ich möchte
a berechnen, oder die Beschleunigung, die benötigt wird, um von V0 nach Vf zu gehen

Der Grund, warum dies zu einer programmspezifischen Frage wird, liegt darin, dass a in jedem einzelnen Schritt neu berechnet werden muss, wenn das Auto anhält. Also, V0 wird ständig geändert, um V0 vom letzten Zeitschritt plus der a zu sein, die im letzten Zeitschritt berechnet wurde. Also im Wesentlichen wird es anfangen langsam zu stoppen, dann wird es schließlich abrupt stoppen, irgendwie wie ein Auto im wirklichen Leben.

EDITS:
Alles klar, danke für die tollen Antworten. Eine Menge von dem, was ich brauchte, war nur eine Hilfe, die darüber nachdachte. Lassen Sie mich jetzt genauer darauf eingehen, dass ich von Ihnen allen noch ein paar Ideen habe:

Ich habe ein Auto c das ist 64 pixels von seinem Ziel, also d=64 . Es fährt bei 2 pixels per timestep , wo ein timestep is 1/60 of a second . Ich möchte die Beschleunigung a finden, die es auf eine Geschwindigkeit von 0.2 pixels per timestep bringt, bis es d erreicht hat.
d = 64 //distance
V0 = 2 //initial velocity (in ppt)
Vf = 0.2 //final velocity (in ppt)

Auch weil dies in einer Spielschleife passiert, wird eine Variable delta an jede Aktion weitergegeben, die multiple of 1/60s that the last timestep took ist. Mit anderen Worten, wenn 1 / 60s verwendet wurde, dann ist delta 1,0, wenn es 1 / 30s dauerte, dann ist delta 0,5. Bevor die Beschleunigung tatsächlich angewendet wird, wird sie mit diesem Delta-Wert multipliziert. In ähnlicher Weise wird, bevor sich das Fahrzeug wieder bewegt, seine Geschwindigkeit mit dem Delta-Wert multipliziert. Das ist ziemlich normal, aber es könnte sein, was Probleme mit meinen Berechnungen verursacht.

    
Eli 06.07.2009, 17:03
quelle

6 Antworten

9

Lineare Beschleunigung a für eine Strecke d von einer Startgeschwindigkeit Vi bis zu einer Endgeschwindigkeit Vf :

%Vor%

BEARBEITEN :

Lassen Sie mich nach Ihrer Bearbeitung prüfen, was Sie brauchen ...

Wenn Sie diese Formel verwenden und Ihre Zahlen eingeben, erhalten Sie eine konstante Beschleunigung von -0,0309375. Lassen Sie uns dieses Ergebnis weiterhin 'a' nennen.

Was Sie zwischen den Zeitstempeln (Rahmen?) brauchen, ist nicht die Beschleunigung, sondern der neue Standort des Fahrzeugs, oder? Sie verwenden also die folgende Formel:

%Vor%

Dabei ist Sd der aktuelle Abstand von der Startposition zum aktuellen Frame / Moment / sum_of_deltas, Vi ist die Startgeschwindigkeit und t ist die Zeit seit dem Start.

Damit ist Ihre Dezeleration konstant, aber selbst wenn sie linear ist, passt sich Ihre Geschwindigkeit Ihren Einschränkungen an.

Wenn Sie eine nicht-lineare Dezeleration wünschen, können Sie eine nichtlineare Interpolationsmethode finden und nicht die Beschleunigung interpolieren, sondern einfach zwischen zwei Punkten positionieren.

%Vor%     
Kenan E. K. 06.07.2009, 17:24
quelle
6

Die vier Bedingungen, die Sie angeben, sind ein Vielfaches für ein lineares System (eines mit konstanter Beschleunigung), wo drei beliebige Variablen ausreichen würden, um die Beschleunigung zu berechnen und dadurch die vierten Variablen zu bestimmen. Das System ist jedoch unter - spezifiziert für ein vollständig allgemeines nichtlineares System - es kann unendlich unzählige Möglichkeiten geben, die Beschleunigung über die Zeit zu ändern, während alle gegebenen Einschränkungen erfüllt werden. Kannst du vielleicht besser angeben, welche Art von Kurve sich im Laufe der Zeit beschleunigen soll?

Mit Index 0 bedeutet "am Anfang", 1 bedeutet "am Ende" und D für Delta bedeutet "Variation" bei einer sich linear ändernden Beschleunigung

%Vor%

wo a0 und a1 die zwei Parameter sind, die wir berechnen wollen, um all die verschiedenen Bedingungen zu erfüllen, berechne ich (wenn es keinen Fehltritt gegeben hat, wie ich es alles von Hand gemacht habe):

%Vor%

Da DV, Dt und Ds alle gegeben sind, bleiben 2 lineare Gleichungen in den Unbekannten a0 und a1, so dass Sie nach diesen Gleichungen suchen können (aber ich lasse die Dinge in dieser Form, um die Überprüfung meiner Ableitungen zu erleichtern) !!!).

Wenn Sie bei jedem Schritt die richtigen Formeln anwenden, um Raum- und Geschwindigkeitsänderungen zu berechnen, sollte es keinen Unterschied machen, ob Sie a0 und a1 einmal oder für alle auf der Grundlage der verbleibenden Dt, Ds neu berechnen oder neu berechnen und DV.

    
Alex Martelli 06.07.2009 17:09
quelle
5

Wenn Sie versuchen, eine zeitabhängige Beschleunigung in Ihren Gleichungen zu simulieren, bedeutet das nur, dass Sie davon ausgehen sollten. Sie müssen F = ma zusammen mit den Beschleunigungsgleichungen integrieren, das ist alles. Wenn die Beschleunigung nicht konstant ist, müssen Sie nur ein Gleichungssystem statt nur eines lösen.

Es sind also wirklich drei Vektorgleichungen, die Sie gleichzeitig integrieren müssen: eine für jede Komponente von Verschiebung, Geschwindigkeit und Beschleunigung oder insgesamt neun Gleichungen. Die Kraft als eine Funktion der Zeit wird eine Eingabe für Ihr Problem sein.

Wenn Sie eine 1D-Bewegung annehmen, sind Sie auf drei simultane Gleichungen reduziert. Die für Geschwindigkeit und Verschiebung sind beide ziemlich einfach.

    
duffymo 06.07.2009 17:11
quelle
1

Im echten Leben hängt die Bremswirkung eines Autos vom Druck auf das Bremspedal ab, von jeder Motorbremsung, von den Oberflächenbedingungen und so weiter: Auch das "Greifen" am Ende, wenn das Auto wirklich stoppt. Das Modellieren ist kompliziert und Sie werden wahrscheinlich keine guten Antworten auf einer Programmierwebseite finden. Finden Sie einige Automobilingenieure.

Abgesehen davon weiß ich nicht, wonach Sie fragen. Versuchen Sie, einen Bremszeitplan zu bestimmen? Da gibt es eine gewisse Verzögerung beim Ausrollen und Bremsen? Im realen Fahren wird bei diesen Manövern normalerweise nicht die Zeit berücksichtigt, sondern die Entfernung.

Soweit ich das beurteilen kann, ist Ihr Problem, dass Sie nicht nach etwas Bestimmtem fragen, was darauf hindeutet, dass Sie wirklich nicht herausgefunden haben, was Sie eigentlich wollen. Wenn Sie dafür ein Beispiel verwenden würden, könnten wir Ihnen wahrscheinlich helfen. So, wie es ist, haben Sie die Nackten eines Problems, das entweder überbestimmt oder viel zu eng begrenzt ist, und es gibt wirklich nichts, was wir damit tun können.

    
David Thornley 06.07.2009 17:28
quelle
1

Wenn Sie von 10 m / s auf 0 m / s in 1 m mit linearer Beschleunigung gehen müssen, benötigen Sie 2 Gleichungen. Finde zuerst die Zeit (t), die es braucht, um aufzuhören.

%Vor%     
user3769184 23.06.2014 23:41
quelle
0

Das Problem ist entweder zu stark eingeschränkt oder zu eng (a ist nicht konstant? Gibt es ein Maximum a?) oder mehrdeutig.

Die einfachste Formel wäre a = (Vf-V0) / t

Edit: Wenn die Zeit nicht beschränkt ist und die Distanz s beschränkt ist und die Beschleunigung konstant ist, dann sind die relevanten Formeln s = (Vf + V0) / 2 · t, t = (Vf - V0) / a, was vereinfacht zu a = (Vf 2 - V0 2 ) / (2s).

    
Jason S 06.07.2009 17:10
quelle

Tags und Links