If you like circles, spheres and shapes that fit nicely together, you’ll probably like spherical circle packings. In this post, I’ll describe how I turned one into a lamp.

A circle packing is an arrangement of circles that fit tightly together, so that no circle can be enlarged without causing overlaps. Circle packing is a nice mathematical rabbit hole^{1}, but this post focuses on Steiner chains, which is the type of packing I used for building the lamp (more pictures of which can be found here).

## Steiner chains

A Steiner chain^{2} is constructed by surrounding a circle with a ring of additional circles that are all also tangent to a larger circle. In other words, a Steiner chain consists of circles packed in a circle (a concept I’ve previously explored in this project).

The fact that a Steiner chain fits tightly in a circle can be used to construct nested packings by repeatedly replacing the center circle with a smaller Steiner chain. Here’s an animation illustrating the idea.

The lamp is built from a total of 13 circles, forming a nested Steiner chain with two rings, each containing 6 circles.

## Deforming a circle packing

It’s intuitively clear that a circle packing can’t be arbitrarily deformed without “ruining” it. For example, stretching a packing in one direction turns the circles into ellipses. Luckily, there is a class of circle preserving planar deformations, so called Möbius transformations^{3}, that can be used to parametrically control the shape of a circle packing. This is really useful for parametric design purposes.

## Going spherical

The Möbius transformations described in the previous section turn out to be the only options for transforming a circle packing in the plane. However, if we venture into three dimensional space, there is another option: *inverse stereographic projection*^{4}. Loosely speaking, this transformation can be used to wrap a circle packing around a sphere.

For this project, I put together a parametric design tool to explore interesting spherical circle packings. This tool generates packings in three steps:

- Create a nested Steiner chain
- Apply a Möbius transformation
- Wrap the packing around a sphere using inverse stereographic projection

Here’s an animation showing the tool in action.

## Generating the blueprint

The previous sections outline a method for creating nice spherical circle packings. In order to create physical objects from these packings, I wrote some code for procedural generation of laser cutter blueprints. One cruical thing to keep in mind when making a pendant lamp is the center of mass. To ensure the lamp is hanging properly, the center of mass and the wire hole need to lie on the same vertical line. The center of mass calculation is simplified by the fact that it only has to deal with circles (the contribution from the joints is negligible).

## Building the lamp

Once I had generated a blueprint and manufactured the parts, assembling the lamp went pretty smoothly. All circles, joints and joint holes were numbered so I would not have to think too much during assembly.

Some more pictures of the lamp can be found here.