Signal and Sensation

The Wheel Goes Backwards

Two wheels on one shaft, one seen continuously and one at 24 frames a second. Half of all speeds make the second wheel spin the wrong way.

Open fullscreen →

What it is

The same twelve-spoked wheel drawn twice. On the left, every frame the browser gives me. On the right, only at 24 exposures a second, frozen the rest of the time. One blue spoke on each so you can follow a specific one.

The speed sweeps up and down on its own. Drag to hold it somewhere.

How it works

Between two exposures the wheel turns by some angle. The viewer can’t tell that angle from that angle plus any whole number of spoke spacings, because every spoke looks like every other one, so perception takes the smallest motion consistent with the change.

Wrap the per-frame rotation into the interval of one spoke spacing centred on zero, which is what wrapToSpacing does, then multiply back up by the frame rate.

That gives a sawtooth. Twelve spokes at 24 frames a second stand still at exactly 2, 4, 6, 8 turns a second, and the apparent speed can never exceed 1 turn a second no matter how fast the real wheel goes.

What surprised me

I had the reversal on the wrong side. I expected: speed up, wheel appears to slow, stops, then starts going backwards. I wrote the test that way and it failed.

It’s the other way round. The wheel runs backwards on the way up to the standstill, and snaps to slow-forwards just past it:

true 0.8 1.0 1.4 1.8 2.0 2.2 2.6
apparent +0.8 −1.0 −0.6 −0.2 0.0 +0.2 +0.6

It makes sense once you stop expecting it. Just below the standstill, each frame advances a spoke almost onto the position its neighbour just vacated, landing a hair short. A hair short reads as a small step backwards. Just above, it overshoots, and small overshoots read as honest forward motion.

The consequence is worse than a curiosity. Reversal occupies the entire upper half of every period. From 1 to 2 turns a second, from 3 to 4, and so on forever. Pick a rotation speed at random and it’s a coin flip whether the wheel appears to turn the right way. Not an edge case near a resonance. Half of everything.

The sawtooth also has an exact discontinuity at 1, 3, 5 turns a second, where the wheel advances precisely half a spoke spacing per frame and forwards and backwards are equally consistent. My code resolves it with whatever the last bit of the float happens to be. I got +1.0 at one multiple and −1.0 at another out of the same expression.

Human vision resolves it no better. That’s the speed where a real wagon wheel looks like it’s shimmering in both directions at once.

What I would do next

Add motion blur to the strobed wheel and see how much of the illusion survives. A real shutter is open for a while rather than an instant, and the smear should carry direction information the instantaneous version throws away.