February 2009

In the best known example of Cellular Automata – Conway’s Game of Life, each cell has a binary state – it is either On or Off.
However, it is possible to explore similar automata where the state of each cell can be any real number in a given range – Continuous Cellular Automata.

The video above shows such a CCA in grasshopper. Each cell has a height value, which interacts with the values of its neighbours according to a simple* equation. This is a way of generating 3-Dimensional forms even though the cells only use a 2-dimensional Moore neighbourhood.

You can download the grasshopper definition here:

I made this by taking a Game of Life definition which Baldino had already made and simply copy-pasting some code from one of my earlier processing sketches into the VB component (well, I had to change a couple of bits of syntax, but surprisingly little).

The processing sketch uses colours instead of heights to show the value of each cell, and is mouse reactive:


Click image for Live Interactive version + sourcecode

Its strange the way it varies between periods of calm and chaos, without ever completely settling down or degenerating to noise.

* though it took me a fair bit of trial and error to come up with this particular equation. Just like the different rulesets explored by Wolfram, little changes can give quite different results, and I ran through all sorts of odd glitchiness before finding one I liked.


Here is a displacement by attractors definition for grasshopper based on some real physics:

It allows you to set multiple ‘attractors’ which interact realistically just like electric charges, magnets, heat flows or ideal fluids. Sliders control whether each point is a source, sink, vortex or a combination of these.

Get the ghx here

edit 26/10/09 : Check out the new and improved 3D version – JellyFish

I’ve long been fascinated by this area of math/physics. For more on this, take a look at rheotomic surfaces (its a bit of a long read, but skip down to see all the pictures and videos)


Another simple ‘thick origami’ type mechanism I invented.
I am really loving how easy Grasshopper makes it to explore this stuff!

Continuing the theme of my previous post, this shows how several of these linkages can be joined to form larger deployable structures.

It works by defining an octahedron, based on 4 user positioned points and certain geometric conditions, which allow it to join to copies of itself along 4 of its edges.
The slider then controls the single degree of freedom of the resulting over-constrained structural mechanism.

At the moment all units are identical and the structure deploys to a flat plane, but I’m looking at ways of letting it curve and take on more interesting shapes. This is fairly simple to do for curvature in a single direction, to form vaults etc. But finding the necessary geometric conditions for doubly curved structures (such as domes) from networks of Bennett linkages is currently an open problem.
GH feels like it might be the right tool to solve it though.

Again this is based on the work of Y.Chen and Z.You which I linked to earlier. There’s also a shorter paper here, and a nice overview of motion structures here.

Will post the ghx as soon as I’ve cleaned it up a little.

Last year I was designing some shelters based on this stuff. I was looking at ways of bracing it with tape springs or bi-stable struts (a fascinating subject in its own right, which deserves its own post). The joint still needs work – the version shown below adds unwanted degrees of freedom.


Here are a couple of quick studies using Grasshopper, a kind of Visual Programming Language which works with Rhino3D.

Boxes rotated by a Laplacian field (as I wrote more about earlier):

And some Kinematics:

Download the .GHX grasshopper definition and associated Rhino file here

This ties in with some of my earlier work on deployable structures

Most deployable structures research has (more…)


Click image for Live Interactive version

A little toy which demonstrates how complex and chaotic behaviour can arise from very simple rules and local interactions.

This is a type of Continuous Cellular Automata. Each cell has a scalar value which changes, based on the values of its neighbours. Then by taking the difference between the values of neighbouring cells, this scalar field is converted into a vector field.

You might also like to try the fizzy version, the musical version, the many glitchy variations, or the monster version, and I’ve also started playing with a 3D version

Source Code provided (just follow the links)

These are Rheotomic Surfaces – from the Greek

Rheo – flow


Tomos – cut or section (as in tomography)

The horizontal sections of these surfaces correspond to the moving equipotential lines of a 2D Laplacian flow, with height mapped to time. Such surfaces are complete, embedded and walkably connected.

Potential Flow