Motion branch
Link minimum: 3 points
SOMETHING THAT DRAWS A LINE.
A fast mover doesn't sit still long enough to look like a point — it draws a line. This tutorial covers the separate branch that gates a streak, then links it across exposures and fields into a track with a measured rate. Nine tutorials, read in order — this is the sixth.
Unlike the Overview page, nothing on this page is invented. This describes the real pipeline — the same one the viewer, survey and cell browsers actually run.
A fast mover doesn't sit still long enough to look like a point — it draws a line.
This is a separate branch from stationary classification, triggered by the same shape numbers detection already measures: elongation and ellipticity, run high, mean something smeared through the frame during one exposure.
A streak isn't noise shaped wrong — it's an object caught mid-motion.
01 Real or bogus
The first gate asks whether the streak is genuinely there, the same question the point-source gate asks of a dot.
02 Keep or ditch
A cosmic-ray filter. Cosmic-ray hits also register as short bright streaks, and this stage throws those out before anything gets called an asteroid.
03 Short or long
Short reads as a fast asteroid candidate. Long reads as a satellite trail — same shape, a different speed across the sky.
Two points always draw a line
Any two detections, anywhere, can be connected by a straight line. That alone proves nothing.
Three points confirm it
A third detection landing on that same predicted line, at the predicted time, is what coincidence can't fake. A custom linker fuses same-night detections across different exposures — and different sky fields — into one track, requiring at least three mutually consistent points before it accepts a link, and reporting a measured rate and position angle.
2019 BE5, recovered blind
The known asteroid 2019 BE5 — magnitude V=15.1, moving roughly 50 degrees a day — was detected, classified, and linked across 2 different sky fields over a 70-minute arc, with no ephemeris fed into the detection step at all. The measured position and rate matched its catalogued values.
Blind, not aimed. The pipeline wasn't told where BE5 was — it found the streak, classified it, and linked it on its own, and the answer matched a catalogued object. That's a recovery, not a discovery: the honesty framing that governs every result this project produces is covered in the next tutorial.
Go watch it run.
Everything above is the real pipeline, explained in the order it runs. The browsers below are that same pipeline's actual output — a working ZTF difference-imaging system, not a mockup of one.
Or read what this project actually is