Demo: vibecoding Manfred Mohr’s “Complementary Cubes” (1973–74).…

Demo: vibecoding Manfred Mohr’s “Complementary Cubes” (1973–74). Mohr’s original description says
“[show] 2 sequences of subsets of all the combinations of 2 rotating cubes, one with ‘n’ edges and the other with ‘12 minus n’ edges…”

I rebuilt Manfred Mohr’s unreleased “Complementary Cubes” film sequence using a vibecoding workflow and POV-Ray. It went like this: describe a visual/mathematical idea in natural language, let the computer generate and refine code, then shape it back toward the original artistic intent.

This piece has an elegant structure: two wireframe cubes rotating in synchrony, their edges distributed so that between them all twelve cube edges are always present. One cube has n edges visible; the other has 12 – n. Each second, exactly one edge leaves one cube and appears in the other.

Matching Mohr’s geometry and pacing meant:
– rebuilding a 12-edge data structure,
– designing a Gray-code sequence for one-edge transitions,
– locking the cubes in place with orthographic projection,
– and tuning rotation so they spin next to each other rather than orbit.

It is wild to realize that Mohr programmed this in the early 1970s without real-time preview. Months could pass between writing the code, sending it to compute, and seeing the film output. The planning and imagination required for that level of abstraction is astonishing—and the resulting animation still feels crisp, minimal, and conceptually sharp fifty years later.

It feels fitting to approach it now with tools he didn’t have: conversational coding, GPU raytracing, and an iterative visual feedback loop—yet staying true to the mathematical bones he built.

Gray code is super interesting -- I discovered it last Summer while teaching a class called Unconventional Computing. Named for Frank Gray, this is an ordering of the binary numeral system such that two successive values differ in only one bit (binary digit). This makes more sense when you count out a binary sequence with your fingers.