Bouncing Balls Under Gravity

Write a class named BouncingBallWithAcceleration that allows one to construct a ball, whose position, size, velocity, acceleration and related breadboard can all be set. With each tick of the associated breadboard timer, the position and velocity should be updated in a reasonable way to reflect the physics of the situation. Included in this is that when the ball "strikes" the floor or walls of the central drawing region, it should "bounce" in a reasonable way, with its overall velocity reduced by 25% (due to the "impact").

Then, write a class named BallDropper that extends the NoButtonsBreadboard of the breadboards package that will drop a randomly-colored bouncing ball (under the influence of gravity) from wherever the user clicks, as often as the user chooses to do so.

It is very difficult to drop a ball by hand with absolutely zero horizontal velocity (i.e., where the ball would simply bounce up and down upon its original strike location). As such -- with each drop, a random horizontal velocity between -2 and 2 pixels moved per timer tick should be given to the ball. This should add a great deal of realism to the resulting animation.

You may assume the acceleration due to gravity is 1 pixel moved per timer tick, per timer tick, and a timer tick happens every 10 milliseconds.