The simulation to the left illustrates one of the simpler ways that complexity can arise in the world. What you're looking at is a yellow-brown liquid film containing medium-brown nanoparticles. The dark-brown patches are dry spots where the liquid has evaporated. The nanoparticles are free to move where there is liquid to lubricate their movement.
The parameters of the simulation are:
Coverage = The proportion of the cells that start filled with nanoparticles.
εl = The energy of a liquid cell adjoining another liquid cell.
εnl = The energy of a nanoparticle cell adjoining a liquid cell.
εn< = The energy of a nanoparticle cell adjoining a nanoparticle cell.
μ = The energy of evaporating a liquid cell into a dry cell.
Pmove = The probability that a nanoparticle attempts a movement.
This simulation was described in Drying-mediated self-assembly of nanoparticles by Eran Rabani, David R. Reichman, Phillip L. Geissler & Louis E. Brus, in Nature 426, 271-274 (20 Nov 2003).
The simulation was built with the Processing programming environment. The Processing source code: mudcrack.pde
Other implemetations of the simulation were built with StarLogo and with NetLogo. The StarLogo source code: mudcrack.slogo. The NetLogo source code: mudcrack.nlogo.
Processing is a language for visualization implemented in Java which runs on desktops or embedded in web pages. There is now even an implementation of processing that runs entirely in javascript.
Mudcrack visualizes the aggregation of nanoparticles suspended in a thin layer of solvent. I like to think of it as the complexity of watching paint dry, or not dry, depending on the parameters given.