# Bullet dynamics

Whether the bullet is a point with drag and gravity plus formulas for spin drift and jump, or a spinning body whose spin, yaw, lift and Magnus force are flown.

## Generated table

**Setting:** Bullet dynamics

| Choice | Used by |
|---|---|
| Point mass (default) | Standard, Physics, Classic |
| Spin (spin and yaw) | Spin |
| Spin, simplified | Custom only |

## What it does

This setting decides how the bullet is modelled in flight.

- **Point mass (default):** the bullet is a point with drag, gravity and (by the `coriolis` setting) the Earth's rotation. Spin drift and the jump from a crosswind are added afterwards by formulas ([spinDrift](spinDrift.md), [aeroJump](aeroJump.md)). Every model but Spin uses it.
- **Spin (spin and yaw):** a modified point-mass model. The bullet's spin rate is flown along with its position and velocity. The bullet is taken to fly at the small angle to its path that its spin and the curving of the path settle into (the yaw of repose), and at that angle the air gives it a sideways lift and a Magnus push. Spin drift, the stability of the bullet along the path and the crosswind jump come out of this flight instead of from formulas. It needs the bullet's length, twist and muzzle velocity and uses a set of aerodynamic coefficients: one attached to the profile, or an estimate from the bullet's weight, diameter, length and construction.
- **Spin, simplified:** point-mass flight plus spin-drift and jump formulas taken from a coefficient set made for the purpose. It needs such a set; without one the solve runs as point mass and the answer says so.

**The Spin trim.** A profile on the Spin model may carry one more number, a factor between 0.5 and 1.5 on the lift the model gives the bullet at its yaw, which is the part of the model that sets spin drift. It is the shooter's own setting for one bullet in one rifle, saved from the Workbench, from the Calibration section or by voice with `calibrate_profile`, from groups shot in calm air ([spin](../profile/spin.md)). With no trim, or a trim of exactly 1, the solve is what it was without the field. Standard, Physics and Classic never read it. It is not an option: it is a profile input, so it has no row in the table above and its own paragraph in each section below.

## When to choose it

Leave it on point mass to match another ballistics app or when you do not know the bullet's length and the profile's value is a guess. Choose Spin when you want spin drift, stability and crosswind jump from the physics of the flight, at long range, with a bullet whose length you know (measure it). The estimated coefficients are low confidence: check them against your own groups. Choose Spin, simplified only with a coefficient set that was made for it. The table in On a real shot shows what the Spin model changes on a 3,520 yd shot.

## How to picture it

Picture a rifle bullet as a small spinning top flying nose-first along a curving path. The path bends down under gravity, and a spinning body does not simply follow: like a top, it tilts its nose slightly to the side, a fraction of a degree, and the tilt it settles into changes along the flight (it grows steadily downrange as the bullet slows and the path steepens). For a right-hand twist the nose points a little to the right of the path.

Draw the path and, at three points along it, the bullet's axis a hair off the direction of travel. At that tilt the air no longer meets the bullet head-on. It pushes the bullet sideways (lift, along the tilt) and, because the bullet is spinning, upward (the Magnus push, at right angles to the tilt). Along the path the air drags on the spin and slows it, by nearly half on a flight as long as the one in the table below, and a slower spin means a less stable bullet. The sideways lift, added up over the flight, is spin drift. Everything that a point-mass solver would add as a correction is, here, the sum of those small forces along the path.

## The math

Work in the line-of-sight frame: $x$ downrange along the line of sight, $y$ up at right angles to it, $z$ to the right. The state is the position $\mathbf r$, the velocity $\mathbf v$ and the spin rate $p$. For the point-mass value the state is $\mathbf r$ and $\mathbf v$ only and the forces below are drag, gravity and Coriolis; the rest of this section is the modified point-mass model of McCoy, *Modern Exterior Ballistics*, ch. 9, with the yaw of repose of STANAG 4355 Ed. 4 (Czech implementation ČOS 109001, eqs. 6, 10, 14).

| Symbol | Meaning | Unit |
|---|---|---|
| $\mathbf r,\ \mathbf v$ | position and velocity of the centre of mass | m, m/s |
| $\mathbf w,\ \mathbf u$ | wind in the frame; air-relative velocity $\mathbf u=\mathbf v-\mathbf w$ | m/s |
| $U$ | air-relative speed, $\max(\lvert\mathbf u\rvert,\,1)$ | m/s |
| $s$ | the speed that sets drag and Mach: $\lvert\mathbf v\rvert$ with `windDrag` `'baseline'`, $\lvert\mathbf u\rvert$ with `'relative'` | m/s |
| $M$ | Mach number $s/c$ | none |
| $\rho,\ c$ | air density and speed of sound at the bullet's height (the `lapse`, `airDensity`, `soundSpeed` options) | kg/m³, m/s |
| $m,\ d,\ S$ | mass, diameter, reference area $S=\pi d^2/4$ | kg, m, m² |
| $I_x,\ I_y$ | moments of inertia about the axis and across it, a ratio times $m d^2$ | kg m² |
| $p$ | spin rate, positive for a right-hand twist | rad/s |
| $\boldsymbol\alpha$ | the yaw of repose: the small vector angle between the axis and $\mathbf u$, at right angles to $\mathbf u$ | rad |
| $K_D$ | $\pi/(8\,\mathrm{BC}\cdot 703.0696)$, with BC in lb/in² | m²/kg |
| $C_D(M)$ | drag coefficient from the drag table and the profile's corrections ([dragTable](dragTable.md)) | none |
| $C_{M\alpha},\ C_{L\alpha},\ C_{Np\alpha}$ | overturning-moment, lift and Magnus slopes, per radian of yaw | 1/rad |
| $C_{lp},\ C_{D\alpha^2}$ | spin damping; extra drag per squared radian of yaw | none, 1/rad² |
| $\mathbf g,\ \boldsymbol\Omega$ | gravity in the frame, $(-g\sin\theta,\,-g\cos\theta,\,0)$ (`gravity`); the Earth's rotation in the frame (`coriolis`) | m/s², rad/s |
| $\mathbf a_0$ | gravity plus Coriolis, $\mathbf g-2\boldsymbol\Omega\times\mathbf v$ | m/s² |
| $\mathrm{Sg}$ | gyroscopic stability factor | none |

**Equations of motion.** Position, velocity and spin rate are integrated together:

$$\dot{\mathbf r}=\mathbf v \qquad \dot{\mathbf v}=\mathbf a_D+\mathbf a_Y+\mathbf a_L+\mathbf a_M+\mathbf a_0 \qquad \dot p=\frac{\rho\,U\,S\,d^{2}\,C_{lp}}{2I_x}\,p$$

with the forces

$$\mathbf a_D=-K_D\,\rho\,C_D(M)\,s\;\mathbf u \qquad \mathbf a_Y=-\frac{\rho\,S\,U\,C_{D\alpha^2}\,\lvert\boldsymbol\alpha\rvert^{2}}{2m}\,\mathbf u \qquad \mathbf a_L=\frac{\rho\,S\,U^{2}\,C_{L\alpha}(M)}{2m}\,\boldsymbol\alpha \qquad \mathbf a_M=\frac{\rho\,S\,d\,p\,C_{Np\alpha}(M)}{2m}\;(\boldsymbol\alpha\times\mathbf u)$$

$\mathbf a_D$ is the drag of the point-mass model (drag is along $\mathbf u$), $\mathbf a_Y$ the extra drag of the yawed bullet, $\mathbf a_L$ the lift along the yaw, and $\mathbf a_M$ the Magnus force. The Magnus term is present only when the coefficient set has a Magnus slope. Because $\boldsymbol\alpha\perp\mathbf u$, both $\mathbf a_L$ and $\mathbf a_M$ are at right angles to $\mathbf u$: of the aerodynamic forces only drag and yaw drag change the speed. With $C_{lp}<0$ the spin decays. The initial spin rate is

$$p_0=\pm\frac{2\pi\,v_0}{\tau}$$

with $v_0$ the muzzle velocity and $\tau$ the twist length in metres per turn, plus for a right-hand twist.

**The yaw of repose.** With the axis lagging the curved path, the moment balance gives the yaw as the cross product of the air-relative velocity with the acceleration that bends the path:

$$\boldsymbol\alpha=-\frac{2\,I_x\,p}{\rho\,S\,d\,U^{4}\,C_{M\alpha}(M)}\;\big(\mathbf u\times\mathbf a_0\big)$$

so $\lvert\boldsymbol\alpha\rvert$ grows with the spin rate and with the acceleration across the path, and falls with the air density, $U^3$ and $C_{M\alpha}$. Under gravity with a right-hand twist the yaw points right, so lift pushes the bullet right (spin drift) and $\boldsymbol\alpha\times\mathbf u$ points up. This is the `'gravity'` form of `yawRepose`. The `'full'` form (the standard method's) puts the whole acceleration in place of $\mathbf a_0$, so the lift and Magnus forces bend the path too. (As a predictor-corrector implements the standard, that acceleration comes from the yaw of the step before; the solver instead iterates within each evaluation. The standard also has cubic terms in the yaw in its overturning moment and its lift, and fitting factors on the lift, the Magnus force and the yaw drag; the solver has none of these. See [yawRepose](yawRepose.md).) Starting from the value above it repeats three times

$$\boldsymbol\alpha\leftarrow-\frac{2\,I_x\,p}{\rho\,S\,d\,U^{4}\,C_{M\alpha}}\;\mathbf u\times\big(\mathbf a_0+\mathbf a_L(\boldsymbol\alpha)+\mathbf a_M(\boldsymbol\alpha)\big)$$

(drag and yaw drag are along $\mathbf u$ and drop out of the cross product). The default (`'auto'`) takes the form that comes with the coefficients in use. The `yawRepose` option chooses the form explicitly.

**Stability along the path.** At each range the solver reports

$$\mathrm{Sg}=\frac{2\,I_x^{2}\,p^{2}}{\pi\,\rho\,d^{3}\,I_y\,V^{2}\,C_{M\alpha}(M)}$$

with $V=\lvert\mathbf v\rvert$, the interpolated spin rate at that range, $\rho$ the density there and $M=V/c$. It rises as the bullet slows (for the same spin) and falls as the spin decays.

**How the coefficients vary with Mach.** Three coefficients are straight lines in Mach about Mach 2, with the magnitude kept at least 5 % of the Mach-2 value:

$$\operatorname{lin}(v,\sigma,M)=\max\big(v+\sigma\,(M-2),\ 0.05\,v\big)\quad(v>0)$$

The overturning slope is $C_{M\alpha}(M)=\operatorname{lin}(c_m,\sigma_m,M)\,K_m(M)$. The lift slope is $C_{L\alpha}(M)=\operatorname{lin}(c_l,\sigma_l,M')$, with $M'=M$, or $M'=\min(M,2)$ when the set says its lift slope applies below Mach 2 only; it can also be multiplied by a table of multipliers by Mach, which `subsonicLift` sets. The Magnus slope is $C_{Np\alpha}(M)=\operatorname{lin}(c_n,\sigma_n,\max(M,2))\,K_n(M)$, so it is held at its Mach-2 value at and below Mach 2. The solver's Magnus slope is positive for an upward push on a right-twist bullet and is in the $p\,d/V$ convention: it has the opposite sign to the BRL and STANAG coefficient and is half the $p\,d/2V$ values some of the cited reports print, so convert before looking a value up there. A set with no slope $\sigma$ has the plain value (no floor). $K_m$ and $K_n$ are optional multipliers by Mach: piecewise linear between their knots and flat beyond the first and last. $C_{lp}$ and $C_{D\alpha^2}$ are constants. The line values $c_m$, $c_l$ and $c_n$ are quoted at Mach 2.

**Where the coefficients come from.** A coefficient set attached to the profile is used as it is. Without one, the solver estimates a set from the bullet's weight $w$ (grains), diameter $d$ and length $L$ (inches), and the twist $T_w$ (inches per turn) and muzzle velocity $v_0$ (ft/s). With $l=L/d$, $l_m=(L-\text{tip})/d$ (a tip is counted only if positive and shorter than the bullet), $t=T_w/d$:

- **Inertia.** A lead-core bullet has $I_x/md^2=0.11$ and $I_y/md^2=\tfrac1{16}+\tfrac{0.55}{12}\,l_m^2$ (the 0.11 is a typical axial figure from McCoy, ch. 2; the transverse form is an assumption of the solver; the tip is taken as massless). A monolithic bullet is a homogeneous solid of an assumed shape: a tangent ogive over 0.6 of the overall length, a cylinder, and a 0.5-caliber boat tail tapering to 0.8 of the diameter, with the metal only (the tip taken as massless). $I_x$ and $I_y$ come from integrating that shape by Simpson's rule.
- **Overturning slope.** Miller's stability at standard conditions, with the Courtney and Miller form when a tip length is given, $\mathrm{Sg}_M=\dfrac{30\,w}{t^{2}d^{3}\,l\,(1+l_m^{2})}\Big(\dfrac{v_0}{2800}\Big)^{1/3}$, is the muzzle stability the estimate must give in standard air ($\rho=1.225$ kg/m³, $c=340.294$ m/s, $M_0=v_0/c$):

$$C_{M\alpha}(M_0)=\frac{2\,I_x^{2}\,p_0^{2}}{\pi\,\rho\,d^{3}\,I_y\,v_0^{2}\,\mathrm{Sg}_M}\qquad c_m=\frac{C_{M\alpha}(M_0)}{\max\big(1+r_m(M_0-2),\,0.05\big)\,K_m(M_0)}\qquad \sigma_m=r_m\,c_m$$

- **The rest, from the public estimator's default values** (typical values from published measurements on rifle bullets and shells; both sets are listed on [estimatorRules](estimatorRules.md)): $c_l=1.6+0.2\,l$ with $\sigma_l=+0.2\,c_l$ below Mach 2 only; $r_m=-0.15$ (so $\sigma_m=-0.15\,c_m$); $C_{lp}=-0.0135$; $C_{D\alpha^2}=0$; Magnus $c_n=0.50$, held to Mach 2 and falling 0.10 per Mach above; the `'full'` yaw of repose. The original set is flatter (no Mach slopes in $C_{M\alpha}$ and $C_{L\alpha}$, $C_{lp}=-0.012$, the `'gravity'` yaw). Nothing is estimated for a length under 2 calibers or a non-positive muzzle velocity (a missing or non-positive length, weight, diameter or twist is refused earlier, before any estimate).

**Crosswind jump.** With the crosswind-jump choice of the Spin block at its default, the muzzle jump is the classical linear theory: a crosswind $w_c$ (from the right, positive) gives an initial yaw $w_c/V_0$ and a jump angle

$$J=\frac{I_x}{m\,d^{2}}\,\frac{C_{L\alpha}(M_0)}{C_{M\alpha}(M_0)}\,\frac{p_0\,d}{V_0}\,\frac{w_c}{V_0}\ \ [\text{rad, times }1000\text{ for mil}]$$

with $M_0$ the muzzle Mach number in the air at the rifle. It is the same at every range and is subtracted from the elevation (positive is impact up). The other choices are the form this app used until `solver-12` (with $I_x/I_y$ in place of $I_x/(m d^2)$) and a formula of the bullet's stability and length; see [aeroJumpSpin](aeroJumpSpin.md).

**The simplified value.** With a coefficient set carrying an empirical block $(a,\,b,\,\tau_{ref},\,j)$ the flight is point mass, the spin drift is $a\,T^{\,b}\,(\tau_{ref}/\tau)$ inches (to the right for a right-hand twist, no slope factor) and the jump is $\pm j\,\mathrm{Sg}\,w_c$ mil (plus for a right-hand twist, minus for a left) with $\mathrm{Sg}$ the point-mass stability of [spinDrift](spinDrift.md) and $T$ here the time of flight. Such a set's own drag curve, when it has one, replaces the profile's.

**The Spin trim.** With a trim $f$ on the profile, $0.5\le f\le 1.5$ and $f\ne1$, and the Spin dynamics in use, the lift level of the coefficients chosen for the flight, attached or estimated, is multiplied by $f$ before the Magnus and subsonic-lift choices act on them:

$$c_l\leftarrow f\,c_l \qquad C_{L\alpha}(M)=\max\big(f\,c_l+\sigma_l\,(M'-2),\ 0.05\,f\,c_l\big)$$

with $\sigma_l$, $M'$, the table of multipliers and every other coefficient as they were. So the factor moves the whole lift line up or down, the slope against Mach stays the same size, and the 5 % floor is 5 % of the scaled level. A factor outside 0.5 to 1.5, or one that is not a finite number, refuses the profile under every model. A set with no usable lift level (none, or a scaled set the model cannot use) is flown as it came. The lift enters the lift force $\mathbf a_L$ and, in the `'full'` form, the yaw of repose; spin drift grows with it, and so do a small elevation change and the jump, because the crosswind jump of the classical theory is also proportional to $C_{L\alpha}$.

**Integration.** Fourth-order Runge-Kutta on $(\mathbf r,\mathbf v,p)$ with 0.001 s steps (the default). A range is sampled by linear interpolation between the two steps that straddle it; the flight ends in an error after 60 s or if the bullet stops moving downrange.

## The algorithm

Where it runs: in the function that builds a range card (the one `solve` uses with a single range). The zero is found with the same dynamics, and a flight with the same dynamics is flown for the shot.

```text
resolveDynamics(profile, options) -> (kind, coefficient set, reason)
  1. if options.dynamics == 'pointmass':                                    return point mass
  2. set = profile.aero, else estimateAero(bullet, twist, muzzle velocity, public rules chosen by estimatorRules)
  3. if the estimator returned nothing (a bullet under 2 calibers; a missing or zero length never gets here: the profile is refused first):
                                                                              return point mass, reason 'none: bullet shorter than 2 calibers'
  4. if options.dynamics == 'mpm-empirical' or set.source == 'empirical':
         if set has an empirical block:                                       return 'mpm-empirical' with the set
         else:                                                                return point mass, reason 'none: no empirical block'
  5. return 'mpm' with the set

estimateAero(bullet, twist, muzzle velocity, rules) -> set or none
  1. return none if length, diameter, weight, twist or velocity is not positive, or l = length/diameter < 2
  2. inertia ratios by construction and tip (lead-core: closed form; monolithic: Simpson on the assumed shape)
  3. Sg_M = Miller (Courtney and Miller form when a tip is given); C_Malpha(Mach 2) from the muzzle identity above
  4. C_Lalpha(Mach 2) = rules.c0 + rules.c1*l; C_lp, C_Dalpha2, Magnus value and slope, yaw of repose form, from the rules

mpmInput(set, bullet, muzzle velocity, twist, hand) -> flight input
  m, d from the bullet; I_x, I_y = ratios * m * d^2; p0 = +-2*pi*v0 / (twist in metres)
  C_Malpha(M), C_Lalpha(M), C_Npalpha(M): the shapes above (lin with the 5 % floor, optional knots)
  Magnus present only if the set has a Magnus slope; yaw of repose 'full' only if the set says so

fitCard(...) under 'mpm'                                                   // the dynamics-specific steps, in order
  a. coefficient set for this solve: the profile's set, else the estimate (resolveDynamics)
  b. the Spin trim: if the profile has aero_trim and its lift is not exactly 1, set = scaleAero(set, 'cl_alpha', lift),
     or the set itself when that gives nothing (a profile outside 0.5 to 1.5 was refused before any of this)
  c. the Magnus and subsonic-lift choices applied to the set (magnus, subsonicLift)
  d. flight input = mpmInput(...); yawRepose 'full' or 'gravity' overrides the set's own form; 'auto' keeps it
  e. drag: the set's own drag curve if it carries one (the drag-table option is then not used: see dragTable), else the profile's
  f. bore angle: zeroAngle(...) with this same flight (no wind, no Coriolis, in the zero's air and slope)
  g. fly the card at the shot's wind (and again at a second wind if it differs)
  h. per row: elevation = drop / range (or the dial)  -  muzzle jump
             windage   = z / range  -  the zero's calm drift      // spin drift is already in z: no formula is added
  i. outputs: Sg, spin rate and yaw of repose from the flight; the set's source and id; dynamics_used
  j. fail with 'no finite stability' if Sg is not finite and positive

fly(input, bore, ranges) -> one sample per range                          // per Runge-Kutta stage
  u = v - wind; s by windDrag; M = s/c; (rho, c) from the air at the bullet's height
  drag = -K_D*rho*C_D(M)*s*u;  a0 = gravity - 2*Omega x v
  alpha = -2*I_x*p / (rho*S*d*U^4*C_Malpha(M)) * (u x a0)
  if yaw of repose is 'full': repeat 3 times alpha = (same factor) * u x (a0 + lift(alpha) + Magnus(alpha))
  acceleration = drag + yaw drag + lift + (Magnus if present) + a0;  dp/dt = rho*U*S*d^2*C_lp*p / (2*I_x)
  at a range: interpolate; Sg, spin rpm = |p|*60/(2*pi) and |alpha|*1000 mrad at that range
```

**What a solve reports under `'mpm'`.** The usual outputs, plus the spin rate in rev/min and the yaw of repose in mrad at the range, the stability factor along the path (not the point-mass one), `aero_source` (for an estimate, `estimated:` and an id that names the public rules and the bullet) and `dynamics_used`. `aero_source` starts with `none:` when the solve fell back to point mass, and `dynamics_used` then says `'pointmass'`.

## On a real shot

Read from the four tables below; every decimal in these sentences is copied from them. `aero_source` in these solves named public estimated coefficients (`estimated:est-public-v3-…`), never a fitted set. The first table turns the dynamics on under the Physics model and shows the change. On the monolithic tipped bullet the Spin model asks for -0.141 mil of elevation and -0.197 mil of windage, against -0.075 and +0.117 mil for the lead-core bullet in the same shot; windage has opposite signs for the two bullets. In a solve of the same shots with the wind removed, the windage change was the same as in the table, so it is not the crosswind: it is the spin drift, integrated in place of the formula, and the two bullets differ in inertia and in the estimated overturning slope, which set the yaw of repose in The math; the table does not show which of them reverses the sign. The same solve gave a more negative elevation change without the wind for both bullets, which suggests the crosswind jump of the classical theory is smaller than the point-mass formula's here, the rest coming from lift and the Magnus push. The change in arrival speed is -0.1 fps in every column; the table does not say why. The elevation change on East, uphill and downhill (-0.074, -0.076, -0.071 mil) is close to north and level (-0.075); the windage change is not (+0.095 uphill to +0.135 downhill, +0.117 north and level, +0.123 east). The second table is the first read the other way round: from the Spin model, `'pointmass'` is the mirror image, and `'mpm-empirical'` is "not applicable here" because a public estimate has no empirical block, so that solve ran as point mass. The third and fourth tables are the Spin trim: every row is solved with it, and each cell is the change from the same shot with no trim. A trim of 0.8 asks for +0.305 mil more windage on the monolithic tipped bullet and +0.038 mil more elevation; a trim of 1.2 asks for -0.305 and -0.042, nearly the mirror image, which suggests that over this range the effect of the factor is close to a straight line (two factors are not enough to say so). On the lead-core bullet, north and level, the same two trims move the windage by +0.234 and -0.234 mil. The velocity at the target does not change at the shown precision. The windage change is the same for east, north and 10° uphill (+0.233, +0.234 and +0.234 mil at 0.8); the table does not say why they agree so closely.

**Turning the Spin dynamics on, under the Physics model's other settings**

The shot: a 350 gr 0.375 in bullet at 3048 fps muzzle velocity, fired at 3520 yd in air of 60 °F, 40 % humidity, 24.43 inHg at the firing line, latitude 42.1°, wind 10 mph from the right (90° to the line of fire), the same wind in every column; site altitude 5,500 ft. In the app, type it as "Site altitude" (shown when the profile's model reads one); left blank, the classic values count from sea level and can differ from this table. All other settings are the Physics model's. In the first column (North, level, monolithic tipped bullet) the reference arc reaches 221 ft above the line of sight at 2150 yd. Compared with the first column, the bullet differs in "North, level", "East, level", "North, 10° uphill" and "North, 10° downhill".

| Value | Shown in the app as | North, level, monolithic tipped bullet | North, level | East, level | North, 10° uphill | North, 10° downhill |
|---|---|---|---|---|---|---|
| `'pointmass'` | Point mass (default) | reference | reference | reference | reference | reference |
| `'mpm'` | Spin (spin and yaw) | -0.141 / -0.197 / -0.1 | -0.075 / +0.117 / -0.1 | -0.074 / +0.123 / -0.1 | -0.076 / +0.095 / -0.1 | -0.071 / +0.135 / -0.1 |
| `'mpm-empirical'` | Spin, simplified | not applicable here | not applicable here | not applicable here | not applicable here | not applicable here |

Each cell is the change from the reference row (`'pointmass'`) in the same shot, as elevation (mil) / windage (mil) / velocity at the target (fps). Elevation: plus means more elevation must be dialed. Windage: plus means the windage correction moves to the right (dial further right); this is a correction, not where the bullet lands. Velocity: plus means the bullet arrives faster. A zero means no difference at the shown precision.

**Each value as a change from the Spin model**

The shot: a 350 gr 0.375 in bullet at 3048 fps muzzle velocity, fired at 3520 yd in air of 60 °F, 40 % humidity, 24.43 inHg at the firing line, latitude 42.1°, wind 10 mph from the right (90° to the line of fire), the same wind in every column; site altitude 5,500 ft. In the app, type it as "Site altitude" (shown when the profile's model reads one); left blank, the classic values count from sea level and can differ from this table. All other settings are the Spin model's. In the first column (North, level, monolithic tipped bullet) the reference arc reaches 220 ft above the line of sight at 2150 yd. Compared with the first column, the bullet differs in "East, level", "North, 10° uphill" and "North, 10° downhill".

| Value | Shown in the app as | North, level, monolithic tipped bullet | East, level | North, 10° uphill | North, 10° downhill |
|---|---|---|---|---|---|
| `'pointmass'` | Point mass (default) | +0.141 / +0.197 / +0.1 | +0.074 / -0.123 / +0.1 | +0.076 / -0.095 / +0.1 | +0.071 / -0.135 / +0.1 |
| `'mpm'` | Spin (spin and yaw) | reference | reference | reference | reference |
| `'mpm-empirical'` | Spin, simplified | not applicable here | not applicable here | not applicable here | not applicable here |

Each cell is the change from the reference row (`'mpm'`) in the same shot, as elevation (mil) / windage (mil) / velocity at the target (fps). Elevation: plus means more elevation must be dialed. Windage: plus means the windage correction moves to the right (dial further right); this is a correction, not where the bullet lands. Velocity: plus means the bullet arrives faster. A zero means no difference at the shown precision.

**The Spin trim at 0.8: the lift 20 % lower, as a change from the same shot with no trim**

The shot: a 350 gr 0.375 in bullet at 3048 fps muzzle velocity, fired at 3520 yd in air of 60 °F, 40 % humidity, 24.43 inHg at the firing line, latitude 42.1°, wind 10 mph from the right (90° to the line of fire), the same wind in every column; site altitude 5,500 ft. In the app, type it as "Site altitude" (shown when the profile's model reads one); left blank, the classic values count from sea level and can differ from this table. Every row is solved with a Spin trim of 0.8 on the lift, and each cell is the change from the same shot with no trim. All other settings are the Spin model's. In the first column (North, level, monolithic tipped bullet) the reference arc reaches 220 ft above the line of sight at 2150 yd. Compared with the first column, the bullet differs in "North, level", "East, level" and "North, 10° uphill".

| Value | Shown in the app as | North, level, monolithic tipped bullet | North, level | East, level | North, 10° uphill |
|---|---|---|---|---|---|
| `'mpm'` | Spin (spin and yaw) | +0.038 / +0.305 / 0.0 | +0.027 / +0.234 / 0.0 | +0.027 / +0.233 / 0.0 | +0.027 / +0.234 / 0.0 |

Each cell is the change from the same shot with no trim, as elevation (mil) / windage (mil) / velocity at the target (fps). Elevation: plus means more elevation must be dialed. Windage: plus means the windage correction moves to the right (dial further right); this is a correction, not where the bullet lands. Velocity: plus means the bullet arrives faster. A zero means no difference at the shown precision.

**The Spin trim at 1.2: the lift 20 % higher, as a change from the same shot with no trim**

The shot: a 350 gr 0.375 in bullet at 3048 fps muzzle velocity, fired at 3520 yd in air of 60 °F, 40 % humidity, 24.43 inHg at the firing line, latitude 42.1°, wind 10 mph from the right (90° to the line of fire), the same wind in every column; site altitude 5,500 ft. In the app, type it as "Site altitude" (shown when the profile's model reads one); left blank, the classic values count from sea level and can differ from this table. Every row is solved with a Spin trim of 1.2 on the lift, and each cell is the change from the same shot with no trim. All other settings are the Spin model's. In the first column (North, level, monolithic tipped bullet) the reference arc reaches 220 ft above the line of sight at 2150 yd. Compared with the first column, the bullet differs in "North, level", "East, level" and "North, 10° uphill".

| Value | Shown in the app as | North, level, monolithic tipped bullet | North, level | East, level | North, 10° uphill |
|---|---|---|---|---|---|
| `'mpm'` | Spin (spin and yaw) | -0.042 / -0.305 / 0.0 | -0.029 / -0.234 / 0.0 | -0.029 / -0.232 / 0.0 | -0.029 / -0.234 / 0.0 |

Each cell is the change from the same shot with no trim, as elevation (mil) / windage (mil) / velocity at the target (fps). Elevation: plus means more elevation must be dialed. Windage: plus means the windage correction moves to the right (dial further right); this is a correction, not where the bullet lands. Velocity: plus means the bullet arrives faster. A zero means no difference at the shown precision.

---

[All reference pages](../index.md)
