This project formed the basis of my final year dissertation for the Computer Science Tripos at the University of Cambridge in 2005/06. It was awarded the prize for the best dissertation of the year, and has been published as a technical report of the University of Cambridge Computer Laboratory.
You can read the report for full detail on the project, its development and the research involved.
You can also download the Java source code of the simulation core under a MIT License.
The full demonstration video (approx. 3 minutes) of all aspects of the simulation is available on YouTube.
Implementation notes on the individual scenes: