Ground Truth · the artifact is the signal
The Blade the Camera Bent
Photograph a fast propeller with a phone and the blades come out curved, sheared, or cut clean in half. People call it a glitch, a camera bug, a broken picture. It is the opposite of broken. The camera recorded the literal truth — it just didn't record it all at once.
A rolling-shutter CMOS sensor reads its rows one after another, top to bottom, a few microseconds apart. By the time the bottom row is read, the blade has moved. So each row catches the blade at a slightly later instant, and a straight blade images as a spiral. The bend isn't noise — it's a clock. Its exact shape encodes how fast the rows were read and how fast the prop was turning. Read the bend backward and you recover the numbers. Below, the page demonstrates the fit with model-generated angles.
Line time τ
30.86 µs/row
full read 33.33 ms
Per-row bend k = ω·τ
1.94 mrad/row
120.0° across the frame
RPM fitted from model samples
600
you set 600 · fit of model samples
Drag it up and watch the straight blade curl into a spiral. Faster spin, more bend — the bend is the speed.
How long the sensor takes to read all rows top-to-bottom. Slide it to 0 — a global shutter — and the blade snaps straight.
Each arm bends by the same per-row k — the spiral just repeats.
More rows over the same read time means a smaller τ per row.
The kinematics is one line. A straight radial blade at start angle θ₀, spinning at angular velocity ω = rpm·2π/60, imaged on sensor row y (rows counted from the top, each delayed by the line time τ), appears at angle
The slope of that imaged curve — angle per row — is the constant k = ω·τ. That single number is the clock. The right-hand canvas above renders the blade purely from this equation, row by row, as the red readout line sweeps down. The pink overlay is the prediction θ(y) drawn straight on top — they coincide because they're the same equation. Then the page fits 60 angles generated from the slider inputs by that model. Least squares recovers k, and division by the known τ gives the RPM. It lands back on the number you set: a check of the model's algebra, not a measurement of the canvas.
The check — the bend, read backward, in front of you
These figures update live with the sliders. The fitted RPM comes from the slope of model-generated angles. The samples use the slider inputs; the fit does not read the drawn image.
Slide the readout time to 0 and τ → 0, so k → 0 and the blade is straight: a global shutter has no clock to read. Run the kinematics headless: node research/the-blade-the-camera-bent/verify-the-blade-the-camera-bent.mjs — it recomputes the spiral, recovers k by an independent least-squares fit, and asserts every number on this page.
What's exactly true here, and what's idealised
Exactly true. The readout model is the documented one: a CMOS rolling shutter reads rows sequentially with a fixed per-line delay τ, so a feature present at angle θ₀ when row 0 is read is at θ₀ + ω·(y·τ) when row y is read. The slope of the imaged curve is therefore the constant ω·τ in radians per row, and the total skew across an N-row frame is ω·N·τ = ω·T_readout. The inversion is a clean linear fit — the curve is a line in (row, angle) space, so its slope recovers ω·τ exactly. This is pure kinematics; nothing is fudged.
When angles wrap. The fit uses unwrapped angles generated by the model, so it recovers the slope at any speed. A total bend past 180° does not by itself imply a crossing on screen or a need to unwrap measured angles. When reading a photograph, angle wrapping and which blade a point belongs to have to be checked from the samples. At 950 RPM and a 1/30 s readout, the total bend is 190°, yet each arm's raw angles can be fitted without unwrapping.
The model, named. This page models the idealised linear row-sequential readout — the standard model. A real photograph adds effects this instrument does not: each row integrates light over a finite exposure, so a fast blade is smeared (motion blur) rather than frozen at one instant; readout direction varies by sensor and crop mode (top-to-bottom, bottom-to-top, even sideways); and electronic-shutter readout can be non-uniform. The clean spiral here is the geometry under the blur, not a claim that a real frame has razor edges.
Free choices. The default reading uses 1080 rows and a 1/30 s (33.33 ms) full readout — a deliberately slow consumer-CMOS figure, in the range of horshack-dpreview's measured per-camera compilation, which includes a Nikon Z5 Photo readout of about 111.85 ms (about 1/9 s), some medium-format readouts near 1/3 s, and readouts of a few milliseconds on fast-readout and stacked sensors. The corresponding line time τ ≈ 31 µs/row sits in the documented 5–35 µs band. Per-camera τ values are measured, not derived from first principles, and vary by sensor, resolution and crop mode — so treat the absolute τ here as representative. What is exact regardless of the chosen numbers is the relationship: the bend is ω·τ per row, and recovering one given the other is just division.
Not the wagon-wheel effect. That illusion (a wheel appearing to spin backward on film) is inter-frame temporal aliasing — the camera samples the motion too rarely between whole frames. This is intra-frame readout geometry — the distortion happens within a single exposure, because the one frame isn't captured at a single instant. Different mechanism, same lesson: a sampling process can write a faithful record that still misreports the motion.
Corrections
Corrected 2026-10-14: The page said its RPM fit sampled the rendered curve without using the inputs. It fits angles generated from the slider inputs, then divides the fitted slope by the known line time; it does not measure the canvas; found by the assay line, 2026-10-14.
Corrected 2026-10-14: The sensor image was presented as the full blade image, but it omitted valid disconnected pieces. It now draws the blade at each row's capture time, including those pieces; found by the assay line, 2026-10-14.
Corrected 2026-10-14: The page said a bend past 180° makes the image cross itself. A 190° bend at 950 RPM and a 1/30 s readout has no crossing away from the hub, so 180° is not an overlap threshold; found by the assay line, 2026-10-14.
Corrected 2026-10-14: The page said angles from a photo must be unwrapped once the bend passes 180°. At 950 RPM and a 1/30 s readout, each arm's raw angles can be fitted without unwrapping; whether unwrapping is needed depends on the sampled angles; found by the assay line, 2026-10-14.
Corrected 2026-10-14: The page put the slow end of typical stills readout near 1/15 s. The cited table already listed the Nikon Z5 Photo readout at about 111.85 ms (about 1/9 s) in 2025; found by the assay line, 2026-10-14.
Corrected 2026-10-14: The offered check called the blade curve an Archimedean spiral. Its constant slope is angle per sensor row, not angle per radius; the check now names the quantity it tests; found by the assay line, 2026-10-14.