Vector addition seems to work for simple cases. I'm running tests on 2 balls with equal mass and velocity using vector addition and vector rotation.
There are problems with unequal velocities such as when one ball is stationary and the other moving. Does the stationary ball have a vector?. So it looks like vector addition is only part of the solution.
'First case: starting vectors
red ball is traveling sqrt(8)x, 0y towards 0, 0
cyan ball is traveling 2x , -2y towards 0, 0
let strike angle = 0 (as respects x axis)
At what strike angle do these balls mathematically collide? The vector addition of the ball vectors implies that the bisection angle between the ball vectors is the position of the resultant vector. (mvector)
vector addition gives sqrt(8) - 2 X , 2 Y (mvector)
0 X , 2.164784 Y (mvector)
OK final directions and velocities of both balls.
red ball
sqrt(8)x, 0y + 0 X , 2.164784 Y = sqrt(8) x , 2.164784 Y
cyan ball 2x , -2y + 0 X , 2.164784 Y = 2x , .167484y
Check the math.
According to the literature, the total momentum is preserved. Since the masses are the same then total velocities will do. The total velocities are red + cyan ball velocity = (8^.5 ) *2
PRINT (4 + .16748 ^ 2) ^ .5 + (8 + 2.16474 ^ 2) ^ .5
= (8^.5 ) *2
Ok the math works out but more tests needed.
**************************
the above math had some problems