Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Momentum Exchange In Real Collisions

  1. Jun 19, 2007 #1

    Was doing a bit of work the other day and I was looking at collisions. Thinking about real collisions compared to ideal ones and the thing in particular which stands out is that often when two vehicles (for example) collide the striking vehicle will continue to travel some distance in its original direction. Thus I deduce it has retained some of its initial momentum both in size and direction.

    Therefore the transfer of energy and momentum is not instantaneous, it is not instant and total. I deduce that it is due to crumpling and energy absorption rates of the vehicle's bodywork which causes this to happen.

    So how would one go about modelling this non-ideal momentum transfer if one wanted to predict how two real vehicles would react when one hits the other? How do game programmers do it?

    I would guess perhaps that a rough coefficient figure could be deduced depending upon where each vehicle was hit and the size and construction of the vehicle in question.

    It struck me as a rather tricky situation. I've yet to figure out how to model the continuation of the initial vehicle doing the striking.

    Perhaps if I can come up with a realistic means of modelling real momentum/energy transfer between the two vehicles then I could move each per unit time an appropriate amount depending on how the momentum had been shared between them.

    If I used a small update time of say 10ms I could compute their new positions and rotations for each update time and then re-compute them for the next update time if they're still in contact with each other, given that any momentum vector associated with them would be stored in a dedicated variable.

    I hope that makes some sense. I've got my mind into several things at the moment so I hope that doesn't sound like garbage :wink:
  2. jcsd
  3. Jun 19, 2007 #2


    User Avatar
    Homework Helper

    inelastic collisions

    Consider a collision in one dimention between a moving body (A, with velocity v_A and mass m) and a stationary body (B, with velocity zero and the same mass m). Then, for the case of an *elastic* collision, you have two conservation laws (kinetic energy and momentum) which give you two equations which can only be satisfied if either the final velocity of A is still v (i.e. no collision occured) or if the final velocity of A is zero (and the velocity of B is v). Now, still for the case of elastic collisions where B is initially at rest, if the masses of the two bodies are not equal then the final velocity of A will not be zero.

    But let's continue to treat the equal mass case for *inelastic* collisions. In this case you can not pretend that kinetic energy is conserved so you are at a loss because you have too few equations to solve the problem... except in the case of a "completely inelastic collision" where you come up with a 2nd equation by supposing that the two bodies A and B "stick together" and thus end up with the same velocity after the collision. In this case the final velocity of A is not zero (it continues forward with a velocity of v/2 for the equal mass case.)

    Game programmers probably interpolate in some ad hoc way between the two limits of completely elastic and completely inelastic taking some physics into account via the difference in masses of the bodies. I.e. for completely elastic collision between bodies of mass m_A and m_B the final velocity of A would be

    v_A_final = v* ((m_A - m_B)/(m_A + m_B)

    for a completely inelastic collision we'd have instead

    v_A_final = v* (m_A/(m_A+m_B))

    so, you could just perhaps use whatever interpolation you like, for example linear, to simulate your video game collision

    v_A_final = v* ((m_A - (x*m_B)) / (m_A + m_B) )

    where you vary x between 0 and 1 depending on how you feel that day with x=0 simulating perfectly inelastic and x=1 simulating perfetly elastic.
  4. Jun 20, 2007 #3
    An elegant and graceful reply! I'll probably have some questions about it when I've worked through it but for now thanks alot :wink:
  5. Jun 20, 2007 #4
    Thanks again that's a great reply. Just lost a big reply due to a typo on the keyboard. Not sure what I pressed?

    Could I evaluate (using x compensation) momentum vectors for vehicles and compute their respective speeds as a result of momentum changes?

    Would this enable me to simply make collision computations an exercise of adding momentum vectors and then computing speeds afterwards?

    I'm trying to think of a way to do 2 dimensional collisions working just in vectors for visualisation simplicity.

    Could I compute an ideal momentum vector, and then (using x compensation) determine how much of this ideal vector was shared as a percentage between each vehicle involved in the collision allowing me to compute a resultant speed for each?

    Sorry if my replies seem a bit dis-jointed I have a slight learning difficulty :wink:

    Can you think of it like this, speed resulting from momentum changes, or am I barking up the wrong tree?
  6. Jun 23, 2007 #5


    User Avatar
    Homework Helper

    Going from one-dimension to two dimensions is actually quite a pain--the algebra becomes much more involved and for this reason most textbooks will introduce the so-called "center of mass" frame at this point.

    Also, for the case of two-dimensional collisions, there is no unique outcome of the collision between point particles. Perhaps the best way to model the two-dimensional case is to consider the colliding objects to be billiard balls... if the collision is directly head-on then this is just the one-dimensional case which we have already worked out. On the other hand, if the collision is glancing we might estimate the direction at which the initially stationary billiard ball departs by thinking about the plane of contact between the two spheres; just as it does in a real game of pool, the stationary ball should move off roughly perpindicular to this plane of contact and the other ball should move off roughly parallel to this plane.

    In the above discussion I had in mind an elastic collision, but we could also introduce a parameter 'x' to simulation an intermediate situation between "elastic" and "perfectly inelastic" in exactly the same way as in one dimension. The relationship for "v_A_final" given above would simply be taken as refering now to the magnitude of the velocity.
  7. Jun 23, 2007 #6
    Thanks for the reply again. Nice to see someone with so much expertise willing to help :wink:
  8. Jun 23, 2007 #7


    User Avatar
    Homework Helper

    no problem. you are quite welcome, and good luck with your work.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook