I'm trying to figure out a way to determine the force two objects collide in.

I have two vectors defining their linear velocity at the time of impact, their mass and their angular velocity. Keep in mind this is all for a 2D physics engine.

I don't think it's as simple as adding up these values and figuring out if it's large enogh it makes a large impact since that doesn't take into account if the two objects are travelling in the same direction (as an example).

Any ideas?


High school physics should do the trick here, preserve total energy (unless you want energy to dissipate into friction, heat and deformation) and preserve total momentum, which will give you the result of the impact. Adding rotation to the equation makes it a bit more tricky (although not so much in 2D), preserving angular momentum as well, do you want to go there?

Actually getting the force which is applied, you need to look at the characteristics of the impact, the most simple assumption is that the force is constant during the impact, in which case, the force is the change in momentum (known as the impulse) divided by the duration of the impact.

Do you really want to know the applied force (useful for damage models, but rarely for simple physics), or are you just looking to determine final velocities?

  • \$\begingroup\$ I want the applied force \$\endgroup\$ – meds Dec 27 '10 at 9:46
  • \$\begingroup\$ @meds; In that case you need to know more about the colliding objects, at the very least (for the simple assumption of constant force) the duration of the impact. \$\endgroup\$ – falstro Dec 27 '10 at 9:49
  • 1
    \$\begingroup\$ -1 This in no way answered the question. This should be a comment, not an answer. \$\endgroup\$ – AttackingHobo Dec 27 '10 at 18:14
  • \$\begingroup\$ @AttackingHobo; he asked for ideas, and as such it is answer to the question. He wants the applied force, it states that the simplest approximation is impulse/duration of impact. More explicitly it is the derivative of momentum wrt time. But sure, I'll take the -1. \$\endgroup\$ – falstro Dec 27 '10 at 19:55
  • 1
    \$\begingroup\$ @AttackingHobo: If you believe that an answer is not an answer then down vote it. Otherwise let it slide. People telling other people that their responses are not answers is annoying; after all, if you think there is a better answer that could be written then write it yourself. Problem solved. \$\endgroup\$ – Robert Massaioli Mar 31 '11 at 3:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.