¿Cuál es la diferencia entre un impulso y una fuerza relacionada con un motor de física?

25

¿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?

Casey
fuente

Respuestas:

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 * timey desde acceleration * time = velocity_change->
  • impulse = mass * velocity_change.
csiz
fuente
1
Desde entonces 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 .
teodron
Así es la implementación por Jeff Lakevía Game Coding Complete 3rd Ed. Chapter 15: Collision and Simple Physicsincorrecta: (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.
Casey
@Casey: así es como lo hago. En mi simulador no puedo usar la carcasa rígida donde dos cuerpos chocan y todo funciona directamente. Siguiendo la forma newtoniana de integrar la aceleración para encontrar la velocidad y luego la posición. Mis impulsos se derivan de una fuerza de repulsión (fuerza de respuesta / reacción es un sinónimo en mi entendimiento): i = F_response * DTime. Puede ir de cualquier manera: use el iimpulso 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_responsey funciona bien.
teodron
@teodron Gracias, eso plantea una pregunta por separado que haré ... por separado. : P
Casey