When two balls collide along a straight line, the physics tell us that, they will exchange the momentum (speed) with each other. If a blue ball moves to hit a red ball that stands still, the red ball will moves and the blue ball will stop. If blue ball moves with high speed and collide with a slowly incoming red ball, the red ball will bounce back with high speed while the blue ball will bounce back with low speed. If the blue ball moves fast chasing a slow moving red ball in the same direction, after collision, the blue ball will slow down and the red ball will move fast. So, the rule is simple: Exchange the speed with each other.
How about 2D ? When these two ball moves not along a straight line ?
Imagine the billiard pool game. Usually we drive a white ball moving and hit another red ball. If the hitting completely exchanges the momentum of thse two balls, the moving white ball should stop there after collision. But, it does not stop, unless the moving and hitting is along a straight line, that is 1 D model.
In fact, the rules about "exchanging momentum with each other" is still correct. But, they exchange only part of the momentum, the sub-momentum along the collision line through the collision surface. So, we got to calculate the sub-momentum along that direction.
Below is the step by step diagram. Click button to see next slide.
Another common mistake is script the ball bounce at the collision surface. It is easy to know the bounce is not correct. Just try a ball moving and hit another ball that is not moving.