I'm programming an animation of a bouncing ball, and I want it to be as realistic as possible.
I fully understand the physics while the ball is rising and falling: It accelerates downward at 9.8 meters/second/second.
But once it hits the ground, I'm lost. I know that it experiences some compression which translates it's velocity upward again, at which point gravity is again the only force acting on it. But I don't know how to model the compression and deflection of the ball hitting the ground.
(Also, I'm only dealing with strictly vertical linear velocity and acceleration. The ball isn't traveling horizontally or rotating at all. And I'm assuming negligible loss to air resistance.)
I know there are constants to deal with: how much the ball resists compression and how much energy is lost during the bounce, but I don't know how they are related.
Can anybody give me a one- or two-paragraph explanation and/or (a) formula(e) and/or point me to a resource where I can read more? (yes, I've already spent an hour or so googling it)
I'm happy to continue reading about it until I understand, I just don't know where to turn at this point.
Thanks in advance!
Best Answer
You say you are ignoring friction of the air, but assume a partially inelastic collision. That means we can break the problem into two parts:
The coefficient of restitution is a parameter of a ball/surface, and reflects the fraction of velocity just after the bounce divided by the velocity just before. For a golf ball, this can be as high as 0.8; for a tennis ball it is around 0.75.
Using $\rho=0.75$, if you drop a ball from a height of 5 m (and putting $g=10~m/s^2$ for convenience) it would land after 1 second with a velocity of 10 m/s, and after the bounce (some short time $\Delta t$) it would come up again with a lower velocity $v_1 = 7.5 m/s$. The time spent in the air until the next bounce is given by $$t_1 = 2\frac{v_1}{g} = 2\rho \frac{v_0}{g}$$
While the ball is in contact with the ground, we can consider its center to move in an approximately sinusoidal fashion - as I said, the important thing is that the contact time is independent of the drop height (on the assumption of linear spring constant). In reality, as the ball deforms more, the spring constant will increase - which will actually make the contact time shorter as the impact velocity is higher. But for your simulation that is unlikely to matter.
To get from the above to a "mathematical model" you might want to modify this python code to your needs:
This code produces the following plot: