Binary genetic fractals


I’ve been meaning to do this for a long time: create the simplest possible genetic fractal based on a binary string. Let me explain.

The nice looking fractals I post here and elsewhere are all driven by a genetic sequence. This goes something like: bend to the left by so much
, increasing the radius smoothly by so and so. Split into so many branches and vary the color palette smoothly. These are detailed instructions which are a bit like a fractal programming language. Below is a snippet of a coffee mug:


[[feet3 childProfile invisible :15.0:1.0:0.2:0.000000001 :feet4]]

[[feet4 childProfile invisible :12.0:1.0:-0.22:0.000000001 :feet5]]

[[feet5 setSize invisible :1.0:4.0:4.0:4.0 :feet6]]

[[feet6 shiftR invisible :-1.4 :feet7]]

[[feet7 child Sphere :1.0:1.0:0.00001:0.000000001 :end]]

[[ear flipR invisible :1.0 :ear0]]

[[ear0 setSize invisible :1.0:5.0:2.0 :ear1:eara1]]

This then leads to this.


Royal Coffee Mug – ready for 3D printing

Binary genetic fractal programming

The genetic fractal programming language is a high level language. But what if we strip it from all the bells and whistles and reduce it to the simplest of forms: a binary instruction language?

I’ve been meaning to do this for several years and have done so now. It is so simple, that it actually explains genetic fractals better than any attempt I have made in the past. As with all genetic fractals, we define a genetic string:


The top twine define the curve and the bottom twine determines where the genetic fractal should branch.

Each bit of the curve twine has a simple meaning.

0 = turn left by xxx Rad

1 = turn right by xxx Rad

The “xxx” is typically small. I have used Pi / 512.

The branching twine has the following interpretation

0 = don’t branch, just keep growing

1 = split into two mirror branches and continue growing

Such a genetic string will produce the following genetic fractal.


Although you won’t see such smooth fractals anywhere else (…) the neat thing about genetic fractals is that you can edit the genetic strings by inserting short sequences. Below, I have inserted short sequence that loops around to the right (or mirrored left) for a full circle. The rest stays the same.



Why use a binary genetic fractal programming language?

The honest answer is that I don’t really know. I have some ideas though.

  • I could use this approach to make a highly efficient genetic fractal engine that converts binary genetic strings into genetic fractals. I can then develop an script interpreter that does the high level complex stuff. This would be a valuable change from the current architecture where the complex genetic fractal engine is mixed up with the rest.
  • A few posts ago I raised the idea of genetic agents. At present I’m bringing genetic fractals into the real world using desktop manufacturing techniques such as CNC and 3D printing. Binary genetic fractals would be much easier to implement in genetic agents at a hardware level.
  • The most promising avenue is that I want to add intelligence to these genetic fractals and get them to respond their environment. It is easy to see that a binary genetic fractals that only understands left, right and split, is easier to get to respond to bumps into walls, light sources etc. than its sophisticated descendant like the coffee mug program above.



So what do you think?

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s