Paths in the Color Cube

02.08.2026
the cusp of L4R6

The above triangulation comes from my recent paper and shows a fundamental domain that can tile the plane. Here is a coloring problem: I want to color the above triangulation such that

My solution to this coloring problem led to some nice pictures, so I thought I would write it up. Let \(\alpha\) be the color of A and \(\alpha^c\) be its complement. What we want is two distinct ways to interpolate between \(\alpha\) and \(\alpha^c\). If we only wanted one interpolation, we could just linearly interpolate between them. But the linear interpolation is unique, so we need to find something else.

Computers store colors as a triple of values, each representing an intensity of either red, green, or blue (rgb). Classically, these are values between 0 and 255, but we may as well divide by 255 to get values between 0 and 1. Since we can represent colors as three values between 0 and 1, each color is a point inside a cube:

the color cube! (frame)

The color cube. You can interact with the image here.

The cube has a red axis, a green axis, and a blue axis. The origin \((0,0,0)\) is black and the opposite point \((1,1,1)\) is white. Let's sample some points:

the color cube! (frame)

You can interact with the image here.

The complement of a color is the color you need to add to get white. In other words, if you have a color given by \((r,g,b)\), then its complement is \((1-r,1-g,1-b)\). It follows that the complement of a color in the color cube is given by a sequence of three reflections.

I wanted the color of label A to be the link color I use for this website. We'll plot that color and its complement.

the color cube! (frame)

You can interact with the image here.

The first instinct for getting a gradient between two colors is to sample along a linear interpolation. We can visualize that really nicely:

the color cube! (frame)

The linear interpolation. You can interact with the image here.

Looking at that picture makes it clear what we should be doing: we need to find two paths between the two points. We can then sample along those paths to color the original triangulation picture. Luckily, there are many, many (many) such paths. So the rest is art: we'll look for paths that look good.

Here is a first attempt:

the color cube! (frame)

You can interact with the image here.

This is nice because the two paths are quite distinct, but there is a mucky yellow in there that I don't like.

What I ended up with was the following:

the color cube! (frame)

You can interact with the image here.

Even though the paths are closer together, the effect is quite nice:

L4R6 cusp with color

Lifting to (part of) the universal cover makes the two gradients come together. Dragging the eye from top to bottom has the effect of walking around the loop we made in the color cube:

L4R6 cusp with color cover