Berechnen der Position eines Beschleunigungskörper nach einer bestimmten Zeit [geschlossen]

StackOverflow https://stackoverflow.com/questions/153507

  •  03-07-2019
  •  | 
  •  

Frage

Wie kann ich die Position eines Beschleunigungskörpers berechnen (zum Beispiel ein Auto) nach einer bestimmten Zeit (beispielsweise 1 Sekunde)?

Für einen sich bewegenden Körper, dass es nicht zu beschleunigen, ist es eine lineare Beziehung, so nehme ich an für eine Beschleunigung der Körper es irgendwo ein Quadrat handelt.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Die Gleichung ist: s = ut + (1/2) a ^ 2 t

, wobei die Position ist, ist u Geschwindigkeit bei t = 0, t die Zeit und a eine konstante Beschleunigung.

Wenn beispielsweise ein Fahrzeug still startet und beschleunigt zwei Sekunden lang mit einer Beschleunigung von 3 m / s ^ 2, bewegt es sich (1/2) * 3 * 2 ^ 2 = 6m

Diese Gleichung geht von der Integration der Gleichungen analytisch besagt, daß die Geschwindigkeit der geschwindigkeits of-Änderung der Position und Beschleunigung ist die Rate einer Änderung der Geschwindigkeit.

In der Regel in einer Spiel-Programmierung Situation würde man eine etwas andere Formulierung verwenden: bei jedem Rahmen, die Variablen für Geschwindigkeit und Position integriert sind nicht analytisch, sondern numerisch:

s = s + u * dt;
u = u + a * dt;

wobei dt die Länge eines Rahmens ist (gemessen mit Hilfe eines Timers: 1/60-Sekunde oder so). Dieses Verfahren hat den Vorteil, dass die Beschleunigung in der Zeit variieren kann.

Bearbeiten Ein paar Leute haben bemerkt, dass das Euler-Verfahren der numerischen Integration (wie hier gezeigt), obwohl einfachsten mit, zu zeigen, ziemlich schlechte Genauigkeit hat. Siehe Geschwindigkeit Verlet (oft in Spielen verwendet) und 4. Ordnung Runge Kutta (a 'Standard' Methode für wissenschaftliche Anwendungen) für verbesserte Algorithmen.

Andere Tipps

Nun, es hängt davon ab, ob oder ob nicht die Beschleunigung konstant ist. Wenn es es ist einfach

s = ut+1/2 at^2

Wenn eine nicht konstant ist, müssen Sie numerisch integriert zu. Jetzt gibt es eine Vielzahl von Methoden und keiner von ihnen tun dies mit der Hand auf ihre Richtigkeit schlagen, da sie alle letztlich Näherungslösungen.

Die einfachste und am wenigsten genau ist Eulersche Methode . Hier können Sie Zeit in einzelne Stücke genannt Zeitschritte unterteilen, und führen

v[n] = v[n-1] * t * a[t]

n ist Index ist t Größe eines Zeitschritts. Die Position wird in ähnlicher Weise aktualisiert. Dies ist nur dann wirklich gut für jene Fälle, in denen Genauigkeit nicht alles ist, was wichtig ist. Eine spezielle Version von Euler-Verfahren wird eine exakte Lösung für Wurfbewegung ergeben (siehe Wiki), also, während diese Methode roh ist, kann es für einige suituations perfekt sein.

Die häufigste numerischen Integrationsverfahren in Spielen verwendet und in einigen Chemie-Simulationen sind Geschwindigkeit Verlet , das ist eine besondere Form der allgemeineren Verlet-Methode. Ich würde dieses Hotel empfehlen, wenn die Eulersche zu grob ist.

Sie können es Google. Ich habe dies gefunden: http: // www. ugrad.math.ubc.ca/coursedoc/math101/notes/applications/velocity.html

Aber wenn Sie nicht lesen wollen, es ist:

  

p (t) = x (0) + v (0) * t + (1/2) a t ^ 2

Dabei steht

  • p (t) = Position zum Zeitpunkt t
  • x (0) = die Position zum Zeitpunkt Null
  • v (0) = Geschwindigkeit zum Zeitpunkt Null (wenn Sie nicht über eine Geschwindigkeit haben, können Sie diesen Begriff ignorieren können)
  • a = die Beschleunigung
  • t = Ihr aktuelles itme

Angenommen, Sie mit konstanter Beschleunigung zu tun haben, die Formel lautet:

= Abstand (initial_velocity * Zeit) + (Beschleunigungszeit * * Zeit) / 2

Dabei steht

Abstand ist die zurückgelegte Strecke

initial_velocity ist die Anfangsgeschwindigkeit (Null, wenn der Körper intially in Ruhe ist, so dass Sie diesen Begriff in diesem Fall fallen können)

Zeit ist die Zeit

Beschleunigung die (konstante) Beschleunigung

Achten Sie darauf, die richtigen Einheiten zu verwenden, bei der Berechnung, das heißt Meter, Sekunden und so weiter.

Ein sehr gutes Buch zum Thema ist Physik für Spiele-Entwickler .

Unter der Annahme einer konstanten Beschleunigung und Anfangsgeschwindigkeit v0,

x(t) = (1/2 * a * t^2) + (v0 * t)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top