Respostas:
Um impulso é aplicado instantaneamente, para que não dependa da etapa do tempo. Você usaria um impulso quando quiser dar um impulso fixo de velocidade a alguma coisa, ou a ação física acontecer muito rapidamente (por exemplo, balas / ricochete de arma, colisões, saltos, acelerações instantâneas).
Enquanto isso, uma força altera a velocidade diretamente proporcional ao intervalo de tempo. Você o utiliza para itens com efeito de excesso de tempo (por exemplo, gravidade, molas longas, resistência do ar).
Matematicamente impulse = force * time
; E para referência impulse = mass * velocity_change
, force = mass * acceleration
.
Se você expandir o primeiro, poderá verificar isso:
impulse = force * time
->impulse = mass * acceleration * time
e desde acceleration * time = velocity_change
->impulse = mass * velocity_change
.Jeff Lake
via Game Coding Complete 3rd Ed. Chapter 15: Collision and Simple Physics
incorreta: (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
. Você pode ir de qualquer maneira: use o i
impulso para corrigir as velocidades após a colisão ou use diretamente a força de resposta. Se você receber o impulso de outro lugar, poderá convertê-lo para um F_response
e ele funcionará bem.
impulse = force * time
, o impulso também depende do tempo (pelo menos se você usar forças para obter a magnitude do impulso). De fato, o momento ou impulso é útil para aplicar mudanças dramáticas instantâneas. O exemplo mais popular vem das leis de conservação do momento e da energia: physics.ohio-state.edu/~gan/teaching/spring99/C10.pdf .