I'm working on a 2D pool simulation project right now, and I'm trying to create good looking physics that are also performant.

After collisions are detected, I update the velocities of the balls. So far, I've assumed collisions are elastic, which gives pretty good results. The formulas for the final velocities of both balls after a 2D elastic collision are easy to find, and I can follow the derivations of them well enough.

The problem is that 'breaks' are not realistic: momentum is often passed along the top and bottom of the triangle of balls, and only the top and bottom corners fly off.

I was wondering if changing the equations to use partially inelastic collisions would make the break look more realistic. I would use a coefficient of restitution that is close to 1. However, I'm not able to find many examples of 2D partially inelastic collisions that give final velocities. I'm not sure if I can derive these easily myself, and I'm a bit short on time.

Would this approach be worthwhile? Will using slightly inelastic collisions give me the results I'm looking for? If so, are there any resources that can help me solve this problem?

  • 1
    $\begingroup$ Perhaps a picture would help demonstrate what you're showing, but I will ask this -- what makes you think that is the physically incorrect answer? I'm sure in an idealized world (and possibly real life), if you line things up exactly the way you have them, you would get the response you're getting (assuming, of course, your equations and code are correctly implemented!) $\endgroup$ – tpg2114 Aug 27 '14 at 22:13
  • 1
    $\begingroup$ See real-world-physics-problems.com/physics-of-billiards.html $\endgroup$ – ja72 Aug 28 '14 at 1:08
  • 1
    $\begingroup$ Also see ruina.tam.cornell.edu/research/topics/collision_mechanics/… $\endgroup$ – ja72 Aug 28 '14 at 1:12
  • 1
    $\begingroup$ This question appears to be off-topic because it is about programming fast realistic simulation / approximations of physical systems. $\endgroup$ – Brandon Enright Aug 28 '14 at 2:14
  • 1
    $\begingroup$ You guys are right, in that I simply didn't give enough information about the collision system. As dumb as it sounds, a solution that worked for me was to simply place all the balls with a tiny bit of randomness to their position. Seems obvious in retrospect, but thanks for the help and resources here! $\endgroup$ – yellow Aug 28 '14 at 14:20

Your Answer

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

Browse other questions tagged or ask your own question.