Tright Treeing

Here is a very simple tree with two branches:

Two-branch tree


These are the steps that a simple computer program follows to draw the tree, with a red arrow indicating where the computer’s focus is at each stage:

Two-branch tree stage 1


2-Tree stage 2


2-Tree stage 3


2-Tree stage 4


2-Tree (animated)


If you had to give the computer an explicit instruction at each stage, the instructions might look something like this:

1. Start at node 1, draw a left branch to node 2 and colour the node green.
2. Return to node 1.
3. Draw a right branch to node 3 and colour the node green.
4. Finish.

Now try a slightly less simple tree with branches that fork twice:

Four-branch tree (static)


These are the steps that a simple computer program follows to draw the tree, with a red arrow indicating where the computer’s focus is at each stage:

4-Tree #1


4-Tree #2


4-Tree #3


4-Tree #4


4-Tree #5


4-Tree #6


4-Tree #7


4-Tree #8


4-Tree #9


4-Tree #10


4-Tree #11


4-Tree (animated)


If you had to give the computer an explicit instruction at each stage, the instructions might look something like this:

1. Start at node 1 and draw a left branch to node 2.
2. Draw a left branch to node 3 and colour it green.
3. Return to node 2.
4. Draw a right branch to node 4 and colour it green.
5. Return to node 2.
6. Return to node 1.
7. Draw a right branch to node 5.
8. Draw a left branch to node 6.
9. Draw a left branch to node 7 and colour it green.
10. Return to node 6.
11. Draw a left branch to node 8 and colour it green.
12. Finish.

It’s easy to see that the list of instructions would be much bigger for a tree with branches that fork three times, let alone four times or you. But you don’t need to give a full set of explicit instructions: you can use a program, or a list of instructions using variables. Suppose the tree has branches that fork f times. If f = 4, you will need an array variable level() with four values, level(1), level(2), level(3) and level(4). Now follow these instructions:

1. li = 1, level(1) = 0, level(2) = 0, ... level(f+1) = 0
2. level(li) = level(li) + 1
3. If level(li) = 1, draw a branch to the left and jump to step 7
4. If level(li) = 2, draw a branch to the right and jump to step 7
5. li = li - 1 (note that this line is reached if the tests fail in lines 3 and 4)
6. If li > 0, jump to step 2, otherwise jump to step 11
7. If li = f, draw a green node and jump to step 5
9. li = li + 1
10. Jump to step 2
11. Finish.

By changing the value of f, a computer can use those eleven basic instructions to draw any size of tree (I’ve left out details like changes in the length of branches and so on). When f = 4, the tree will look like this:

16-Tree (static)


16-Tree (animated)


With simple adjustments, the program can be used for other shapes whose underlying structure can be represented symbolically as a tree. The program is in fact a fractalizer, that is, it draws a fractal. So if you use a version of the program to draw fractals based on right-triangles, you can say you are “tright treeing” (tright = triangle-that-is-right).

Here is some tright treeing. Start with a simple isoceles right-triangle. It can be divided into smaller isoceles right-triangles by finding the midpoint of the hypotenuse, then repeating:

Right-triangle rep-2 stage 1


Right-triangle #2


Tright #3


Tright #4


Tright #5


Tright #6


Tright #7


Tright #7 (no internal lines)


You can distort the isoceles right-triangle in interesting ways by finding the midpoint of a side other than the hypotenuse, like this:

Right-triangle (distorted) #1


Distorted tright #2


Distorted tright #3


Distorted tright #4


Distorted tright #5


Distorted tright #6


Distorted tright #7


Distorted tright #8


Distorted tright #9


Distorted tright #10


Distorted tright #11


Distorted tright #12


Distorted tright #13


Distorted tright (animated)


Here’s a different right-triangle. When you divide it regularly, it looks like this:

Right-triangle rep-3 stage 1


Rep-3 Tright #2


3-Tright #3


3-Tright #4


3-Tright #5


3-Tright #6


3-Tright #7


3-Tright #8


3-Tright #9


3-Tright (one colour)


When you distort the divisions, you can create interesting fractals (click on images for larger versions):

Distorted 3-Tright


Distorted 3-Tright


Distorted 3-Tright


Distorted 3-Tright


Distorted 3-Tright


Distorted 3-Tright


Distorted 3-Tright (animated)


And when four of the distorted right-triangles (rep-2 or rep-3) are joined in a diamond, you can create shapes like these:

Creating a diamond #1


Creating a diamond #2


Creating a diamond #3


Creating a diamond #4


Creating a diamond (animated)


Rep-3 right-triangle diamond (divided)


Rep-3 right-triangle diamond (single colour)


Distorted rep-3 right-triangle diamond


Distorted 3-tright diamond


Distorted 3-tright diamond


Distorted 3-tright diamond


Distorted 3-tright diamond


Distorted 3-tright diamond


Distorted 3-tright diamond


Distorted 3-tright diamond


Distorted 3-tright diamond


Distorted 3-tright diamond


Distorted 3-tright diamond


Distorted 3-tright diamond (animated)


Distorted rep-2 right-triangle


Distorted 2-tright diamond


Distorted 2-tright diamond


Distorted 2-tright diamond


Distorted 2-tright diamond


Distorted 2-tright diamond (animated)


Bats and Butterflies

I’ve used butterfly-images to create fractals. Now I’ve found a butterfly-image in a fractal. The exciting story begins with a triabolo, or shape created from three isoceles right triangles:


The triabolo is a rep-tile, or shape that can be divided into smaller copies of itself:


In this case, it’s a rep-9 rep-tile, divisible into nine smaller copies of itself. And each copy can be divided in turn:


But what happens when you sub-divide, then discard copies? A fractal happens:

Fractal crosses (animated)


Fractal crosses (static)


That’s a simple example; here is a more complex one:

Fractal butterflies #1


Fractal butterflies #2


Fractal butterflies #3


Fractal butterflies #4


Fractal butterflies #5


Fractal butterflies (animated)


Some of the gaps in the fractal look like butterflies (or maybe large moths). And each butterfly is escorted by four smaller butterflies. Another fractal has gaps that look like bats escorted by smaller bats:

Fractal bats (animated)

Fractal bats (static)


Elsewhere other-posted:

Gif Me Lepidoptera — fractals using butterflies
Holey Trimmetry — more fractal crosses