Respuestas:
Se aplica un impulso instantáneamente, por lo que no depende del paso de tiempo. Usarías un impulso cuando quieras dar un impulso fijo de velocidad a algo, o la acción física ocurre demasiado rápido (ej. Balas / rebote de arma, colisiones, saltos, aceleraciones instantáneas).
Mientras tanto, una fuerza cambia la velocidad directamente proporcional al paso de tiempo. Lo usas para cosas que tienen un efecto a lo largo del tiempo (por ejemplo, gravedad, resortes largos, resistencia al aire).
matemáticamente impulse = force * time
; Y como referencia impulse = mass * velocity_change
, force = mass * acceleration
.
Si expande el primero, puede verificar esto:
impulse = force * time
->impulse = mass * acceleration * time
y desde acceleration * time = velocity_change
->impulse = mass * velocity_change
.Jeff Lake
vía Game Coding Complete 3rd Ed. Chapter 15: Collision and Simple Physics
incorrecta: (parafraseando)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
. Puede ir de cualquier manera: use el i
impulso para corregir las velocidades después de la colisión, o use directamente la fuerza de respuesta. Si recibe el impulso de otro lugar, puede convertirlo en un F_response
y funciona bien.
impulse = force * time
, el impulso también depende del tiempo (al menos si usa fuerzas para obtener la magnitud del impulso). De hecho, el impulso o impulso es útil para aplicar cambios dramáticos instantáneos. El ejemplo más popular proviene de las leyes de conservación del momento y la energía: physics.ohio-state.edu/~gan/teaching/spring99/C10.pdf .