Two Slits One Pattern

Mar 2, 2026 · Microblog #8
physics oscillation aliasing

24 uncoupled pendulums swinging at arithmetic frequencies. No pendulum talks to any other. The wave pattern is entirely in your eye.

Harvard's Natural Sciences Lecture Demonstrations built a physical version of this in wood and steel: 15 pendulums, each tuned so that the longest completes 51 oscillations in 60 seconds, the next 52, and so on up to 65. At t=0 they all line up. A few seconds later they form a traveling wave that splits in two, slips into interference, and then resembles chaos. At exactly 60 seconds, every pendulum has completed an integer number of cycles and they all snap back to their starting positions simultaneously.

Each pendulum swings independently, so the apparent wave comes from spatial aliasing: sample 15 or 24 simple harmonic oscillators at slightly different frequencies, arrange them in a line, and the phase gradient across that line reads to the eye as a wave front moving through the array. The brain, trained on water and rope, supplies the coupling between them.

The sketch uses 24 pendulums on an arithmetic frequency ladder. Each pendulum i gets one more step up:

const N = 24;
const baseFreq = 0.8;
const freqStep = 0.032;

class Pendulum {
  constructor(i) {
    this.freq = baseFreq + i * freqStep;
  }

  getAngle(t) {
    return Math.sin(this.freq * t) * 0.85;
  }
}

The mechanism is a linear increase in freq by index and a pure sine getAngle with no memory or coupling. Each bob paints 60 fading dots behind it, making the spatial phase difference legible as a ribbon of motion.

We perceive the collective phase difference as a wave. The pattern is real information encoded in the array, carried by no individual pendulum. To see it, you need the whole row and a sufficiently persistent eye (or a trail buffer); the same reason you can't hear a chord by listening to one string.

Artifact

Pendulum Wave

24 uncoupled pendulums at arithmetic frequencies producing traveling wave patterns through spatial aliasing.

View artifact →