Dilating the Delta

A circle with a radius of one unit has an area of exactly π units = 3.141592… units. An equilateral triangle inscribed in the unit circle has an area of 1.2990381… units, or 41.34% of the area of the unit circle.

In other words, triangles are cramped! And so it’s often difficult to see what’s going on in a triangle. Here’s one example, a fractal that starts by finding the centre of the equilateral triangle:

Triangular fractal stage #1


Next, use that central point to create three more triangles:

Triangular fractal stage #2


And then use the centres of each new triangle to create three more triangles (for a total of nine triangles):

Triangular fractal stage #3


And so on, trebling the number of triangles at each stage:

Triangular fractal stage #4


Triangular fractal stage #5


As you can see, the triangles quickly become very crowded. So do the central points when you stop drawing the triangles:

Triangular fractal stage #6


Triangular fractal stage #7


Triangular fractal stage #8


Triangular fractal stage #9


Triangular fractal stage #10


Triangular fractal stage #11


Triangular fractal stage #12


Triangular fractal stage #13


Triangular fractal (animated)


The cramping inside a triangle is why I decided to dilate the delta like this:

Triangular fractal

Circular fractal from triangular fractal


Triangular fractal to circular fractal (animated)


Formation of the circular fractal (animated)


And how do you dilate the delta, or convert an equilateral triangle into a circle? You use elementary trigonometry to expand the perimeter of the triangle so that it lies on the perimeter of the unit circle. The vertices of the triangle don’t move, because they already lie on the perimeter of the circle, but every other point, p, on the perimeter of the triangles moves outward by a fixed amount, m, depending on the angle it makes with the center of the triangle.

Once you have m, you can move outward every point, p(1..i), that lies between p on the perimeter and the centre of the triangle. At least, that’s the theory between the dilation of the delta. In practice, all you need is a point, (x,y), inside the triangle. From that, you can find the angle, θ, and distance, d, from the centre, calculate m, and move (x,y) to d * m from the centre.

You can apply this technique to any fractal created in an equilateral triangle. For example, here’s the famous Sierpiński triangle in its standard form as a delta, then as a dilated delta or circle:

Sierpiński triangle

Sierpiński triangle to circular Sierpiński fractal


Sierpiński triangle to circle (animated)


But why stop at triangles? You can use the same elementary trigonometry to convert any regular polygon into a circle. A square inscribed in a unit circle has an area of 2 units, or 63.66% of the area of the unit circle, so it too is cramped by comparison with the circle. Here’s a square fractal that I’ve often posted before:

Square fractal, jump = 1/2, ban on jumping towards any vertex twice in a row


It’s created by banning a randomly jumping point from moving twice in a row 1/2 of the distance towards the same vertex of the square. When you dilate the fractal, it looks like this:

Circular fractal from square fractal, j = 1/2, ban on jumping towards vertex v(i) twice in a row


Circular fractal from square (animated)


And here’s a related fractal where the randomly jumping point can’t jump towards the vertex directly clockwise from the vertex it’s previously jumped towards (so it can jump towards the same vertex twice or more):

Square fractal, j = 1/2, ban on vertex v(i+1)


When the fractal is dilated, it looks like this:

Circular fractal from square, i = 1


Circular fractal from square (animated)


In this square fractal, the randomly jumping point can’t jump towards the vertex directly opposite the vertex it’s previously jumped towards:

Square fractal, ban on vertex v(i+2)


And here is the dilated version:

Circular fractal from square, i = 2

Circular fractal from square (animated)


And there are a lot more fractals where those came from. Infinitely many, in fact.

Square Routes Re-Re-Re-Re-Revisited

Pre-previously in my post-passionate portrayal of polygonic performativity, I’ve usually looked at what happens when a moving point is banned from jumping twice-in-a-row (and so on) towards the same vertex of a square or other polygon. But what happens when the point isn’t banned but compelled to do something different? For example, if the point usually jumps 1/2 of the distance towards the vertex for the second (third, fourth…) time, you could make it jump 2/3 of the way, like this:

usual jump = 1/2, forced jump = 2/3


And here are the fractals created when the vertex currently chosen is one or two places clockwise from the vertex chosen before:

usual jump = 1/2, forced jump = 2/3, vertex-inc = +1


j1 = 1/2, j2 = 2/3, vi = +2


Or you can make the point jump towards a different vertex to the one chosen, without recording the different vertex in the history of jumps:

v1 = +0, v2 = +1, j = 1/2


v1 = +0, v2 = +1, vi = +2


v1 = 0, v2 = +2


v1 = 0, v2 = +2, vi = +1


Or you can make the point jump towards the center of the square:

v1 = 0, v2 = center, j = 1/2


v1 = 0, v2 = center, vertex-inc = +1


v1 = 0, v2 = center, vertex-inc = +2


And so on:

v1 = +1, v2 = +1, vi = +1


v1 = +1, v2 = +1, vi = +2


v1 = +0, v2 = +1, reverse test


v1 = +0, v2 = +1, vi = +1, reverse test


v1 = +0, v2 = +1, vi = +2, reverse test


v1 = +0, v2 = +2, reverse test


v1 = +0, v2 = +2, vi = +1, reverse test


v1 = +2, v2 = +2, vi = +1, reverse test


j1 = 1/2, j2 = 2/3, vi = +0,+0 (record previous two jumps in history)


j1 = 1/2, j2 = 2/3, vi = +0,+2


j1 = 1/2, j2 = 2/3, vi = +2,+2


j1 = 1/2, j2 = 2/3, vi = +0,+0,+0 (previous three jumps)


Previously pre-posted (please peruse):

Square Routes
Square Routes Revisited
Square Routes Re-Revisited
Square Routes Re-Re-Revisited
Square Routes Re-Re-Re-Revisited

Back to Drac’

draconic, adj. /drəˈkɒnɪk/ pertaining to, or of the nature of, a dragon. [Latin draco, -ōnem, < Greek δράκων dragon] — The Oxford English Dictionary

In Curvous Energy, I looked at the strange, beautiful and complex fractal known as the dragon curve and showed how it can be created from a staid and sedentary square:

A dragon curve


Here are the stages whereby the dragon curve is created from a square. Note how each square at one stage generates a pair of further squares at the next stage:

Dragon curve from squares #1


Dragon curve from squares #2


Dragon curve from squares #3


Dragon curve from squares #4


Dragon curve from squares #5


Dragon curve from squares #6


Dragon curve from squares #7


Dragon curve from squares #8


Dragon curve from squares #9


Dragon curve from squares #10


Dragon curve from squares #11


Dragon curve from squares #12


Dragon curve from squares #13


Dragon curve from squares #14


Dragon curve from squares (animated)


The construction is very easy and there’s no tricky trigonometry, because you can use the vertices and sides of each old square to generate the vertices of the two new squares. But what happens if you use lines rather than squares to generate the dragon curve? You’ll discover that less is more:

Dragon curve from lines #1


Dragon curve from lines #2


Dragon curve from lines #3


Dragon curve from lines #4


Dragon curve from lines #5


Each line at one stage generates a pair of further lines at the next stage, but there’s no simple way to use the original line to generate the new ones. You have to use trigonometry and set the new lines at 45° to the old one. You also have to shrink the new lines by a fixed amount, 1/√2 = 0·70710678118654752… Here are further stages:

Dragon curve from lines #6


Dragon curve from lines #7


Dragon curve from lines #8


Dragon curve from lines #9


Dragon curve from lines #10


Dragon curve from lines #11


Dragon curve from lines #12


Dragon curve from lines #13


Dragon curve from lines #14


Dragon curve from lines (animated)


But once you have a program that can adjust the new lines, you can experiment with new angles. Here’s a dragon curve in which one new line is at an angle of 10°, while the other remains at 45° (after which the full shape is rotated by 180° because it looks better that way):

Dragon curve 10° and 45°


Dragon curve 10° and 45° (animated)


Dragon curve 10° and 45° (coloured)


Here are more examples of dragon curves generated with one line at 45° and the other line at a different angle:

Dragon curve 65°


Dragon curve 65° (anim)


Dragon curve 65° (col)


Dragon curve 80°


Dragon curve 80° (anim)


Dragon curve 80° (col)


Dragon curve 135°


Dragon curve 135° (anim)


Dragon curve 250°


Dragon curve 250° (anim)


Dragon curve 250° (col)


Dragon curve 260°


Dragon curve 260° (anim)


Dragon curve 260° (col)


Dragon curve 340°


Dragon curve 340° (anim)


Dragon curve 340° (col)


Dragon curve 240° and 20°


Dragon curve 240° and 20° (anim)


Dragon curve 240° and 20° (col)


Dragon curve various angles (anim)


Previously pre-posted:

Curvous Energy — a first look at dragon curves