In **Worlds of Colors** I create alternative worlds full of colors and open windows to let us get a peek at them.

### Compositional Pattern Producing Networks

To create an alternative world, I use Compositional Pattern Producing Networks or CPPNs. CPPNs are mathematical functions
mapping a set of spatially organized inputs to a set of outputs. Here, we map spatial coordinates all over the Earth to corresponding colors in the RGB space.

**Generating an image from a CPPN.** For each pixel (x, y) of the 2D image, the CPPN is applied to compute the corresponding color. (From the original paper).

In World of Colors, CPPNs take the GPS coordinates of your house (latitude, longitude, altitude) and relative coordinates of the location of the window to the other world. Each
CPPN thus defines an **alternative world** by giving a color value to any point in space. Applying the CPPN to a specific set of coordinates opens a window to that world. It
lets us peek at what’s there, in this particular place.

### Evolving Alternative Worlds

What are these mathematical functions really? They are *computational graphs*, where each node aggregates its inputs (e.g. input coordinates, or the output of a previous node)
and applies an *activation function* to the output.

**CPPN as computational graphs.** (From this post).

At first, we can sample a bunch of random graphs, each defining its specific world. Then, we can **breed worlds**. By iteratively selecting the prettiest worlds by hand and
applying an evolutionary algorithm called NEAT, we can evolve prettier and prettier alternative worlds.

### Opening Windows

For each world, I opened a bunch of windows located at my place and some of my friends’ places. Just like in the real world, windows that are close together share similar
patterns while windows further away from each other are more different.

Here are eighteen **Worlds of Colors** seen through 9 windows.