explainer tools / ORIGINALS
Camera timing model · bend + exposure blur illustrative timings
Camera sensors · two clocks

Rolling Shutter Propeller

Why does a photo bend a spinning propeller — and sometimes smear it? When each sensor row starts makes the bend. How long each row stays open makes the blur.

Shutter
Experiment · predict, then press
Bright lightDim light Rolling Global

Model notes & sources

Two clocks, two effects

Each sensor row r (0 = top, 1 = bottom) collects light from start to end.

  • Rolling: start = r × readout, end = start + exposure.
  • Global: start = 0, end = exposure for every row; the stored charge is read out row by row afterwards, so readout time cannot bend the image.
  • Blade angle θ(t) = θ₀ + ωt, ω = 2π × rpm / 60. Turn during a duration: rpm × 6 × ms / 1000 degrees (1500 rpm × 20 ms = 180°).
  • Bend = turn between the top row's start and the bottom row's start (readout; zero for global). Blur = turn while one row is open (exposure; the same for both shutters).

How the photo is computed

Every photo pixel is the time-average of the scene over its own row's window. Because the blade turns uniformly, that average equals an angular box filter of the blade's polar profile. The profile is supersampled 4× per 0.25° bin and stored as prefix sums per radius, so each pixel's integral is exact and constant-time, even for windows longer than a full turn. Finished photos are cached per frame; while a frame is "developing", only rows still collecting light are recomputed, and pixels brighten in proportion to the light gathered so far.

The card thumbnails isolate one cause each: bend uses your readout with an instant exposure; blur uses your exposure with every row starting together.

Assumptions & honest limits

  • Uniform rotation, linear row timing, equal exposure for every row, ideal optics.
  • Brightness is normalised as if gain/ISO compensates exposure; a real short exposure is darker unless the camera amplifies it.
  • The photo has 200–400 rows on screen, not the thousands in a real sensor; the timing law is the same.
  • Not modelled: mechanical curtain shutters, camera shake ("jello"), flicker, sensor noise statistics (the grain is decorative), lens distortion, blade flex, global-shutter parasitic light.
  • illustrative Preset timings (20 ms readout, 1/4000 s and 1/125 s) are typical-looking values, not measurements of a specific camera; readout times vary widely by device and mode.
  • On screen, readout + exposure is slowed so every scan lasts 2.4 s, then the finished photo holds for 1.6 s. The slow-motion factor is printed beside the views and returned by demo.getState(). Bend and blur numbers are model outputs computed from your settings.

Sources

Keyboard

All controls are native sliders and buttons. Press Space (outside a control) to pause or play.

Original code and art by explainer tools. Schematic teaching model.