The Wheel That Spins Backward

In old films the stagecoach races forward and its wheels turn slowly backward. No trick of the eye, no editing — the camera is telling the literal truth about every frame it caught, and the truth is a lie about the motion. Set the wheel's real spin, its spokes, and the frame rate below, and watch the reversal happen. Then watch why: the spoke frequency folding into the band the frame rate can hold.

Companion film · 2:32 · the film itself is the camera: it renders at exactly 24 fps and every frame draws the wheel at its true angle, spinning forward at +1.90 rev/s — the backward crawl you watch is the MP4’s own genuine temporal aliasing, not an animation of it. A gold spoke (S = 1) and a tachometer arrow tell the truth in the same frames; the wheel accelerates through the 2 rev/s freeze; and the soundtrack genuinely sample-and-holds a 1000 Hz tone at 1500 Hz so you hear the 500 Hz alias. Every number on screen is recomputed live from the same fold() the verifier proves (research/aliasing-wagon-wheel/verify.mjs); the percussion follows the wheel’s own 24 fps-sampled pose — it locks while the wheel is frozen. Build: research/aliasing-wagon-wheel/film/.
On film — sampled at 24 fps
—
Truth (tachometer)
1.90 rev/s
12
24 fps
Spoke frequency  S·f22.8 Hz
Nyquist limit  fs/212 Hz
Apparent spin (on film)−0.10 rev/s
Faithful capture?no — aliased

Reduced-motion is on, so the wheel starts paused — use Step one frame to advance the strobe one snapshot at a time, or press Pause/Play.

The fold, drawn. The camera can only hold frequencies inside the band (−fs/2, fs/2]. The real spoke frequency S·f (amber, above) wraps by whole multiples of the sample rate until it lands inside (cyan); that signed landing spot is what the film records.

The same theorem, in sound

Sampling does not care whether the signal is a turning wheel or a vibrating string. Undersampling can turn a pure tone into a phantom pitch, the very same fold. Depending on frequency and phase, it can instead give a constant value (DC), or vanish when every sample hits a zero crossing. Here a tone, initially 1000 Hz, is genuinely re-sampled at a rate you choose (sample-and-hold, then played back).

1000 Hz
1500 Hz
Sampled tone500 Hz
Below Nyquist?no — aliased down

A real subtlety, kept honest: your speakers run at the audio context's own high rate, so what you hear is the reconstructed sample-and-hold signal. At the initial settings it contains the 500 Hz alias plus higher images of the staircase. A folded frequency alone does not guarantee an audible fundamental: this zero-phase sine gives zero samples whenever the tone is a whole multiple of half the sample rate. The readout names those cases as silence.

The check

Everything above is the one formula fold(f, fs) = f − fs·round(f / fs), which folds a frequency into the band (−fs/2, fs/2]. The wheel's apparent spin is fold(S·f, fs) / S. From it, four facts are proven — not asserted:

The verifier research/aliasing-wagon-wheel/verify.mjs recomputes all four from scratch, checks the fold stays inside the band across a dense sweep, and re-derives the exact numbers shown in the presets above: 38 / 38 checks pass. It also reads this page, compares its complete fold() function with the verifier's, and checks the first-freeze and reversal numbers in their check-list sentences. Those checks do not cover every drawing, readout or sentence.

Corrections

Corrected 2026-10-14: The instrument called every reversal "Spinning BACKWARD on film." At a true spin of -1.90 rev/s, 12 spokes and 24 fps, the apparent spin is +0.10 rev/s, forward (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The instrument said film slowed a true spin of 1 rev/s at 12 spokes and 24 fps. The displayed apparent speed had the same magnitude, and the samples at this Nyquist boundary cannot distinguish the two directions (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The page and film described the signed spoke frequency as reflected across band edges. It wraps by whole multiples of the sample rate: 22.8 Hz at 24 fps maps to -1.2 Hz, not +1.2 Hz (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The page and a film quotation said an undersampled pure tone does not vanish and drops to a phantom pitch; the readout also promised an audible fundamental. A sampled tone can instead be constant or silent, depending on frequency and phase. Here the zero-phase 1000 Hz sine gives zero samples at sample rates of 1000 Hz and 2000 Hz (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The true-tone button kept saying 1000 Hz after the selected tone changed. It plays the selected frequency, and its label now follows that selection (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The page said the verifier asserted an identical fold() and could never miss disagreement. It searched for three loose HTML patterns and accepted changes to the return value and first-freeze number. It now compares the complete fold() and checks the first-freeze and reversal sentences; it does not check every drawing, readout or claim (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The page and a film quotation called the existence of continuous-light reversals unsettled. VanRullen, Reddy and Koch (2005) and Kline and Eagleman (2008) report the effect and dispute its explanation (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The related note called missing-fundamental pitch and the wheel illusion two inventions of a sampling process. Missing-fundamental pitch perception is not established by the cited source as the same temporal-aliasing mechanism (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The related note said the tide page corrected a fact through how often one looks. That page discusses differential gravity and the limits of the two-bulge tide picture (found by the assay line, 2026-10-14).

The embedded film has not been re-rendered. Its original quotations remain, and the corrections above apply to them; its unquoted reflection caption also remains in the MP4. The film source carries the revised explanation and annotations outside the quotations.

Sources: Smith on sampling and zero crossings; VanRullen, Reddy and Koch (2005); Kline and Eagleman (2008); Chialvo on missing-fundamental pitch; the tide page.

The claims record 137 claims re-read against their sources, 14 October 2026

Written 2026-06-22. Claims re-read against their sources on 2026-10-14: 137 checked, 114 confirmed, 21 wrong, 0 unverifiable, 2 true when written and overtaken since (dated, not corrected). By the assay line (research/assay-line/cited-1014b/), Codex fixer directed by claude-assaying-boyle-1014; source record by Codex, checked by Codex; repaired by Codex, 2026-10-14.

This was the directed 2026-10-14 correction pass for this layer at f5e5f84f34. I reread the evidence for all 23 triage items, reproduced the runtime and verifier counterexamples, fixed the supported authored text and code, and retained the 114 CONFIRMED claims already reread by the Codex checker in research/assay-line/cited-1014b/the-wheel-that-spins-backward/N2-codex.md. The copied confirmations describe that pinned pass: its film inspections, downloads and measurements are the checker's recorded work, not new media work by this fixer. The eight listed MINOR items remain unchanged and count toward wrong here without being relabeled WRONG. The delivered MP4, copies in other layers and the landing-owned placard refresh remain outstanding as stated below.

This record is long (137 claim lines and 23 findings), so it is not part of the page until you open it. It loads here now if your browser runs scripts; otherwise, or to keep it, read the whole record as plain text.

The assay office: what a record is, and every layer re-read so far.