GitHub Issues MIT License Website


All Projects



This “Pixular Automaton”, as it has been called, is a basic Cellular Automaton based on Conway’s Game of Life. There is no specific purpose for building this website other than to generate a pretty animation from input images, but its inner workings are reasonably complex, so allow me to explain them a little bit.

As mentioned previously, this automaton is based on Conway’s Game of Life, a binary automaton with three main rules:

However, these cells only have an “on” and “off” state; in order for them to be applied to an image, they need to match specific colors. So, to prevent things from becoming too complex, I decided to split the grid of cells into “layers” by color; each color in the image is its own cellular automaton which overwrites others if they take up the same space. The program iterates through each color “layer” and evaluates every cell of that color before proceeding to the next layer. When evaluating a cell, another cell of the same color is considered “active”, and any other color (or null) is considered to be “dead”.

This means that there are in fact two ways for a cell to go about dying. It can either become “truly” inactive (not matching with any color), or it can become another color so that it no longer matches with the color that it was before and is thus considered “dead” by that layer. Because of this, there is a dropdown at the bottom of the page to switch between different “death modes”. These alter the rules as follows:

Of course, if any unprocessed image file is input into this program, not only will there be a ridiculous amount of layers, there will likely not be more than one or two active cells on each layer, which will not lead to a very entertaining result. In order to prevent this, when an image is selected, this website first picks a certain number of colors (configured by the “Granularity” setting) using a simple Traveling Salesman-based heuristic, then categorizes every pixel in the image as one of these colors, forming the layers to be used by the automaton. As this algorithm is O(n^2), it takes a while to compute for large files, which is why there is a “Pixelation” setting to sample a smaller amount of pixels from the original image.

Last updated: 2018-11-02T01:33:11Z

This site may do shady things with cookies and stuff because it's evil. Please don't read my privacy policy. close