Réponses:
Une impulsion est appliquée instantanément, elle ne dépend donc pas du pas de temps. Vous utiliseriez une impulsion lorsque vous souhaitez donner un coup de pouce fixe à quelque chose, ou l'action physique se produit trop rapidement (ex. Balles / ricochet de canon, collisions, sauts, accélérations instantanées).
Pendant ce temps, une force modifie la vitesse directement proportionnelle au pas de temps. Vous l'utilisez pour des choses qui ont un effet dans le temps (ex. Gravité, longs ressorts, résistance à l'air).
Mathématiquement impulse = force * time
; Et pour référence impulse = mass * velocity_change
, force = mass * acceleration
.
Si vous développez le premier, vous pouvez vérifier ceci:
impulse = force * time
->impulse = mass * acceleration * time
et depuis acceleration * time = velocity_change
->impulse = mass * velocity_change
.Jeff Lake
via est donc Game Coding Complete 3rd Ed. Chapter 15: Collision and Simple Physics
incorrecte: (paraphrase)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
. Vous pouvez aller dans les deux sens: utilisez l' i
impulsion pour corriger les vitesses après la collision, ou utilisez directement la force de réponse. Si vous obtenez l'impulsion d'un autre endroit, vous pouvez le convertir en un F_response
et cela fonctionne bien.
impulse = force * time
, l'impulsion dépend également du temps (au moins si vous utilisez des forces pour obtenir l'amplitude de l'impulsion). En effet, l'élan ou l'impulsion est utile pour appliquer des changements dramatiques instantanés. L'exemple le plus populaire provient des lois de conservation de la quantité de mouvement et de l'énergie: physics.ohio-state.edu/~gan/teaching/spring99/C10.pdf .