¿Cuál es la diferencia entre una aplicación de un impulso y una aplicación de una fuerza en relación con un motor de física?
25
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
.
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 .Jeff Lake
víaGame 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 eli
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 unF_response
y funciona bien.