Jumper to Jumper

Previously I’ve looked at fractals created by a point moving half-way towards the random chosen vertex of a polygon. But you can also choose an initial vertex, then choose a new vertex by adding a random number to that initial vertex. Then repeat. For example, if the polygon is a square and the initial vertex is v = 1, then choose v + 3 = 4 or v – 1 = 3, and so on.

You can then ban or un-ban the choice of vertex-jump as you can ban or un-ban direct choices of vertex. These two methods of random choice are effectively the same, but one can be simpler to program than the other. That’s why I’ve come across some new fractals by using vertex-jumps. Here they are:

vertices = 4, vertex-jump = (1,2,3,4), ban on same choice twice in a row

vertices = 4, vertex-jump = (1,2,3,4), ban on 2 in row (black-and-white version)

v = 4, vj = (1,2,3,4), ban on choice c + 2 from previous choice c

v = 4, vj = (1,2,3,4), ban c + 2 (animated gif)

vj = (1,2,3,4), ban c + 2 (black-and-white)

vj = (1,2,3,4), ban c + 0 at time t+1 unless c + 0 at time t-1

vj = (1,2,3,4), ban c + 0 at t+1, unless c + 0 at t-1 (black-and-white)

vj = (1,2,3,4,5), ban c + 0

vj = (0,1,2,3,4), ban c + 0

vj = (0,1,2,3,4), ban c + 0 (black-and-white)

vj = (1,2,3,4), ban c + 2 at t+1 unless c + 2 at t-1 (animated gif)

vj = (1,2,3,4), ban c + various at t+1 unless c + various at t-1 (animated gif)

vj = (1,2,3,4,5), ban c + 0 at t+1 unless c + 0 at t-1

vj = (-2,-1,0,1,2), ban c + 0

vj = (-2,-1,0,1,2), ban c + 0 (black-and-white)

vj = (0,1,2,3,4), ban c + va unless c + va

v = 5, vj = (1,2,3,4), ban c + 0

v = 5, vj = (1,2,3,4), ban c + 2

v = 5, vj = (0,1,2,3), ban c + 3

v = 6, vj = (0,1,2,3), ban c + 2

v = 6, vj = va, ban c + va (animated gif)

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.