With immense guidance from
Although ballistics has for many years been studied in its complete entirety, and it has to this day been refined as a very accurate method of prediction, it may be interesting to look at it from its foundation, and to investigate it to grasp the practical aspects of its nature and nuance. The most important part, for the casual hunter, is bullet trajectory prediction. This plays a large role in the strategy of ethical, casual game hunting and is very important to every hunter today.
From basic knowledge and observation, we know that some bullet will have a certain speed, which should be ideally static amongst bullet type, that as it travels through the air it will continually lose its speed until it is completely at a stop, and that the gravity of the earth will pull the bullet continually towards it until the two bodies have firm contact. From our point of view, all of these aspects are easy to model, mathematically, and can be analyzed to gain knowledge interesting and important practicality.
We will begin with the basics: we know that a bullet loses its speed as it travels, and that at the exact moment that it exits the muzzle of a firearm, it has a specific velocity that will be given. Loss of velocity of the bullet is dependent on its speed, and the velocity of the bullet converges to zero as time wears on. However, the rate of this convergence is of top significance, and we would like to be able to derive a model that is both physically accurate regarding the system it will represent, but it should also be algebraically simple and easy to manipulate. We can set some intuitive starting points, such as
![]()
which
make sense since we will consider the origin as the muzzle of the gun, and also
that when the bullet leaves the muzzle at time t it will have its muzzle velocity vm in
yards-per-second. Now, considering
, that is, "force equals mass times
acceleration." With this, we can
form
, and
,
where m is the mass of the bullet and a
is some constant representing the force of air resistance on the bullet. This equation is of the form
, which has a solution
, so this gives us

Now consider

our final expression for the horizontal movement of the bullet.
We
can work now on the vertical movement of the bullet, which is governed only by
gravity. With this in mind, and using
![]()
where g is the acceleration of gravity, in our case 384 in/s2, since we want the y-axis to be scaled in inches. So we then have that

First, however, we should give consideration to a technicality. If the rifle is sighted-in so that the line-of-sight from the scope to the target some x yards away is known, then the gravitational drop of the bullet implies that, due to the rise and fall of the bullet as it traveled from the muzzle to the target, the bullet actually traveled more than x yards, even though it intercepted the target at x yards from the muzzle. So what we can do is define a distance function,
,
where x is some distance in yards where the bullet intersects the line-of-sight of the riflescope. Pictorially,
|
Figure 1 |
Figure 2 |
we have
in Figure 1 the path of the bullet in
red, and the line-of-sight of the riflescope, when sighted-in at
yards, in blue. The
two green curves are
and
, circles representing distances of 100 yards and 200 yards
from the muzzle of the firearm. Clearly,
there is a difference in x between
, i.e. a straight line dropped down from the x-axis at
until it intercepts
the path of the bullet, and where the path of the bullet intercepts
, or when it is exactly x yards from the muzzle. This is analgous to saying that, after a time t, a bullet traveling in a perfect line, with no gravitational
forces acting on it, would be closer to the muzzle of the firearm than would a
bullet subjected to gravitational forces.
This is shown graphically in Figure
2, as it can be clearly seen that if the bullet was not subjected to
gravity, it would be, at some time t,
yards away from the muzzle, but since we are assuming in this
example that the bullet does not lose horizontal velocity, at the same time t the bullet subjected to gravity would
also be at
yards, but it would also be somewhere around -1.33353 inches
below the line-of-sight, and clearly it would be farther away from the muzzle
of the rifle. The distance between
yards and where the path of the bullet intercepts
,
yards, is 0.053 yards, or about 2 inches. In our application here, overall distances of
bullets will be below 500 yards.
Therefore such a neglible difference between
the two values of x suggests that we
can be fairly accurate just considering
, and not using
.
If we consider a specific example, the muzzle veloctiy of a standard 45gr. bullet in the calibre .223 Remington is 3600fps. It is known through research that this type of bullet, with a scope sighted in at 150 yards, drops 1.7 inches below the point of sight-in at 200 yards. We can use this to find an adequate value for a. If we consider that our equations require m, the mass of the bullet, we will need to do a bit of conversion. Bullets are weighed in grains, but the Imperial unit of mass is the slug, so we can use that
1 grain = 0.0000044 slug
to correctly find m. For example, the 45gr bullet we are using as an example has a mass of 0.0001998slug.
If we consider
![]()
we notice that there is only one t in the equation, and so we should be able to solve for t as a function of x, essentially removing the paramterization. Doing this, we have

which we can replace in the parameterization of y(t). Thus, we have that

Now, we could find a value for a by considering

and defining the function
.
If we find the roots of this equation, it will give to us the correct value of a to use in the model, assuming there is only one unique root. However, upon numerical analysis, it is apparent that the function h(a) has no real roots at all. It is therefore conclusive that, with the model we have chosen, there is no value of a that yields the result that we expect.
Since
the presence of imaginary numbers in
renders the equation
useless, it is of course instinctual to find what caused the problem. If we consider what the graph will actually
do with different values of a, we can then see why the model cannot
reach the “expectations.” Considering
the figure below,

Figure courtesy
of Dr. Wilber.
We can notice that as a goes to zero, the model begins to approach the dotted curve. With the legitimate data provided by the ammunition manufacturer, it appears that the stipulations cannot be met, since they would imply a curve that would lie somewhere above the dotted curve, which is not possible for any real a.
It appears that the only cause of disturbance in our model, then, must remain entirely with a. That is, our model of air resistance
![]()
is not correct, in a physical point-of-view. Other models of air resistance are of course possible, but we have so far no real suggestions as to a correct one. We could consider something like
,
which would yield a parabolic air resistance. With the elementary conditions that we began with (that is, with no knowledge of the nature of air resistance), anything beyond this point is purely speculation. But, most of the work has been done. If a new, justified parameterization of the bullet were devised, the computer programmes documented could easily be updated simply by modifying the definition of x( t ) and y( t ) to represent the new system. Then, a new ballistics table could be whipped up quite effortlessly.
Since the model we derived has no value of a that behaves properly, we will need to formulate something fresh. For simplicity's sake, consider
![]()
which does not consider the mass of the bullet. Since most common projectiles range between 20gr and 100gr, there will not be a huge deviation from the model if we can accurately build the model for an average-size bullet (i.e., 45gr). Considering our example, we want to find a that gives the drop of the bullet at 200yds to be 1.7in below the value of the line-of-sight at 200yds, if the riflescope line-of-sight intercepts the path of the bullet at 150yds.
If we set a = 0, we get an ideal model of the bullet, or a model that contains no air resistance. This was used to create the graphs in "Considering a Technicality," and thus it is conclusive that the difference of the bullet and the line-of-sight at 200yds is 1.333in. This value is intuitive since the bullet would be traveling faster and would have no time to drop to 1.7in.
We must solve for the value of a numerically, since we cannot easily write equations of a since the curve is defined parametrically. The value of a will clearly be negative, so we can begin with that. It will also not be largely negative, probably between the values of 0 and -5. If we check values of a between these numbers in increments of 0.0001, we can find a good numerical estimate of a. Using the computer programme written and outlined below, the value it calculated for a such that the drop of the bullet below the line-of-sight at 200yds is
a = -0.4.
Using this, the estimation of the bullet's path looks like

The entire purpose of the equations was to be able to predict how far above or below the line-of-sight the bullet is at x yards, if the riflescope is sighted-in at x yards. With our new equation for x(t), the computer programme outlined below was used to create the table of values:
|
At 10yds, bullet is at 0.211487in. At 20yds, bullet is at 0.395953in. At 30yds, bullet is at 0.552711in. At 40yds, bullet is at 0.681193in. At 50yds, bullet is at 0.780814in. At 60yds, bullet is at 0.850973in. At 70yds, bullet is at 0.891052in. At 80yds, bullet is at 0.900412in. At 90yds, bullet is at 0.878405in. At 100yds, bullet is at 0.824355in. At 110yds, bullet is at 0.737572in. At 120yds, bullet is at 0.617338in. At 130yds, bullet is at 0.462926in. At 140yds, bullet is at 0.273577in. At 150yds, bullet is at 0.048507in. At 160yds, bullet is at -0.213077in. At 170yds, bullet is at -0.512005in. At 180yds, bullet is at -0.849131in. At 190yds, bullet is at -1.225336in. At 200yds, bullet is at -1.641532in. At 210yds, bullet is at -2.098642in. At 220yds, bullet is at -2.597646in. At 230yds, bullet is at -3.139538in. At 240yds, bullet is at -3.725351in. At 250yds, bullet is at -4.356153in. At 260yds, bullet is at -5.033040in. At 270yds, bullet is at -5.757154in. At 280yds, bullet is at -6.529686in. At 290yds, bullet is at -7.351840in. At 300yds, bullet is at -8.224879in. At 310yds, bullet is at -9.150123in. At 320yds, bullet is at -10.128927in. At 330yds, bullet is at -11.162685in. At 340yds, bullet is at -12.252869in. At 350yds, bullet is at -13.400976in. At 360yds, bullet is at -14.608586in. At 370yds, bullet is at -15.877317in. At 380yds, bullet is at -17.208879in. At 390yds, bullet is at -18.605011in. |
Since the outcome of the equations based on proven physical laws was less than satisfactory, it seems that the intuitive mathematician is left but with creativity. Although the comprimised equations are seemingly bunk, they can't be far from the truth. The model seems to represent well what the path of the bullet should be, but from a purely subjective viewpoint it is ambiguous to assume conclusions.
Since
the definition of the physical laws here, along with certain stipulations that
may change due to algebraic manipulation, created problems that clearly could
not be solved, it was artistry that allowed the scientist to prosper. Although the exact accuracy of
can never truly be analysed, the equation can simply be regarded as a test
case for the procedure that could be used, should a more "lawful"
solution be derived.
With everything necessary said, we all must wait until spring to see how the outcome may mature.
#include
<stdio.h>
#include
<stdlib.h>
#include
<math.h>
double x( double t, double alpha ) {
return 1200 * t *
exp( alpha * t );
}
double y( double t ) {
return -192 * t *
t;
}
int main( void ) {
double alpha,
difference,
los_angle,
t;
alpha = 0;
do {
alpha -= 0.01;
printf( "\nalpha = %f", alpha
);
/*
Use alpha to find what the value of y(t)
is when x(t)
= 150.
*/
t = 0.0000001;
while( abs( 150 - x( t, alpha ) ) >
0.5 )
t += 0.0000001;
printf( "\nAt 150yds, t = %f",
t );
/* Now t is the value when x(t) = 150 yds. Use
this to find
what y(t) is to find the line-of-sight.
Create line-of-sight of riflescope
by using the
value of y(t) @ 150 yds.
*/
los_angle = y( t ) / 150;
printf( "\nAt 150yds, y = %f",
y( t ) );
/*
Now,
find what the
value of y(t) is at 200 yds.
Subtract this and line-of-sight at 200
yds
to achieve
the difference.
*/
t = 0.0000001;
while( abs( 200 - x( t, alpha ) ) >
0.5 )
t += 0.0000001;
printf( "\nAt 200yds, t = %f",
t );
printf( "\nAt 200yds, y = %f",
y( t ) );
difference = los_angle * 200 - y( t );
printf( "\nAt 200yds, difference =
%f", difference );
} while( abs(
difference - 1.7 ) < 0.1 );
printf( "\nalpha = %f", alpha
);
return 0;
}
#include
<stdio.h>
#include
<stdlib.h>
#include
<math.h>
double x( double t ) {
return 1200 * t *
exp( -0.4 * t );
}
double y( double t ) {
return -192 * t *
t;
}
int main( void ) {
double table[40],
t,
drop,
distance
= 1;
do {
t = 0.0000001;
while( abs( ( distance * 10 ) - x( t ) )
> 0.5 )
t += 0.0000001;
drop =
-0.0222352 * ( distance * 10 ) - y( t );
drop *= -1;
printf(
"\nAt %.0fyds, bullet is at %fin.",
distance * 10, drop );
} while(
++distance < 40 );
return 0;
}