Antworten:
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 * time
und seit acceleration * time = velocity_change
->impulse = mass * velocity_change
.Jeff Lake
via Game Coding Complete 3rd Ed. Chapter 15: Collision and Simple Physics
falsch: (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.
i = F_response * DTime
. Sie können zwischen zwei Möglichkeiten wählen: Verwenden Sie den i
Impuls, 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_response
und es funktioniert OK.
impulse = force * time
der 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 .