If I know to balls and there velocities and the masses how do i find there final velocities. So far I have assumed that the two balls have the same mass but this may not be true in some cases. Here is the code for a collision so far 'Ball A NewAngle = WorkOutRADAngle(Ball(BallA), Ball(BallB)) NewSpeed(BallA).X = BallSpeed(BallB) * -Cos(NewAngle - BallAngle(BallB)) NewSpeed(BallA).Y = BallSpeed(BallA) * Sin(NewAngle - BallAngle(BallA)) MoveBall(BallA).X = (NewSpeed(BallA).Y * Sin(NewAngle)) - (NewSpeed(BallA).X * Cos(NewAngle)) MoveBall(BallA).Y = (NewSpeed(BallA).Y * -Cos(NewAngle)) - (NewSpeed(BallA).X * Sin(NewAngle)) 'Ball B NewAngle = WorkOutRADAngle(Ball(BallB), Ball(BallA)) NewSpeed(BallB).X = BallSpeed(BallA) * -Cos(NewAngle - BallAngle(BallA)) NewSpeed(BallB).Y = BallSpeed(BallB) * Sin(NewAngle - BallAngle(BallB)) MoveBall(BallB).X = (NewSpeed(BallB).Y * Sin(NewAngle)) - (NewSpeed(BallB).X * Cos(NewAngle)) MoveBall(BallB).Y = (NewSpeed(BallB).Y * -Cos(NewAngle)) - (NewSpeed(BallB).X * Sin(NewAngle)) What happens when the balls have differnt masses? Here the program so far: [url]http://www.freewebs.com/dave_fooks/BounceBalls.exe[/url] P.s. Moveball is the new velocity for the ball