A bit about the mathematics
Full details appear in the published paper.
Full details appear in the published paper.
Jump to a question:
Start by designing a planar link. The complex-valued formula
$$a_1 e^{i t} + a_k e^{ i k t}$$
always traces a curve with $n$-fold rotational symmetry, provided k is congruent to 1 modulo n. Read the details in my book, Creating Symmetry, the Artful Mathematics of Wallpaper Patterns, from Princeton.
The coefficients can be any complex numbers. If you have a way to display the resulting parametric curve, you can wiggle the coefficients until the design suits you. This gives a curve in the x-y plane.
Motion in the z direction is introduced by a z-component like cos(n t) or sin( n t ). A phase angle can be introduced to control the rhythm of the up-down wiggle.
I use Grasshopper, a plug-in for Rhino. Once the base curve is established, I use a Grasshopper Pipe component, with a component to control the radius. I can then fatten up the curves as I please.
For each pattern type, there is a pair of vectors that generate its translational symmetry. Grasshopper makes it easy to put a grid of links out, using the lattice generated by those two vectors. When I first see the collection of rings spread out, it's likely that they will be too small or too large. Since the identical shapes of all of them are controlled by a single set of parameter widgets, I can just adjust the pattern until it clicks.
The process is entirely empirical! Since the base curves have no thickness at all, they intersect with probability zero. This suggests that there is always some way to wiggle them to avoid self-intersections. It bowled me over to realize that there are so many wonderful patterns to be found through this technique.
I don't know. That seems to be the default design for Google pages and this is my first one.