Ballistics and the Drag Formula
I’ve recently taken an interest in firearms and one of the things I’ve been trying to understand and model the behavior of a bullet in flight. Unfortunately, a lot of the tutorials out there are a mess with confused notation, sloppy units, and missing factors of π. This makes it difficult to write a simulation that is consistent with other models, let alone accurate. Here, I touch on the basic formula required for a model good up to intermediate distances (e.g. 500 yards).
Introduction to Ballistics 🔗
Ultimately, the math behind ballistics is fairly straightforward. We’re just performing a double integration on the acceleration from the various forces we care about. For a basic ballistic calculation there are two: gravity and aerodynamic drag. Gravity, in this case, is trivial: we just assume an acceleration of 1 g (9.80665 m/s²) towards the ground.
As for drag, the basic formula starts fairly simple:
The vector force from drag () is a function of the air density (ρ), cross-sectional area (A), velocity relative to the air (), and a unitless value known as the drag coefficient (). Adding in the mass (m), we can express this as an acceleration:
Other forces exist but are rarely important to consider except at extreme ranges (e.g. beyond 600 yards). These are typically referred to as 4DOF models or similar.
Ballistic Coefficient 🔗
The first change made by modern ballistics is the introduction of the Ballistic Coefficient. This simply absorbs the mass (m) and cross-sectional area (A) of the bullet while combining it with a fudge factor known as the “coefficient of form” (i) to account for the specific model in use. The fudge factor typically varies between zero and one.
It should be emphasized this is a coefficient with units even though manufacturers rarely include the units in their specification. For an American manufacturer, the unit is typically pounds per square inch (lbs/in²). Assuming a 40 grain (0.00571 pounds) 22 LR bullet (diameter of 0.223 inch) and a fudge factor of one, we would estimate a BC of 0.115 lbs/in². This is close to the 0.120 listed for the CCI Standard Velocity 22 LR.
When replacing area and mass within the previous equation for acceleration, it’s required to note that d² is the area of a square, not the area of a circle. Failure to make this correction results in a 25% error in the drag estimation. Combining the two previous equations with this consideration in mind gives us:
With the BC in the denominator, this leads to the common observation that higher BC’s are “better” (lower drag). This is only correct within the same model due to the model-dependence of the fudge factor.
Drag Coefficient 🔗
Finally, we get to the drag coefficient () itself. If we were limited to the subsonic domain, we could assume a roughly constant value for this coefficient and move on with life. However, except for small rounds specifically designed as subsonic, supersonic and transonic flight are a near-universal element of ballistics. This means that the drag coefficient is a strong function of velocity.
To address this, a set of standard models were developed in the mid-to-late 19th century. Those most commonly used in the small arms communitiy are the G1 (stereotypical bullet shape) and the G7 (boat-tail rifle rounds) models. While other models exist and it’s possible to derive a model for a specific bullet, these two models are considered sufficient for most applications.
These models use the Mach number as the input for the function. This is simply the ratio of the bullet air speed to the local speed-of-sound (approximately 1120 fps or 340 m/s²).
It should be noted that most models are empirical in nature. While they can be derived numerically from aerodynamic simulation today, the early pioneers performed hundreds of firings of test projectiles and published the analysis as tables. This means that when implementing a ballistics computer, one does not use a “formula” for G1 or G7, but instead interpolates the needed value from a published table.
One common table used by enthusists are those published in Modern Exterior Ballistics by Robert L McCoy. It should be noted that the x-axis is not uniform and has a higher density of points in the transonic region, where the drag coefficient is highly variable. That said, a round deccelerating through the transonic region is likely to lose stability and the resulting ballistic calculations will be of questionable accuracy due to the resulting variance.
| M | CDING | CD1 | CD2 | CD5 | CD6 | CD7 | CDg | CDgp |
|---|---|---|---|---|---|---|---|---|
| 0 | 0.228 | 0.263 | 0.230 | 0.171 | 0.262 | 0.120 | 0.211 | 0.466 |
| 0.5 | 0.228 | 0.203 | 0.198 | 0.160 | 0.216 | 0.119 | 0.210 | 0.497 |
| 0.6 | 0.228 | 0.203 | 0.183 | 0.153 | 0.213 | 0.119 | 0.210 | 0.526 |
| 0.7 | 0.228 | 0.217 | 0.170 | 0.147 | 0.212 | 0.120 | 0.210 | 0.592 |
| 0.8 | 0.260 | 0.255 | 0.167 | 0.149 | 0.215 | 0.124 | 0.210 | 0.661 |
| 0.9 | 0.317 | 0.342 | 0.183 | 0.182 | 0.230 | 0.146 | 0.211 | 0.737 |
| 0.95 | 0.373 | 0.408 | 0.259 | 0.241 | 0.273 | 0.205 | 0.257 | 0.776 |
| 1.0 | 0.435 | 0.481 | 0.398 | 0.338 | 0.360 | 0.380 | 0.407 | 0.814 |
| 1.05 | 0.503 | 0.543 | 0.410 | 0.403 | 0.426 | 0.404 | 0.448 | 0.851 |
| 1.1 | 0.576 | 0.588 | 0.411 | 0.420 | 0.447 | 0.401 | 0.448 | 0.887 |
| 1.2 | 0.628 | 0.639 | 0.402 | 0.434 | 0.448 | 0.388 | 0.435 | 0.951 |
| 1.3 | 0.642 | 0.659 | 0.390 | 0.439 | 0.439 | 0.373 | 0.421 | 0.991 |
| 1.4 | 0.642 | 0.663 | 0.376 | 0.441 | 0.428 | 0.358 | 0.406 | 1.003 |
| 1.5 | 0.642 | 0.657 | 0.359 | 0.439 | 0.416 | 0.344 | 0.392 | 1.008 |
| 1.6 | 0.642 | 0.647 | 0.343 | 0.433 | 0.404 | 0.332 | 0.378 | 1.009 |
| 1.8 | 0.621 | 0.621 | 0.315 | 0.412 | 0.379 | 0.312 | 0.352 | 1.007 |
| 2.0 | 0.602 | 0.593 | 0.293 | 0.386 | 0.352 | 0.298 | 0.329 | 1.001 |
| 2.2 | 0.585 | 0.569 | 0.277 | 0.363 | 0.325 | 0.286 | 0.308 | 0.994 |
| 2.5 | 0.558 | 0.540 | 0.257 | 0.335 | 0.288 | 0.270 | 0.280 | 0.981 |
| 3.0 | 0.514 | 0.513 | 0.231 | 0.300 | 0.241 | 0.242 | 0.243 | 0.961 |
| 3.5 | 0.479 | 0.504 | 0.209 | 0.275 | 0.209 | 0.215 | 0.215 | 0.943 |
| 4.0 | 0.451 | 0.501 | 0.191 | 0.255 | 0.187 | 0.194 | 0.195 | 0.928 |
Environmental Factors 🔗
The common environmental factors considered by a ballistics computer are temperature, humidity, air pressure, altitude, and wind speed. The first four are used exclusively for determining the air density and speed of sound. These are adequately explained by the associated Wikipedia pages. The only complication of note is the way meteorologists report barometric pressure where it has been “adjusted” to an equivalent sea level pressure. This requires knowledge of the local altitude and temperature to determine the actual air pressure but is unnecessary if your ballistic computer has a built-in barometer.
Wind speed is especially important as it can lead to a lateral drift of the bullet in flight and becomes considerable at longer ranges. Ultimately, its inclusion in the calculations is quite straightforward. Drag is a function of the bullet relative to the air mass, not the ground. Use the vector addition of the wind velocity and the bullet velocity when computing the mach number and the drag force. The kinematic equations are still computed relative to your stationary point of reference (typically the ground).
Zeroing 🔗
Physically, “zeroing” a scope is to adjust the angle between the sight axis and the barrel such that the bullet trajectory will intersect with the sight axis at a specific distance. A simple way to estimate the angle is to run a simulation with the barrel parallel to the sight axis, seperated by the sight height. The zero is the bullet drop below the sight axis expressed as an angle.
Then, when simulating future runs, the initial velocities are adjusted by the zero angle:
This method works well for reasonably “small” angular adjustments (e.g. typical zeroing ranges). However, for “large” adjustments (e.g. zeroing CCI Quiet 22 LR at 200 yards), the loss of forward velocity from the cosine will result in an insufficient zeroing angle. It may be necessary to run the algorithm iteratively to compensate. This is the same algorithm one would use to correct for wind drift.
Note, the zeroing angle is a physical property of the system and is based on the conditions as they existed at the time of zero. If one fires their rifle on a different day than it was zeroed, the differences in environmental conditions will lead to a perceived error. When designing a ballistics computer, it would be best if the zeroing and firing conditions can be specified seperately.
Limits on Accuracy 🔗
It’s fairly common in ballistics calculators to make extensive efforts in the name of “accuracy” that accomplish little more than introducing a maintenance burden. One needs to consider the practical limitations on acheivable precision.
Gravity and drag are the dominant forces acting on the bullet; however, the ballistic coefficient and drag coefficient tables are only specified to three, possibly four digits. This is further ignoring the very real deviation of the actual bullet drag from that estimated by the generic models. Even the standard value for gravity is likely to have value beyond the third digit due to local variation.
When it comes to the environmental conditions, one needs to consider the accuracy of the sensors. The wind is highly variable, both in time and location, which can be significant for extreme range. The most sophisticated weather meters network to measure the wind speed at multiple points along the trajectory.
The muzzle velocity is well known to be variable, based on slight differences in powder load and even barrel temperature. “Match ammo” is produced with much greater emphasis on round-to-round consistency and has a price to match while many competitive shooters hand-load. The more sophisticated chronographs will measure multiple shots to provide average velocity and standard deviation.
When developing a calculator, it is good practice to run a Monte Carlo analysis, randomizing each of these parameters within likely variance, and see how much deviation can be expected in the final trajectory.