As I’ve explained before on Overlord of the Über-Feral, the planet’s premier purveyor of polygonic performativity (probably (possibly (perspectivistically))), it works with triangles and pentagons, but not with squares. And what is “it”? A simple procedure in which you create a polygon, choose a point inside it, then repeatedly move half-way towards a vertex chosen at random, marking each new position as you go.
When the polygon has three vertices, you get a Sierpiński triangle. When it has five, you get what might be called a Sierpiński pentagon. When it has four, you get nothing. Or rather: you get everything, because the whole interior of the square gradually fills with points. But, as I’ve also explained before, there’s a simple way to change this. You can adapt the procedure so that a vertex can’t be chosen twice in a row, and so on.
When the rule is “No vertex twice in a row”, you get this fractal (colours change as a pixel is selected again):
But you can also use what might be a vertex increment, or vi, whereby you disallow vertices that are next to the previously chosen vertex, or two positions away, and so on. When the rule is “No vertex twice in a row”, the disallowed vertex is (v + 0), that is, vi = 0. If vi = 2 and the rule is disallow(v + 2), this fractal appears (when vi = 1, there’s no fractal):
v = 4, vi = 2
You can extend these rules to apply not just to the previously chosen vertex, but also to the vertex chosen before that. Here are some fractals produced by the rule disallow(v[1] + vi[1], v[2] + vi[2]), where v[1] is the vertex previously chosen and v[2] is the vertex chosen before that:
v = 4, vi[1] = 1, vi[2] = 2
v = 4, vi[1] = 2, vi[2] = 0
v = 4, vi[1] = 2, vi[2] = 1
v = 4, vi[1] = 2, vi[2] = 2
And here are some fractals produced by the rule disallow(v[1] + vi[1], v[2] + vi[2], v[3] + vi[3]):
v = 4, vi[1] = 1, vi[2] = 1, vi[3] = 0
v = 4, vi[1] = 1, vi[2] = 1, vi[3] = 2
Applying these rules to pentagons rather than squares doesn’t produce such a dramatic difference, because the original procedure – choose any vertex at random, taking no account of previous choices – produces a fractal when v = 5, as noted above, but not when v = 4. Nevertheless, here are some fractals for v > 4:
v = 5, vi = 0
v = 5, vi = 1
v = 5, vi = 2
v = 5, vi[1] = 0, vi[2] = 0
v = 5, vi[1] = 1, vi[2] = 0
v = 5, vi[1] = 2, vi[2] = 0
v = 5, vi[1] = 1, vi[2] = 1
v = 5, vi[1] = 1, vi[2] = 1, vi[3] = 1
v = 5, vi = various
v = 6, vi = 1