I wrote a program that shoots balls in a stream and they bounce off bigger balls, and collect in a surrounding sphere for distribution analysis. You can aim the stream of balls!
Here is the code (compiles on an SGI with Open Inventor):
Time spent: 3 Hours
Date: Spring 2001