ControlPoint Manual — versioned with the code; worked examples are pinned by the test suite.
NAK2 booking — stadia + horizontal circle
What it does
The NAK2 with a circle attachment is a level that also reads stadia distances and horizontal angles — almost a theodolite with distance by stadia on the staff. TapeDrop's NAK2 book… mode is the paper booking sheet, live: one reading per row (Upper / centre / Lower / Hz), distance computed as 100×(Upper−Lower), the stadia mean checked against the centre wire on every row (a disagreement means a misread wire — flagged loud, in red), and Reduced Hz = circle − B/S circle. A change point books F/S then B/S on the same point, exactly as on paper. Process → fieldbook drops the whole book into the normal rise-&-fall pipeline (misclosure, adjustment, exports); ⬇ .dat with bearings writes the legs with their circle bearings — import that into the Levelling app and the compass plan view draws the run.
Worked example (pinned)
BM1 (B/S 1.500, stadia 1.550/1.450 → 10.0 m, circle 10°) → intermediate A (45°30′ reduced) → CP1 (F/S 1.200 then B/S 1.400 — one merged row) → BM2. Reduced levels close at +0.050 m; the CP merge, every stadia distance and every reduced bearing are pinned identically in the Python engine and this page's self-test.
Theory in one paragraph
Stadia distance uses the fixed 100× multiplier between the upper and lower cross-hairs; because the mean of the two stadia wires must equal the centre wire, every distance carries its own built-in blunder check — book all three wires before moving the staff. Circle bearings are relative to the backsight line unless you type its true bearing, and are compass-class only: they orient the plan, never the survey.