Was ist der Unterschied zwischen einem Impuls und einer Kraft in Bezug auf eine Physik-Engine?


25

Was ist der Unterschied zwischen der Anwendung eines Impulses und der Anwendung einer Kraft in Bezug auf eine Physikmaschine?

Antworten:


25

Ein Impuls wird sofort angewendet, daher ist er nicht vom Zeitschritt abhängig. Sie würden einen Impuls verwenden, wenn Sie einer Sache einen festen Geschwindigkeitsschub verleihen möchten oder wenn die physische Aktion zu schnell abläuft (z. B. Kugeln / Abpraller, Kollisionen, Sprünge, sofortige Beschleunigung).

Währenddessen ändert eine Kraft die Geschwindigkeit direkt proportional zum Zeitschritt. Sie verwenden es für Dinge, die sich im Laufe der Zeit auswirken (z. B. Schwerkraft, lange Federn, Luftwiderstand).

Mathematisch impulse = force * time; Und als Referenz impulse = mass * velocity_change, force = mass * acceleration.

Wenn Sie die erste erweitern, können Sie dies überprüfen:

  • impulse = force * time ->
  • impulse = mass * acceleration * timeund seit acceleration * time = velocity_change->
  • impulse = mass * velocity_change.

1
Da impulse = force * timeder Impuls auch zeitabhängig ist (zumindest wenn Sie Kräfte einsetzen, um die Größe des Impulses zu ermitteln). Momentum oder Impuls sind in der Tat nützlich, um augenblickliche dramatische Änderungen vorzunehmen. Das bekannteste Beispiel stammt aus den Gesetzen der Impuls- und Energieerhaltung: physics.ohio-state.edu/~gan/teaching/spring99/C10.pdf .
Teodron

Also ist die Umsetzung per Jeff Lakevia Game Coding Complete 3rd Ed. Chapter 15: Collision and Simple Physicsfalsch: (paraphrasiert)Start with a Vector3d (or 2d depending) of forces F, Accumulate all Forces applied in a list, Accumulate All Impulses in a list add both totals to Forces, empty Impulses list, Accel = F / mass, Vel += Accel * deltaTime, Pos = Vel * time.
Casey

@Casey: so mache ich das In meinem Simulator kann ich den Starrkörper nicht verwenden, bei dem zwei Körper kollidieren und alles direkt funktioniert. Nach der Newtonschen Methode, die Beschleunigung zu integrieren, um die Geschwindigkeit und dann die Position zu finden. Meine Impulse abgeleitet von einer Abstoßungskraft (Antwort / Reaktionskraft ist ein Synonym in meinem Verständnis): i = F_response * DTime. Sie können zwischen zwei Möglichkeiten wählen: Verwenden Sie den iImpuls, um die Geschwindigkeiten nach der Kollision zu korrigieren, oder verwenden Sie direkt die Reaktionskraft. Wenn Sie den Impuls von irgendwo anders bekommen, können Sie ihn in einen umwandeln F_responseund es funktioniert OK.
Teodron

@teodron Danke, das wirft eine separate Frage auf, die ich separat stellen werde. : P
Casey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.