EXPLORABLES

Hokus Fractus!

by Dirk Brockmann

This explorable illustrates one of the simplest ways to generate fractals by an iteration process in which elements of a structure are replaced by a smaller version of the whole structure. Similar to the Weeds & Trees Explorable, these structures can be viewed as Lindenmayer systems. A great variety of examples of such fractals exist.

Here you can explore some of the most famous ones (e.g. the Koch Snowflake and the Sierpinski Triangle) and a few that aren't so well known (e.g. the Golden Dragon or the Anti Koch Snowflake).

This is how it works:

First, select a system (my favorite is the Golden Dragon) and iterate the system by repeatedly pressing the play button.

Initially, the object is usually just a single line segment, or a set of segments. When you press play each segment is replaced by a set of smaller segments. When you press play again, this process is repeated and the whole structure evolves into a fractal curve characterized by a non-integer dimension (typically).

Each of the different systems differs in it's rules, i.e. in the way an initial segiment is replaced by a set of smaller ones. For example, in the Dragon Curve the initial segment is replaced by two segments that make a 90° angle. The smaller segments are scaled down by a factor $1/\sqrt{2}$. In the Sierpinski Triangle the initial segment is replaced by three smaller lines that are scaled by $1/2$. This way, as the number of iterations increases, the number of segments increases and their individual length decreases.

Just a tiny bit of math:

To understand a bit of the fractal nature of the structures and the concept of fractal dimension we can look at the Sierpinski curve again. Here we begin with a single ($N _0 = 1$) line that has length $l _0 = 1$. After one iteration we have $N _1=3$ segments of length $l _1 = 1/2$, at step 2 we have $N _2=9$ segments each of length $l _2=1/4$. At iteration step $k$ we have

[ N _k = 3 ^k \qquad l _k = 2 ^{-k} ]

which means that the total length of the curve is $L _k = (3/2) ^k$ which becomes infinitely large as $k\rightarrow \infty$.

We can define a dimension $D$ associated with the structure like so:

[ N _k \sim \left( \frac {1}{l _k}\right)^D. ]

In the case of the Sierpinski triangle this gives $D=\log 3 / \log 2 \approx 1.5849$ which is between 1 and 2, so a bit larger than the dimension of a line, and smaller than the dimension of a plane. For the Koch Snowflake we get $D = 2 \log 2 / \log 3 \approx 1.2618$, also between 1 and 2.

For the Dragon Curve we obtain $D= \log 2 / \log \sqrt 2 = 2$, so it's two dimensional, which you can also see if you iterate it sufficiently often. The same is true for the Terdragon Curve.

Symbols:

Each one of the systems above can be represented as a series of symbol sequences, each sequence representing the geometry of the structure at the corrensponding iteration step. For example, the Sierpinski triangle can be represented as

  1. $A$
  2. $B-A-B$
  3. $A+B+A-B-A-B-A+B+A$
  4. $...$

at iterations 1,2,3,... This series is generated by the two replacement rules $A\rightarrow B-A-B$ and $B\rightarrow A+B+A$. If we now interpret the letters A and B as "draw a segment" and the symbols + and - as "turn left" and "turn right" by 60°, respectively, we obtain the first three geometries of the Sierpinski triangle.

For each of the fractals above a similar system can be defined. For more information see Lindenmayer systems.