The engineering notebook
How the machine at rangekeeper.dev was built, what it is measured against, and the thing it got wrong for a whole day: the right mechanism, cut to the wrong ship's gun.
A problem that will not sit still
Write the fire-control problem down and it moves. The future range is the distance to wherever the target gets to in T seconds; T is the time of flight for that range, which the gun's range table gives you. Each quantity is defined in terms of the other, so there is no first step.
A rangekeeper does not solve that by trying values. It is built so the two statements are the positions of two shafts, geared so they can only agree, and the mechanism runs continuously into the position where both are true. The machine is the fixed point, which is why it had to be a machine and not a table of numbers.
That makes it checkable in a way a simulation of a mechanism usually is not. The page runs the mechanism; the test solves the same fixed point by a completely different route, iterating the range-table lookup to convergence in ordinary arithmetic. Across the table's whole span the two disagree by at most 1.78 yards in 29,000. Neither method is the other's implementation, so agreeing is evidence rather than a tautology.
The wrong gun
The cam on this page was cut from the range table for the 16-inch 45-calibre Mark 6, which is the gun the North Carolina and South Dakota classes carried. The machine was right and the ship was wrong: the Iowa class carried the 16-inch 50-calibre Mark 7, firing the same 2,700 lb AP Mark 8 projectile at 2,500 feet per second rather than 2,300, out to 42,345 yards at forty-five degrees.
Nothing on the page was inaccurate. Every number was correctly transcribed from a real table for a real gun, and every check was green, because a check that compares a page against its own data cannot notice that the data is about something else. It took a person saying which ship they had served on.
The table is now the Mark 7's, and it is a better-behaved table than the one it replaced. All twenty-seven printed metric conversions are right; elevation, angle of fall, time of flight and maximum ordinate all rise with range; and striking velocity dips to 1,556 fps at 35,000 yards before rising again, which is what a shell coming down steeply does and is the one column where a naive monotonic check would be wrong. The Mark 6 table failed two of those and its errors are still quoted on the front page, because they are what this one was checked against.
Reading a scan by eye
The primary is BuOrd Ordnance Pamphlet No. 770, 16-Inch Range Table, 2,500 F.S. Initial Velocity to 42,345 Yards, October 1941. Thirty-three pages, scanned, with no text layer, the table itself running from page 16 to page 32 in hundred-yard steps.
It was read as images rather than through character recognition, and that was a deliberate choice rather than a convenience. Recognised digits in a range table are exactly the thing that must not be trusted: a 3 read as an 8 in an elevation column is invisible, plausible, and wrong by four hundred yards. So the rows were read by eye, and what was read is recorded row by row with the page it sits on. At 10,000 yards the pamphlet prints 5° 02.9′, with 302.9 in the minutes column beside it, which is 5.048 degrees against the secondary's 5.05.
What the primary has not been used for is the rows themselves. The nine on the page are still a sampling every five thousand yards from a secondary source, not a transcription of a table printed every hundred, and the data file says so in as many words so that reading the primary cannot be taken for more than it was.
Six mechanisms, and where the words come from
The parts bench is not an illustration. Each of the six does one piece of arithmetic by moving, and each is described in Hannibal Ford's own patent, Range-keeper, US 1,370,204, filed 4 December 1917 and granted 1 March 1921. Where the patent has words for a part, the page quotes them rather than paraphrasing.
The Navy's own training text says the same things in plainer language, and that turned out to matter. Of the component solver: “The most common application in range keepers is the resolution of own ship, target and wind motions into line and cross components with respect to the line of sight to the target.” Of the integrators: “Basically, they are all multiplying devices”, and the ones “employed to keep range are of the disk type, which is commonly used to multiply a rate by time.”
Two independent descriptions of the same mechanism, forty years apart, is a stronger footing than either alone.
Why the answer is late
Crank a new range into the rangefinder and the gun elevation does not jump. It slews, because a shaft is a shaft, and the machine has to be run before its reading is the answer. That is the page's subject rather than an animation: a continuously-solving machine is always showing you something, and what it shows during the slew is a solution to a problem that has moved.
The rates themselves are chosen rather than measured. No document consulted here gives a follow-up slew rate for this installation, so they are set to make the settling visible in a browser, and the honesty ledger says so. What is not invented is the shape: the follow-up is rate-limited and never overshoots, and bearing takes the short way round rather than unwinding through three hundred degrees.
Where this page was wrong first
- The wrong ship's gun, above. The largest of them, invisible to every gate.
- An accent that rendered as grey. The page declared
--accenton:root, and the shared stylesheet sets it onbody, which wins for everything inside. The rule was present, the colour was not, and only a computed style could tell the difference. The style test now reads the colour off the elements that carry it and asserts it is not the fallback. - Buttons with no styling. The parts bench shipped with browser-default buttons because the stylesheet had no
.rk-btn. Found by looking at a screenshot. - Readouts showing zero until you pressed Run. The machine solves continuously; the page did not, until it was made to evaluate once at load.
- A test that was wrong about a sign, and a mechanism that was right. Worth keeping because the instinct is to fix the code.
- Quoting a numbered list as prose. The Navy text prints its component list numbered; this page ran three items together into one sentence and dropped the numbers, which invents flow the document does not have.
What is not here
No spotting, no salvo pattern, no dispersion, no parallax between turrets, no wind aloft, no drift, no earth curvature or rotation, and no stable element: the ship in this machine does not roll. The range table is a sampling and the cam interpolates between nine rows rather than four hundred. And the Mark 8 Rangekeeper's own internals are not documented here. What is here is the family of mechanisms it was built from, the gun it pointed, and the shape of the problem all of it existed to solve.
Sources
- Hannibal C. Ford, Range-keeper, US Patent 1,370,204, filed 4 December 1917, granted 1 March 1921. The primary document for the mechanisms.
- BuOrd Ordnance Pamphlet No. 770, 16-Inch Range Table, 2,500 F.S. Initial Velocity to 42,345 Yards, October 1941. The primary range table, read as images.
- Naval Ordnance and Gunnery, NAVPERS 16116, Bureau of Naval Personnel, 1944. Chapter 18 lists the main battery fire-control system unit by unit; chapter 14 defines the mechanisms.
- navweaps.com, 16"/50 Mark 7. The sampled rows, cross-checked against the primary.