Tyler Streeter
branching systems project banner

branching systems

Date

Fall 2006

Description

This was a weekend project to simulate branching systems like neurons and trees. I was inspired by the Paths project at Complexification, which simulates simple paths without branching.

I'm fascinated by how simple the rules are that govern these kinds of branching systems. Also, it seems like there are similarities among branching systems of all types. Neurons grow dendritic branches with the purpose of increasing the probability of making synaptic contacts with other neurons. Trees grow leaf-covered branches with the purpose of increasing the probability of acquiring photons.

Each source starts with a certain number of paths, and each path has its own velocity vector which determines the direction of growth. The paths have a bunch of parameters, like Gaussian noise variance on the growth vector, branching probability, thinning rate, etc. I wrote the code in Python. I used PyOpenGL to draw all the paths as translucent antialiased lines. At each step I just draw a small line segment at the end of each path, and I never clear the frame buffer. It runs pretty fast since I'm not redrawing everything constantly.

Images

Neurons 1 Neurons 2 Neurons 3 Neurons 4
Trees 1 Trees 2 Trees 3