This has actually been in my archives for over a year now. It was originally part of a warm-up assignment for Neil Gershenfeld's class, The Nature of Mathematical Modeling. The class always begins with the simple assignment to simulate a bouncing ball in a few different programming environments just to allow everyone the opportunity to acquaint themselves with the various options (and partially to pimp python as the preferred modeling environment).
The bouncing ball simulation is such a classic in physics simulations that the web is practically littered with them at this point all of varying complexity (My vote for the most clever goes to Golan Levin's flip book solution). Much of what you find are graphical simulators to assist students as they get a handle on Newton's laws of motion. One odd thing about almost all of these is that the balls never spin when they strike the ground. Real balls certainly do. In fact, it's virtually impossible to throw a tennis ball without introducing some spin. Trust me, I tried for hours and had only a sore arm to show for it. So, most of the classic bouncing ball simulations look like the one on the left in the figure below. They assume that the ball is able to bounce off the ground perfectly without experiencing any of the effects of friction. Rather than bouncing upward with a little top spin (like the one on the right), the ball just sort of pops back up in the air. Things get even weirder when the classic ball eventually stops bouncing; it slides endlessly around on the floor. As we know from our days on the basketball court, real balls end up rolling to a stop.
As it turns out, there is a really easy way to model this that doesn't require any numerical analysis kung-fu or understanding of jokes that substitute “Euler” with “oiler” in the punchline. In a rather old issue of the American Journal of Physics, Richard Garwin (how I wish he was still focused on lobbing tennis balls) describes a very simple set of equations based on balancing the exchange of kinetic energy between translational and rotational energy on each bounce all in an effort to determine why Wham-O's Super-Ball was very difficult to catch [1,2]. After you chuckle at the stick figures and follow along the two pages of math, it all comes down to this:
If you have a ball of mass m and radius R hitting the floor with a speed of v1, angular velocity of ω1, and at an angle of Θ1 then after the collision the ball's speed will be
the α value is related to the moment of inertia of the ball you're are using, a typical value is on the order of 2/5. The ex and ey values are the horizontal and vertical Coefficients of Restitution (COR), which is just a ratio of how much energy is lost on every bounce. These are just values you choose (between 0 and 1) that effect the “bounciness” of your ball.
Take these ingredients and mix them with the equations for Newtonian motion and you got yourself a ball that bounces, spins and even settles to a roll. All that and you don't even have to know what that Euler fellow did.