A report on replacing a closed-form empirical spin drift formula with a physics-based model, and what happened when the result was checked against an independent, modern measurement source.
Disclaimers
Disclaimer 1
I am no ballistician. I am no mathematician. I am no physicist. I got my diploma 30 years ago, and my brain has not stopped rusting since. If some bits of the article seem obvious to the real engineers out there, please bear with me [unrelated picture of a bear here] — I understand it better myself when I actually write it down.
Disclaimer 2
Animals were hurt with extreme prejudice AI was used extensively to write this article, because my grammar English and spelling often not — LaTeX formula transcription, translation from languages I am better at, general flower decorations, etc. (I particularly cherish the idea of huge data centers emitting CO2 all over, melting ice caps, destroying natural habitat of cute, fluffy animals with heart-melting eyes, and causing constipation and heartburn among the Green Party activists.) God bless robots — they take care of stupid shit, while humans can consecrate themselves to Knowledge and Creation.
Disclaimer 3
I personally almost never use spin drift calculations in my shooting practice. At the shooting spots I have access to, at ranges where spin drift begins to matter, a typical wind reading error has an order of magnitude bigger effect on the impact than not accounting for spin. So to me it was essentially an armchair exercise, academic rather than practical, to check the limits of today’s “consumer-grade” solver models.
Introduction
Every spinning bullet drifts sideways, slightly, in the direction of its spin — a right-hand-twist rifle throws its bullets a little to the right, a left-hand twist to the left, independent of wind. At 300 meters it’s a rounding error. At 1000 meters it can be tens of centimeters — enough that any long-range trajectory calculator worth using has to account for it.
Almost none of them compute it from first principles. They use a closed-form empirical formula — typically Bryan Litz’s well-known curve fit — because the physically correct approach requires data essentially no consumer ballistics application has access to: a full set of measured aerodynamic moment coefficients for the specific bullet in question.
This is an account of an actual attempt, in my own trajectory calculator (bc.geladen.ch), to replace that empirical formula with McCoy’s Modified Point Mass Model — the standard physics-based reduction used throughout professional exterior ballistics — and what happened when I checked the result against Lapua’s own radar-measured 6-DOF calculator output. The title refers to the gap between the two models: a full 6-degrees-of-freedom rigid-body simulation, and the 4-degrees-of-freedom simplification that makes the physics tractable for anyone without a wind tunnel.
The short version: the physics-based model is a real improvement over the empirical formula, but getting there meant finding and fixing a couple of wrong turns along the way — including, at one point, seriously wondering whether the most authoritative textbook in the field had a measurement error in it. It did.
Part 1 — The physics of spin drift
Why a spinning bullet drifts
A bullet in flight is constantly being pulled downward by gravity. Its flight path curves; its long axis, spinning rapidly, resists being reoriented — that’s what “gyroscopically stable” means. The combination produces a small, persistent mismatch: the bullet’s nose ends up pointing a little off from the direction it’s actually traveling. That small angle is called the yaw of repose.
Here’s the counterintuitive part, and it’s the whole mechanism: a gyroscope subjected to a torque doesn’t tip over in the direction of the push. It precesses — the axis moves 90° away from the applied torque, in the direction of spin. Gravity’s steady pull, acting on a spinning bullet, applies exactly this kind of torque, and the result is that the nose doesn’t just droop — it swings sideways. For a right-hand twist, it swings right.
Once the nose is offset from the flight path by even a fraction of a degree, the airflow hits the bullet at a slight angle — an angle of attack — and produces a small aerodynamic lift force, the same way any airfoil at a slight angle produces lift. That lift force doesn’t point up or down; it points in the direction the nose is offset. Integrated over the whole time of flight, this small, steady, sideways force is spin drift.
The gyroscopic stability factor
Whether a bullet is gyroscopically stable at all — spinning fast enough that this precession settles into a small, steady offset rather than tumbling — is governed by the gyroscopic stability factor, conventionally written Sg:
In plain terms:
- Ix — the bullet’s axial moment of inertia: how hard it is to speed up or slow down the spin itself (resistance to twisting about its own long axis).
- Iy — the transverse moment of inertia: how hard it is to tip the nose off axis (resistance to tumbling end over end).
- p — the spin rate, in radians per second, set by muzzle velocity and rifling twist rate.
- ρ — air density.
- d — bullet diameter (caliber).
- CMα — the overturning moment coefficient: how hard the airflow itself tries to tip the bullet’s nose away from the direction of travel when it’s slightly yawed. This is a property of the bullet’s external shape, not something a consumer ever measures directly.
- V — velocity.
Sg > 1 means the gyroscope wins — the bullet is stable. This is the same physical quantity Miller’s Twist Rule (the widely-used rule of thumb for picking a barrel twist rate) approximates from much simpler inputs (bullet weight, diameter, length, twist rate, velocity) — no aerodynamic coefficient required. I verified the exact relation above directly against one of McCoy’s own published worked examples before relying on it (see Part 3).
From yaw of repose to drift
The classical (small-yaw, gravity-only) form of the yaw of repose is:
where S is the bullet’s reference cross-sectional area and v × g is the cross product of velocity and gravity — the mathematical expression of “gravity’s pull, acting on a moving, spinning body, produces a sideways-precessing offset.” This αR then feeds directly into a lift-force term in the equations of motion, and integrating that lift force over the whole flight is what produces the accumulated sideways drift.
Part 2 — 6-DOF, 4-DOF, and closed-form: the modeling hierarchy
Full 6-DOF: the complete picture, and why it’s impractical for a consumer tool
A full six-degrees-of-freedom simulation tracks a bullet’s position and velocity (3 degrees of freedom) and its complete orientation and rotation rate in three dimensions (3 more) — the bullet as a rigid body, no simplifying assumptions. It captures everything: the fast, visible coning motion a bullet’s nose actually traces around the flight path in the first few meters after leaving the muzzle, nonlinear aerodynamic effects that only show up at larger yaw angles, transient behavior near apogee on high-angle shots — the whole picture.
Two things make it impractical for a consumer ballistics app:
- Data. A 6-DOF simulation needs a full set of aerodynamic coefficients — drag, lift, overturning moment, Magnus force and moment, pitch damping, spin damping — each as a function of both Mach number and yaw angle (several of them measurably nonlinear in yaw). This data comes from spark-photography free-flight ranges, wind tunnels, or Doppler radar campaigns. Bullet manufacturers rarely publish it, and for the overwhelming majority of commercial bullets it doesn’t exist in any public form at all.
- Computational cost. Resolving the fast coning motion requires a very short integration step — short enough to catch a full oscillation cycle that can complete within a few meters of travel. That’s fine for a single trajectory computed once. It’s a real problem for a Monte Carlo dispersion or hit-probability feature that needs to run a full trajectory thousands of times per second, or for an interactive UI that recomputes on every field edit.
McCoy’s Modified Point Mass Model: 4 degrees of freedom
Robert L. McCoy — a career scientist at the U.S. Army’s Ballistic Research Laboratory — is the author of Modern Exterior Ballistics, the standard reference textbook in the field, the book most professional and military exterior ballistics work in the English-speaking world builds on. The Modified Point Mass Model (MPM) he documents (originally derived by Lieske & Reiter at BRL in 1966) is the standard reduction of full 6-DOF used whenever the full simulation isn’t practical.
The simplifying move is precise: rather than integrating the bullet’s full, fast, transient coning motion, extract just its particular solution — the small, steady yaw of repose the coning motion settles around — and integrate that. The fast wobble on top of it is discarded. This collapses the state down to position, velocity (3 degrees of freedom), and axial spin rate (1 more) — 4 degrees of freedom — with the yaw of repose computed algebraically at every step from the bullet’s current speed, spin, and aerodynamic coefficients, rather than tracked as its own independent state. McCoy’s own validation in the book shows this reduction tracking a full 6-DOF solution closely for typical small-arms and artillery trajectories.
This is dramatically cheaper to compute than full 6-DOF — ordinary step sizes work fine, no coning frequency to resolve — but it still needs real aerodynamic moment data: CMα, CLα (lift slope), Magnus coefficients, moments of inertia. That data is exactly as unavailable to a consumer app as it is for full 6-DOF. MPM solves the computational problem 6-DOF has; it does nothing for the data problem.
Litz’s closed-form approximation
Bryan Litz — a professional ballistician and aerospace engineer — publishes a much simpler formula, widely adopted across consumer ballistics software (including this project’s own, until this work):
where Sg is gyroscopic stability (computable from Miller’s Twist Rule — no aerodynamic coefficient needed) and TOF is time of flight (already produced by any point-mass trajectory solver). This is not an arbitrary curve fit disconnected from the physics above — it’s fit to the same underlying relationship the classical yaw-of-repose formula predicts (drift scaling with stability and a power of time of flight), collapsed down to two inputs any point-mass calculator already has, at the cost of any awareness of the specific bullet’s actual shape. That tradeoff — real accuracy for a specific, well-behaved bullet shape, in exchange for needing no data most users don’t have — is exactly why it’s the practical default nearly everywhere.
Part 3 — This project’s journey
Starting point
The app’s existing spin drift calculation was Litz’s formula, using Miller’s Sg. It required no new bullet data and had been in production, unmodified, since it was added. The question this project set out to answer was whether replacing it with McCoy’s MPM — sourced directly from the book — would meaningfully improve accuracy.
Sourcing the physics, and the first validation
The relevant equations were transcribed directly from Modern Exterior Ballistics (2nd ed.) — the general yaw-of-repose equation (McCoy’s eq. 9.56, including a Magnus-moment term the classical form drops), its classical reduction (eq. 9.57), and the final translational and spin-rate equations (eqs. 9.59–9.60).
Equation (9.56), the general yaw-of-repose:
Equation (9.57), the classical reduction, obtained from (9.56) by dropping the two Magnus terms (the CMpα term in the numerator, the CNpα2 term in the denominator) — the same reduction transcribed above cancels CLα top and bottom:
and since the drag component of V̇ (the bullet’s actual instantaneous acceleration) is parallel to v — the cross product of two parallel vectors is zero — this further reduces, to a very good approximation, to the form this project actually implements:
Equation (9.59), the translational equation of motion:
Equation (9.60), the spin-rate equation — rather than a fresh verbatim transcription, this one comes from this project’s own implementation (independently cross-checked against a secondary source, Baranowski et al. 2020, which reproduces the equivalent STANAG 4355 form cleanly):
A few terms here haven’t been introduced yet:
- CD — the bullet’s total drag coefficient at its current yaw, CD0 + CDα²αe2 (the CD0 part is exactly the Mach-indexed drag curve every point-mass calculator already needs; the CDα²αe2 part is a small extra term — “yaw drag” — from the bullet flying very slightly sideways to the air).
- V̇ — the bullet’s actual, total instantaneous acceleration (drag, lift, gravity, everything at once) — distinct from g, gravity’s acceleration alone.
- CNpα — the Magnus force coefficient: how strongly the combination of spin and yaw produces a sideways force, distinct from CMpα, the Magnus moment coefficient covered below, which is how strongly that same combination produces a torque. No published value for this force coefficient turned up in any source consulted for this project (see the callout further down) — everywhere it appears above, it’s effectively zero in what was actually implemented.
- Λ — the Coriolis acceleration, from computing the trajectory in a rotating (Earth-fixed) reference frame. I don’t model it — the underlying point-mass trajectory this whole spin-drift calculation sits on top of doesn’t model it either.
- m — bullet mass; d — caliber (diameter); S — reference cross-sectional area, πd²/4.
- Clp — the roll-damping (spin-damping) moment coefficient: how strongly aerodynamic drag on the bullet’s own rifling-engraved surface slows its spin down over the course of the flight.
Alongside the equations, McCoy’s own worked example became the first test case: the .308″/168 grain Sierra International (Matchking) match bullet, for which the book publishes a complete table of measured aerodynamic coefficients (CD0, CLα, CMα, Clp, and CMpα, all versus Mach number) and three published drift results — 11.1, 9.3, and 8.0 inches at 1000 yards for 10″, 12″, and 14″ rifling twist respectively.
The moments of inertia this bullet needs (Ix, Iy) also came straight from the book (Table 9.2), and — critically for what came later — this Sierra bullet became the calibration anchor for every other bullet the model would ever be asked to compute: its non-dimensional moments of inertia (Ix/(md²), Iy/(md²)) were adopted as generic constants, scaled by any other bullet’s own mass and caliber, on the reasoning that most rifle bullets share a broadly similar spitzer boat-tail shape.
The first implementation, run against this bullet, came out roughly 1.6× low across all three twist rates — a suspiciously consistent discrepancy, the kind of signature that usually means one lost constant, not a wrong physical dependency. Considerable effort went into re-deriving the formula from multiple secondary sources to find the missing factor, before it turned up: the test harness had specified the bullet’s ballistic coefficient using its published G1 value (0.462) while asking the drag model for a G7 curve — a real bullet’s G1 BC is roughly double its G7 BC for this shape family, so the drag was silently halved, the bullet was coasting faster than it should have, and the resulting shortfall in accumulated drift looked exactly like a missing constant in the yaw-of-repose formula, when the formula itself had been correct the whole time. Once the bullet’s own real measured drag curve replaced the mismatched BC guess, the same formula reproduced McCoy’s three published values to within half a percent, with no correction factor of any kind.
This turned out to be the first of two occasions this project mistook a data problem for a physics problem — a pattern worth naming early, because it recurs.
The Magnus-moment term
McCoy’s general yaw-of-repose equation includes a Magnus-moment term the classical form neglects — a real, sourced piece of physics the book’s own Appendix A tables the exact coefficient for (CMpα, itself nonlinear in yaw). Adding it required solving a genuinely self-referential equation: the term depends on the bullet’s acceleration, which depends on the lift force, which depends on the yaw of repose being solved for. It turned out to be linear, though, so it resolves to an exact closed form —
for a scalar K depending on spin rate, the two moment coefficients, caliber, and speed — rather than needing iteration.
The result was real but small: across the eventual Lapua validation set (see below), adding this term shifted every prediction by only a few percentage points. It was kept — it’s genuine, sourced physics with no real cost — but it never came close to explaining the much larger discrepancies about to show up. (No Magnus-force coefficient appears anywhere in McCoy’s published table for this bullet, confirming that term’s omission from the translational equations was a data gap, not an oversight.)
The first Lapua comparison, and the shock
McCoy’s book validates the model against one bullet, at one twist rate at a time, using that bullet’s own real coefficients. Every check made against it up to this point was, in a real sense, checking McCoy against McCoy — his coefficients reproducing his own Sg; this project’s formula reproducing his own published drift. None of it was an independent check against a different measurement.
Lapua’s own 6-DOF calculator, built on decades of Doppler radar characterization of their own bullets, provided one. Fourteen (bullet, twist rate, drift-at-1000m) data points were pulled from it — real Cd(Mach) curves for each bullet, as published by Lapua, so drag was never a confounding factor in the comparison. The results were not close: errors ranged from about −12% to +88%, averaging around 22% across the set.
Chasing the wrong variable, catching it, and finding the real one
The first hypothesis was that the generic moments-of-inertia constants — calibrated to one bullet’s proportions — didn’t generalize to bullets of noticeably different length relative to their caliber. Solving, for each bullet, what ratio of transverse-to-axial moment of inertia would be needed to exactly match Lapua’s number showed a real trend against length-to-diameter ratio (L/d) — but a messy one, with bullets at very similar L/d needing very different corrections.
My own observation broke the logjam: .308 Winchester and .223/5.56mm both have hard cartridge-overall-length limits from magazine and action length, so heavy-for-caliber bullets in those calibers are often built with compromised, non-scaled proportions just to fit — not a clean geometric scale-up of their lighter siblings. Repeating the length-isolation exercise in 6.5mm — a caliber family (6.5 Creedmoor and relatives) specifically designed without that constraint — confirmed it: the errors for five 6.5mm bullets spanning 100–136 grains all landed within about ±10%, a dramatically cleaner picture than the original, cartridge-constraint-confounded set.
Fitting a length-dependent correction to this cleaner data produced a real, reasonably tight trend (~5% residual scatter) — but extrapolating it back to the original Sierra reference bullet’s own L/d predicted that bullet needed roughly a 30% correction too, despite its moments of inertia being McCoy’s own real, published, unestimated numbers. That’s a contradiction only under one assumption: that McCoy’s own measurement is ground truth.
It doesn’t have to be. Every check made against McCoy’s data to this point had been self-consistent, never independently verified — and his own numbers for this bullet came from 1970s–80s spark-photography range testing, an older methodology than Lapua’s modern Doppler radar. The question “what if McCoy was wrong?” reframed the whole problem: rather than anchor the transverse moment of inertia to one, unverified, decades-old data point and ask a richer, more independent, more modern dataset to somehow agree with it, calibrate it directly from the Lapua data instead. This works because drift, worked through the equations, only ever depends on the ratio of the two moments of inertia — never on either one independently — so nothing about the axial moment’s own separate calibration (used elsewhere, for spin decay) had to change.
In formula form
Both versions estimate the two moments of inertia the same way — as a fixed, non-dimensional radius of gyration multiplied by this bullet’s own mass and caliber:
Unmodified McCoy uses the Sierra reference bullet’s own two published constants, unconditionally, for every bullet:
The final algorithm keeps kx2 exactly as-is — the axial moment’s calibration was never in question — and replaces the fixed ky2 with the linear fit to the Lapua data derived above, clamped at the range it was fit from (L/d ∈ [4.023, 5.201]):
which works out to ky2 ranging from 0.5787 at the fitted range’s lower edge to 0.8689 at its upper edge — a real swing, not a rounding correction. Since drift in the classical yaw-of-repose formula (Part 1) is directly proportional to Iy/Ix once Sg and CMα are held fixed, this single piecewise substitution — nothing else in the model changed — is the entire mechanism behind the recalibration’s effect. It’s also why the Sierra reference bullet itself, sitting at L/d = 3.98, just below the fitted range’s own floor, now predicts noticeably less drift than “unmodified McCoy” did for the exact same bullet: at L/d ≤ 4.023, ky2 is clamped to 0.5787, about 72% of McCoy’s own fixed 0.8073 — the direct numerical expression of no longer trusting that one 1970s-80s measurement as the calibration anchor.
Recalibrating this way — replacing the single fixed constant with a length-dependent function fit directly to the Lapua data, clamped rather than extrapolated outside the range it was fit from — dropped the mean absolute error across all fourteen original bullets from about 22.6% to 6.8%. The improvement wasn’t confined to the bullets used to build the fit: a cartridge-constrained outlier deliberately excluded from the fit improved to +1.7%; a military-ball-profile bullet, also excluded, improved to +7.5%.
Holdout validation
A model recalibrated against the data used to test it proves little on its own. I pulled a second batch of six bullets that Lapua’s calculator was never asked to help calibrate anything against — three entirely new calibers (6mm, 7mm, 9.3mm) never seen during fitting, one lead-core bullet just past the fitted length range’s own upper edge, and two bullets of genuinely different internal construction (monolithic copper-alloy “Naturalis” hunting bullets, rather than a lead core under a jacket) — specifically to test whether the recalibration reflected real physics or had simply been overfit to its own training set.
The three in-range, lead-core, new-caliber bullets landed within about ±7%, right in line with the original fit’s own error — real evidence of genuine generalization, not overfitting. Two of the three remaining cases cleanly separated what had previously been one tangled signal into two distinct, now well-understood limitations: a bullet just past the fitted length range showed a real but bounded degradation (−24%), confirming that clamping the correction at the edges of its fitted range — rather than extrapolating the line further — was the right design choice; and a monolithic bullet comfortably inside the fitted length range still showed a large error (−30%), nearly identical in size to an earlier steel-core armor-piercing bullet’s error, confirming that the real remaining limitation isn’t about bullet length at all in that case — it’s that no length-only correction can account for a bullet whose internal mass distribution meaningfully departs from a lead core under a copper jacket. The sixth bullet, a monolithic 9.3mm hunting bullet whose length also falls outside the fitted range, shows a comparably large error (−29%) but isn’t a clean isolator of either limitation on its own — it stacks an unseen caliber, a monolithic construction, and a length past the fitted boundary all at once, so it confirms both known limitations again without cleanly isolating either one the way GB554 and the other monolithic bullet do.
Part 4 — Results
All twenty-one bullets this project tested, their properties, and drift as computed by all four approaches: Litz’s closed-form formula, McCoy’s model exactly as published (unmodified, using the Sierra reference bullet’s own fixed moments-of-inertia constants), and this project’s final, Lapua-recalibrated algorithm — compared against the best available independent reference for that bullet (“known true”: Lapua’s own calculator for the twenty Lapua bullets; McCoy’s own published value for the Sierra reference bullet, which Lapua does not manufacture and has no data for). Percentage error against the reference value is shown in parentheses.
| Ref. | Bullet | Cal. (mm) | Mass (g) | Length (mm) | L/d | Twist | V₀ (m/s) | Drag model | Range | Known true (cm) | Litz (cm) | Unmodified McCoy (cm) | Final algorithm (cm) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| — | Sierra 168gr MatchKing (McCoy ref.) | 7.82 | 10.89 | 31.14 | 3.98 | 1:12 in | 792 | G7 BC 0.224 | 1000 yd | 23.62 | 28.55 (+21%) | 22.40 (−5%) | 16.02 (−32%) |
| GB422 | 167gr Scenar | 7.83 | 10.85 | 31.50 | 4.02 | 1:12 in | 800 | Lapua radar Cd(M) | 1000 m | 21.60 | 35.27 (+63%) | 27.34 (+27%) | 19.54 (−10%) |
| GB501 | 69gr Scenar | 5.70 | 4.50 | 23.10 | 4.05 | 1:7 in | 800 | Lapua radar Cd(M) | 1000 m | 28.80 | 65.03 (+126%) | 43.37 (+51%) | 30.94 (+7%) |
| GB528 | 300gr Scenar | 8.60 | 19.44 | 44.30 | 5.15 | 1:10 in | 800 | Lapua radar Cd(M) | 1000 m | 14.10 | 24.13 (+71%) | 12.44 (−12%) | 13.20 (−6%) |
| D46 | 185gr FMJBT | 7.83 | 12.00 | 33.60 | 4.29 | 1:10 in | 800 | Lapua radar Cd(M) | 1000 m | 18.20 | 36.27 (+99%) | 24.56 (+35%) | 19.57 (+8%) |
| AP492 | 165gr AP | 7.83 | 10.70 | 29.00 | 3.70 | 1:12 in | 800 | Lapua radar Cd(M) | 1000 m | 19.10 | 42.43 (+122%) | 36.02 (+89%) | 25.64 (+34%) |
| GB458 | 139gr Scenar | 6.71 | 9.00 | 34.90 | 5.20 | 1:8 in | 800 | Lapua radar Cd(M) | 1000 m | 14.80 | 27.21 (+84%) | 13.50 (−9%) | 14.52 (−2%) |
| GB491 | 154gr Scenar | 7.83 | 10.00 | 32.70 | 4.18 | 1:12 in | 800 | Lapua radar Cd(M) | 1000 m | 17.90 | 30.09 (+68%) | 23.47 (+31%) | 17.89 (−0%) |
| GB432 | 185gr Scenar | 7.83 | 12.00 | 33.40 | 4.27 | 1:10 in | 800 | Lapua radar Cd(M) | 1000 m | 18.70 | 38.05 (+103%) | 25.81 (+38%) | 20.36 (+9%) |
| GB551 | 220gr Scenar-L | 7.83 | 14.30 | 40.00 | 5.11 | 1:10 in | 800 | Lapua radar Cd(M) | 1000 m | 13.30 | 24.61 (+85%) | 12.91 (−3%) | 13.53 (+2%) |
| GB504 | 100gr Scenar | 6.71 | 6.50 | 31.80 | 4.74 | 1:8 in | 800 | Lapua radar Cd(M) | 1000 m | 20.40 | 36.23 (+78%) | 22.16 (+9%) | 20.65 (+1%) |
| GB464 | 108gr Scenar | 6.71 | 7.00 | 33.30 | 4.96 | 1:8 in | 800 | Lapua radar Cd(M) | 1000 m | 17.30 | 32.52 (+88%) | 18.35 (+6%) | 18.37 (+6%) |
| GB547 | 120gr Scenar-L | 6.71 | 7.80 | 32.00 | 4.77 | 1:8 in | 800 | Lapua radar Cd(M) | 1000 m | 18.40 | 35.55 (+93%) | 20.26 (+10%) | 19.10 (+4%) |
| GB489 | 123gr Scenar | 6.71 | 8.00 | 33.30 | 4.96 | 1:8 in | 800 | Lapua radar Cd(M) | 1000 m | 16.20 | 30.64 (+89%) | 16.73 (+3%) | 16.77 (+4%) |
| GB546 | 136gr Scenar-L | 6.71 | 8.80 | 34.00 | 5.07 | 1:8 in | 800 | Lapua radar Cd(M) | 1000 m | 16.40 | 29.94 (+83%) | 15.42 (−6%) | 15.95 (−3%) |
| GB493 | 90gr Scenar | 6.18 | 5.80 | 28.00 | 4.53 | 1:8 in | 800 | Lapua radar Cd(M) | 1000 m | 21.30 | 39.03 (+83%) | 23.42 (+10%) | 20.31 (−5%) |
| GB542 | 105gr Scenar-L | 6.18 | 6.80 | 32.00 | 5.18 | 1:8 in | 800 | Lapua radar Cd(M) | 1000 m | 14.90 | 29.07 (+95%) | 14.45 (−3%) | 15.43 (+4%) |
| GB553 | 150gr Scenar-L | 7.00 | 9.70 | 34.00 | 4.86 | 1:9 in | 800 | Lapua radar Cd(M) | 1000 m | 17.00 | 29.28 (+72%) | 16.36 (−4%) | 15.88 (−7%) |
| GB554 | 180gr Scenar-L | 7.00 | 11.66 | 38.00 | 5.43 | 1:9 in | 800 | Lapua radar Cd(M) | 1000 m | 14.50 | 22.68 (+56%) | 10.28 (−29%) | 11.07 (−24%) |
| N522 | 221gr Naturalis | 9.30 | 14.30 | 33.30 | 3.58 | 1:12 in | 800 | Lapua radar Cd(M) | 1000 m | 54.10 | 55.65 (+3%) | 54.21 (+0%) | 38.18 (−29%) |
| N563 | 140gr Naturalis | 6.71 | 9.10 | 34.10 | 5.08 | 1:8 in | 800 | Lapua radar Cd(M) | 1000 m | 57.90 | 75.89 (+31%) | 39.94 (−31%) | 40.39 (−30%) |
Conditions for all Lapua bullets: 1000 hPa, 15°C, 0% humidity, right-hand twist, muzzle velocity 800 m/s, range 1000 m. The Sierra reference bullet uses standard atmosphere (1013.25 hPa, 15°C) and McCoy’s own published test conditions (2600 fps muzzle velocity, 1000 yards), per his book.
Averaged across the twenty Lapua bullets (the Sierra reference is excluded from this average — it has no independent Lapua measurement to compare against): Litz’s formula averages 79.7% absolute error, unmodified McCoy (fixed Sierra-bullet moments of inertia) averages 20.2%, and the final, Lapua-recalibrated algorithm averages 9.7%.
Part 5 — Conclusions
- A physics-based model is a real, substantial improvement over the closed-form empirical formula it replaced — roughly an order of magnitude reduction in average error against an independent modern reference (Litz’s 80% average error vs. the final algorithm’s 10%). This isn’t a knock on Litz’s formula, which does exactly what a two-input closed-form approximation can be expected to do; it simply has no way to know anything about a specific bullet’s shape, and that turns out to matter more than its simplicity might suggest.
- Implementing McCoy’s model exactly as published is a large improvement on its own (unmodified McCoy: 20.2% average error), but leaves real, systematic error on the table — driven almost entirely by one input (the transverse-to-axial moment of inertia ratio) calibrated to a single bullet’s proportions and applied generically to every other bullet regardless of shape.
- The single largest accuracy gain in this project came from an independent, modern validation source, not from the classical reference text. Every check made against McCoy’s own book was, by construction, checking his data against itself. The first genuinely independent check — Lapua’s radar-measured data — is what surfaced both the errors this project fixed and the confidence that what remains is well-characterized rather than hidden.
- Two apparent bugs were, on inspection, data problems wearing a physics costume. A mismatched ballistic-coefficient standard produced a symptom (a consistent multiplicative gap) that looked exactly like a missing constant in a differential equation. A single unverified 1970s measurement, treated as ground truth, produced a contradiction that looked exactly like the underlying physical relationship being non-existent or too noisy to use. Both dissolved once the actual data problem was identified rather than the formula being blamed. The practical lesson: a suspiciously clean, consistent discrepancy is itself a clue — it usually means something upstream of the physics, not something wrong with the physics.
- What remains is now well-separated into two distinct, understood limitations, not one blurry one. A length-based correction, by construction, degrades gracefully once a bullet’s proportions fall outside the range it was calibrated from (confirmed directly by holdout testing). It cannot, and does not claim to, correct for a bullet whose internal mass distribution departs meaningfully from a lead core under a copper jacket — steel-core armor-piercing and monolithic copper-alloy construction both show large, comparably-sized residual error, for the same underlying reason.
Part 6 — Directions for further research
(AI says it’s customary for real scientists to have these at the end, so I’ll do as if.)
- A construction-aware correction. The current model has no notion of a bullet’s internal construction at all — only its external length and caliber. A categorical adjustment (lead-core / monolithic / steel-core, or a continuous parameter like sectional density relative to a lead-core baseline of the same dimensions) is the most promising unexplored lever for the two known remaining outlier classes.
- A broader, denser calibration dataset. The current length-based correction is a two-point linear fit. More bullets, especially spanning a wider length-to-diameter range without the cartridge-constraint confound, would support a more confident (and possibly non-linear) fit, and would help separate genuine caliber effects (if any exist) from the length effect this project isolated.
- A sourced Magnus force coefficient. The Magnus force term in McCoy’s translational equations remains unimplemented for lack of any published coefficient for it, in any source consulted during this project. If one becomes available for a reference bullet, it’s a small, well-scoped addition to a model that already handles the (structurally more complex) Magnus moment term.
- Independent verification against a third data source. Two independent sources (McCoy, Lapua) already disagree meaningfully for at least one bullet (the Sierra reference itself). A third — a different manufacturer’s own radar data, or a full 6-DOF run for a specific bullet with a complete, published coefficient set — would help determine whether the residual gap for the Sierra bullet specifically reflects an error in McCoy’s own 1970s-80s data, a genuine difference between that specific bullet’s shape and the “generic modern spitzer boat-tail” this whole model treats as typical, or something else not yet identified.