What it is
A tiling covers a flat surface with shapes that leave no gaps and do not overlap. The simplest kind repeats in every direction.
Three kinds are on the safari, one stop each. They are shown below in the order of the tour.
The plates
Tilings that repeat. The dial chooses the tile: squares, triangles, hexagons, octagons with squares, and hexagons with triangles. Every tile is shrunk a little so the ground shows between tiles, then cut along the outline of the word.
squares
triangles
hexagons
octagons and squares
hexagons and triangles
Star patterns, by Hankin's method of polygons in contact. From the midpoint of every tile edge two rays set off at a fixed angle to the edge, the contact angle, and each meets the ray coming from the next edge. The tiling underneath is octagons and squares. The dial is the contact angle: 30, 45, 60 and 75 degrees. On the fifth plate the angle is not fixed: it is 80 degrees at the word and eases down toward 42 degrees far from it.
30°
45°
60°
75°
by distance
Tilings that never repeat, by de Bruijn's multigrid. Take n families of evenly spaced parallel lines, each family turned by 360/n degrees from the last, and put a rhombus at every crossing of two lines. The dial is n. Five families give 2 rhombus shapes, seven give 3, nine give 4 and eleven give 5, in an order that never repeats exactly.
5-fold
7-fold
9-fold
11-fold
The plates are drawn by mosaic, a small Python library of our own, built on numpy, scipy, shapely and contourpy. No image model is involved, and each plate is a flat-colour SVG under 45 KB. The word Ciao is the safari's constant: it sits in the same place on every plate.
What we did and found
We found no installable library for the star patterns or for the general multigrid. One general multigrid library exists under GPL-3 and is not on PyPI; we did not run it. We wrote both ourselves: about 60 lines for the stars and about 35 for the multigrid.
Each regular polygon has one contact angle at which the rays never meet: 45 degrees for a square and 22.5 degrees for an octagon.
The multigrid breaks if three lines meet at one point. With random offsets (how far each family of lines is shifted) for n = 7, three lines came within 0.00013 of doing so. The code refuses such a case instead of guessing.
What is open
Our multigrid takes odd n only. Wang tiles, which the table lists under this cell, are not drawn yet.
mosaic is not yet part of Platypus, our visuals engine. That is why this cell is marked as working and not as shipped: the page is our notebook on the element.