On Generative Algorithms

Introduction

This essay was written between late 2015 and mid 2016.

I've always been fascinated with patterns. It doesn't really matter what kind of patterns; I've played with networks, leaves and leaf venation, branches, lightning, flocking, tracing outlines of shapes, river formation, rock sediments, landscapes, slime mold, lichens, reaction-diffusion, cellular automaton, some fractals, and a few other things. I think what I enjoy the most is how complex and intricate results you can get from a set of simple rules.

Recently I've been particularly interested in biological patterns, and differential growth. My background is in numerical mathematics, not biology. So I have limited knowledge of how biological systems actually work. Even so, I've been experimenting quite a lot with recreating various biological behaviours. Part of the challenge is to try to recreate some pattern or behaviour with as few and as simple rules as possible.

Sometimes I manage to recreate the phenomenon I set out to create, and sometimes not. More often than not I get something interesting, even if it is not always what I expected.

A Confession

In the interest of disclosure I should point out that I sometimes base my work on the ideas that I have seen done elsewhere by a number of other generative artists. Most notably Jared Tarbell and Nervous System. For instance the algorithm I named Orbitals (image below) is very heavily based on Happy Place by Tarbell.

I point this out because I have always found it hard to know where a piece of software—and in my particular case, the images generated by that software—is novel enough to be viewed as a separate work.

Inconvergent

I started working with generative algorithms when I was supposed to be studying for my exams at university. For that reason I bought the domain name inconvergent.net, as a joke on me diverging from my studies. The first thing I did was to copy several of Tarbell's algorithms using Javascript/Canvas. After a while I started getting a few other ideas of my own.

Apart from Orbitals, the first algorithm I got working was Hyphae. It came to me when I was trying to recreate the behaviour of Hyphae by Nervous System. At this point I hadn't realized how complicated that algorithm actually is, and I spent way too much time trying and failing to get it anywhere near decent. I implemented it later, and you can read the Siggraph paper describing it if you are interested. It is a fascinating read!

Code

I make almost all of my code available at Github. All the following sections have a link to the corresponding repository. Unfortunately not all of it is entirely well documented or up to date.