When a ball bounces into something like the floor the component of the speed normal to the plane (for example the floor) gets reversed. I'm trying to program a physics simulation were there are, among other things, balls bouncing off walls and stuff. Now I know that I could simply reverse the speed component as I explained above to make the ball bounce but this is somewhat af a "hack", what I want to know is how it "really" happens - in terms of forces and stuff. The ball changes it's momentum which means that there is some force that pushes the ball from the wall over a certain time - impulse. How do I calculate this force (by perimiters such as the rigedness of the wall, speed of the ball...) and how do you know when to apply it and when to stop? Thanks.