This is an interesting cellular automaton that I discovered that creates some patterns similar to those found in nature (see the related links below). As far as I know this type of cellular automaton has not been created before. The update rules are fairly simple. Each cell (i.e. pixel) has a weight between 0 and 1 (0=black, 1=white). The weight for each cell is updated based on the weights of the 8 neighboring cells. The following two rules are applied for each step of the simulation:
  1. Each cell weight gets set to the average of that 3x3 grid.
  2. If a cell's weight is below 0.5, it tries to move closer to 0. If a cell's weight is above 0.5, it tries to move closer to 1. The weight gets changed by "sucking" or "pushing" weights from the neighboring 8 cells. The "sharpness" parameter influences how much weight gets moved. You can inspect this page's source code to see the update formulas.
The "noise" parameter introduces some random noise to each cell weight. The "balance" parameter adds or subtracts a constant to all cell weights, to reach the specified average.

Related links: