Appointment with Distality

distal, adj. Anat. Situated away from the centre of the body, or from the point of origin (said of the extremity or distant part of a limb or organ); terminal. Opp. to proximal. [← stem of dist- (in distant adj.) + -al, after dorsal, ventral, etc.] — Oxford English Dictionary

When a point jumps inside a triangle, moving halfway towards a randomly chosen vertex each time, a fractal known as the Sierpiński triangle appears:

Point jumping halfway towards random vertex of a triangle


Point jumping inside triangle (black-and-white version)

But when a point moves at random in the same way inside a square, no fractal appears. Instead, the interior of the square gradually fills with a haze of pixels:

Point jumping halfway towards random vertex of a square

Now trying imposing restrictions on the point jumping inside a square. If it can’t jump towards a vertex twice in a row, this fractal appears:

Ban consecutive jumps towards same vertex


Ban consecutive jumps towards same vertex (black-and-white version)

Suppose the vertices are numbered from 1 to 4 and the point can’t jump towards the vertex one lower than the previously chosen vertex. That is, if it jumps towards vertex 3, it can’t jump next towards vertex 2, but it can jump towards vertices 1, 3, or 4 (if the vertex is 1, it’s banned from moving towards vertex 4, i.e. 1-1 = 0 = 4). Now this fractal appears:

Ban jump towards vertex v-1


This is the fractal when the point can’t jump towards the vertex two places lower than the one it has just jumped towards:

Ban jump towards vertex v-2


But if you can ban, you can also un-ban. Suppose the point jumps towards vertex v at time t and is then banned from jumping towards vertex v-2 at time t+1 unless it had jumped towards vertex v-1 at time t-1. This interesting fractal appears:

Ban jump v-2 at t+1 unless jump v-1 at t-1

Here are some more fractals using the ban / un-ban technique:

Ban / un-ban various


Ban jump v+0 at t+1 unless jump v+1 at t-1


Ban jump v+1 at t+1 unless jump v+3 at t-1


Ban jump v+0 at t+1 unless jump v+2 at t-1


Ban jump v+2 at t+1 unless jump v+2 at t-1


Ban / un-ban various

You can also impose or lift bans based not on the vertex the point jumps towards, but on the distance the point jumps. For example, take the radius r of the circle circumscribing the square and divide it into four segments, 0 to ¼r, ¼r to ½r, ½r to ¾r, and ¾r to r. When the point is going to jump towards vertex v, test whether its jump will land in the same segment, measured from the center of the circle, as it currently occupies. If it does, ban the jump and choose another vertex. Or unban the vertex if the point occupied segment s + x at time t-1. Here are some of the fractals produced using this technique:

Ban / un-ban based on distance jumped


Ban jump into segment s+0 of 4


Ban jump into segment s+1 from center


Ban jump into segment s+2


Ban jump into s+2 at t+1 unless jump into s+2 at at t-1


Ban jump into s+0 from present point


Ban jump into s+2 from present point


Ban jump into s+3 from present point


Ban jump into s+0 at t+1 unless jump into s+1 at at t-1

It’s easy to think of variants on all these themes, but I’ll leave them as an exercise for the interested reader.