Middlemath

Suppose you start at the middle of a triangle, then map all possible ways you can jump eight times half-way towards one or another of the vertices of the triangle. At the end of the eight jumps, you mark your final position with a dot. You could jump eight times towards the same vertex, or once towards vertex 1, once towards vertex 2, and once again towards vertex 1. And so on. If you do this, the record of your jumps looks something like this:


The shape is a fractal called the Sierpiński triangle. But if you try the same thing with a square — map all possible jumping-routes you can follow towards one or another of the four vertices — you simply fill the interior of the square. There’s no interesting fractal:


So you need a plan with a ban. Try mapping all possible routes where you can’t jump towards the same vertex twice in a row. And you get this:

Ban on jumping towards same vertex twice in a row, v(t) ≠ v(t-1)


If you call the current vertex v(t) and the previous vertex v(t-1), the ban says that v(t) ≠ v(t-1). Now suppose you can’t jump towards the vertex one place clockwise of the previous vertex. Now the ban is v(t)-1 ≠ v(t-1) or v(t) ≠ v(t-1)+1 and this fractal appears:

v(t) ≠ v(t-1)+1


And here’s a ban on jumping towards the vertex two places clockwise (or counterclockwise) of the vertex you’ve just jumped towards:

v(t) ≠ v(t-1)+2


And finally the ban on jumping towards the vertex three places clockwise (or one place counterclockwise) of the vertex you’ve just jumped towards:

v(t) ≠ v(t-1)+3 (a mirror-image of v(t) ≠ v(t-1)+1, as above)


Now suppose you introduce a new point to jump towards at the middle of the square. You can create more fractals, but you have to adjust the kind of ban you use. The central point can’t be included in the ban or the fractal will be asymmetrical. So you continue taking account of the vertices, but if the previous jump was towards the middle, you ignore that jump. At least, that’s what I intended, but I wonder whether my program works right. Anyway, here are some of the fractals that it produces:

v(t) ≠ v(t-1) with central point (wcp)


v(t) ≠ v(t-1)+1, wcp


v(t) ≠ v(t-1)+2, wcp


And here are some bans taking account of both the previous vertex and the pre-previous vertex:

v(t) ≠ v(t-1) & v(t) ≠ v(t-2), wcp


v(t) ≠ v(t-1) & v(t-2)+1, wcp


v(t) ≠ v(t-1)+2 & v(t-2), wcp


v(t) ≠ v(t-1) & v(t-2)+1, wcp


v(t) ≠ v(t-1)+1 & v(t-2)+1, wcp


v(t) ≠ v(t-1)+2 & v(t-2)+1, wcp


v(t) ≠ v(t-1)+3 & v(t-2)+1, wcp


v(t) ≠ v(t-1) & v(t-2)+2, wcp


v(t) ≠ v(t-1)+1 & v(t-2)+2, wcp


v(t) ≠ v(t-1)+2 & v(t-2)+2, wcp


Now look at pentagons. They behave more like triangles than squares when you map all possible jumping-routes towards one or another of the five vertices. That is, a fractal appears:

All possible jumping-routes towards the vertices of a pentagon


But the pentagonal-jump fractals get more interesting when you introduce jump-bans:

v(t) ≠ v(t-1)


v(t) ≠ v(t-1)+1


v(t) ≠ v(t-1)+2


v(t) ≠ v(t-1) & v(t-2)


v(t) ≠ v(t-1)+2 & v(t-2)


v(t) ≠ v(t-1)+1 & v(t-2)+1


v(t) ≠ v(t-1)+3 & v(t-2)+1


v(t) ≠ v(t-1)+1 & v(t-2)+2


v(t) ≠ v(t-1)+2 & v(t-2)+2


v(t) ≠ v(t-1)+3 & v(t-2)+2


Finally, here are some pentagonal-jump fractals using a central point:








Post-Performative Post-Scriptum

I’m not sure if I’ve got the order of some bans right above. For example, should v(t) ≠ v(t-1)+1 & v(t-2)+2 really be v(t) ≠ v(t-1)+2 & v(t-2)+1? I don’t know and I’m not going to check. But the idea of jumping-point bans is there and that’s all you need if you want to experiment with these fractal methods for yourself.

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

For a good example of how more can be less, try the chaos game. You trace a point jumping repeatedly 1/n of the way towards a randomly chosen vertex of a regular polygon. When the polygon is a triangle and 1/n = 1/2, this is what happens:

Chaos triangle #1


Chaos triangle #2


Chaos triangle #3


Chaos triangle #4


Chaos triangle #5


Chaos triangle #6


Chaos triangle #7


As you can see, this simple chaos game creates a fractal known as the Sierpiński triangle (or Sierpiński sieve). Now try more and discover that it’s less. When you play the chaos game with a square, this is what happens:

Chaos square #1


Chaos square #2


Chaos square #3


Chaos square #4


Chaos square #5


Chaos square #6


Chaos square #7


As you can see, more is less: the interior of the square simply fills with points and no attractive fractal appears. And because that was more is less, let’s see how less is more. What happens if you restrict the way in which the point inside the square can jump? Suppose it can’t jump twice towards the same vertex (i.e., the vertex v+0 is banned). This fractal appears:

Ban on choosing vertex [v+0]


And if the point can’t jump towards the vertex one place anti-clockwise of the currently chosen vertex, this fractal appears:

Ban on vertex [v+1] (or [v-1], depending on how you number the vertices)


And if the point can’t jump towards two places clockwise or anti-clockwise of the currently chosen vertex, this fractal appears:

Ban on vertex [v+2], i.e. the diagonally opposite vertex


At least, that is one possible route to those three particular fractals. You see another route, start with this simple fractal, where dividing and discarding parts of a square creates a Sierpiński triangle:

Square to Sierpiński triangle #1


Square to Sierpiński triangle #2


Square to Sierpiński triangle #3


Square to Sierpiński triangle #4


[…]


Square to Sierpiński triangle #10


Square to Sierpiński triangle (animated)


By taking four of these square-to-Sierpiński-triangle fractals and rotating them in the right way, you can re-create the three chaos-game fractals shown above. Here’s the [v+0]-ban fractal:

[v+0]-ban fractal #1


[v+0]-ban #2


[v+0]-ban #3


[v+0]-ban #4


[v+0]-ban #5


[v+0]-ban #6


[v+0]-ban #7


[v+0]-ban #8


[v+0]-ban #9


[v+0]-ban (animated)


And here’s the [v+1]-ban fractal:

[v+1]-ban fractal #1


[v+1]-ban #2


[v+1]-ban #3


[v+1]-ban #4


[v+1]-ban #5


[v+1]-ban #6


[v+1]-ban #7


[v+1]-ban #8


[v+1]-ban #9


[v+1]-ban (animated)


And here’s the [v+2]-ban fractal:

[v+2]-ban fractal #1


[v+2]-ban #2


[v+2]-ban #3


[v+2]-ban #4


[v+2]-ban #5


[v+2]-ban #6


[v+2]-ban #7


[v+2]-ban #8


[v+2]-ban #9


[v+2]-ban (animated)

And taking a different route means that you can find more fractals — as I will demonstrate.


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
Square Routes Re-Re-Re-Re-Revisited

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:

square_fractal_circ_i0

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.

Fractal + Star = Fractar

Here’s a three-armed star made with three lines radiating at intervals of 120°:

Triangular fractal stage #1


At the end of each of the three lines, add three more lines at half the length:

Triangular fractal #2


And continue like this:

Triangular fractal #3


Triangular fractal #4


Triangular fractal #5


Triangular fractal #6


Triangular fractal #7


Triangular fractal #8


Triangular fractal #9


Triangular fractal #10


Triangular fractal (animated)


Because this fractal is created from a series of stars, you could call it a fractar. Here’s a black-and-white version:

Triangular fractar (black-and-white)


Triangular fractar (black-and-white) (animated)
(Open in a new window for larger version if the image seems distorted)


A four-armed star doesn’t yield an easily recognizable fractal in a similar way, so let’s try a five-armed star:

Pentagonal fractar stage #1


Pentagonal fractar #2


Pentagonal fractar #3


Pentagonal fractar #4


Pentagonal fractar #5


Pentagonal fractar #6


Pentagonal fractar #7


Pentagonal fractar (animated)


Pentagonal fractar (black-and-white)


Pentagonal fractar (bw) (animated)


And here’s a six-armed star:

Hexagonal fractar stage #1


Hexagonal fractar #2


Hexagonal fractar #3


Hexagonal fractar #4


Hexagonal fractar #5


Hexagonal fractar #6


Hexagonal fractar (animated)


Hexagonal fractar (black-and-white)


Hexagonal fractar (bw) (animated)


And here’s what happens to the triangular fractar when the new lines are rotated by 60°:

Triangular fractar (60° rotation) #1


Triangular fractar (60°) #2


Triangular fractar (60°) #3


Triangular fractar (60°) #4


Triangular fractar (60°) #5


Triangular fractar (60°) #6


Triangular fractar (60°) #7


Triangular fractar (60°) #8


Triangular fractar (60°) #9


Triangular fractar (60°) (animated)


Triangular fractar (60°) (black-and-white)


Triangular fractar (60°) (bw) (animated)


Triangular fractar (60°) (no lines) (black-and-white)


A four-armed star yields a recognizable fractal when the rotation is 45°:

Square fractar (45°) #1


Square fractar (45°) #2


Square fractar (45°) #3


Square fractar (45°) #4


Square fractar (45°) #5


Square fractar (45°) #6


Square fractar (45°) #7


Square fractar (45°) #8


Square fractar (45°) (animated)


Square fractar (45°) (black-and-white)


Square fractar (45°) (bw) (animated)


Without the lines, the final fractar looks like the plan of a castle:

Square fractar (45°) (bw) (no lines)


And here’s a five-armed star with new lines rotated at 36°:

Pentagonal fractar (36°) #1


Pentagonal fractar (36°) #2


Pentagonal fractar (36°) #3


Pentagonal fractar (36°) #4


Pentagonal fractar (36°) #5


Pentagonal fractar (36°) #6


Pentagonal fractar (36°) #7


Pentagonal fractar (36°) (animated)


Again, the final fractar without lines looks like the plan of a castle:

Pentagonal fractar (36°) (no lines) (black-and-white)


Finally, here’s a six-armed star with new lines rotated at 30°:

Hexagonal fractar (30°) #1


Hexagonal fractar (30°) #2


Hexagonal fractar (30°) #3


Hexagonal fractar (30°) #4


Hexagonal fractar (30°) #5


Hexagonal fractar (30°) #6


Hexagonal fractar (30°) (animated)


And the hexagonal castle plan:

Hexagonal fractar (30°) (black-and-white) (no lines)