Dec 132017
Ballistics analysis program.
File BANG10.ZIP from The Programmer’s Corner in
Category Science and Education
Ballistics analysis program.
File Name File Size Zip Size Zip Type
BANG!.DOC 26941 9345 deflated
BANG!.EXE 84382 45357 deflated
BULLET.LST 53578 7117 deflated
DRAMEQ 1769 272 deflated

Download File BANG10.ZIP Here

Contents of the BANG!.DOC file



3012 MATIS
H4R 1A3


I make no representation or warranties with respect to the contents hereof and
specifically disclaim any implied warranties as to the suitability of this
program for any particular purpose. You must determine that yourself. I
expressly decline to assume liability for any use of this program by you, and
your use of this program constitutes your agreement to hold me blameless. I
reserve the right to make changes from time to time in the context hereof
without obligation to notify any person or persons of such changes. There are
no deliberate "Trojan Horses" or "Viruses" in the original copies of this
program but I have no control over copies not made by me.


This is not "Freeware". If you find this program useful you should either join,
or send a contribution to, the National Firearms Association, P.O. Box 1779,
Edmonton, Alta. T5J 2P1, Canada. Remember, unless we shooters stick together
our sports and hobbies will be legislated out of existence by the well-meaning
but uninformed. Please distribute these docs along with the program.

!*!*!*! I inadvertently introduced a bug in ver. 1.04 that screwed up parts of
the Ballistic Coefficient Computation section. This has been correct-
ed. I apologize for this.

- 1 -


COPYRIGHT (C) 1988-J.R. Haran
3012 Matis
St-Laurent, QC
H4R 1A3

BANG! is a general purpose ballistics program for small arms, primarily
hunting rifles. It will compute bullet trajectories with an accuracy that is
sufficient for most purposes. It also contains methods for statistically analy
-zing bullet velocities, etc. This program requires DOS 2.1 or higher to work.
It will support the use of an 8087 math co-processor and C.G.A.

I must acknowledge my debt to the late Julian Hatcher, Major General,
U.S.A., and his "Notebook" for getting me interested enough in ballistics to
write this program which is derived from one that I did a few years ago on a
Texas Instruments TI-59 programmable calculator.

The mixture of units used in this program is due to the fact that most
of us are familiar with the ones (grains, yards, etc.) used in the U.S.A. from
where we get most of our information on shooting and amateur ballistics. As
Canadians we obtain our weather information (temperatures, pressures) in metric
form and I have used this as the default for atmospheric corrections although I
have also provided for entering these in U.S. units if preferred. The standard
atmosphere is the I.C.A.O. one that uses a sea-level pressure basis of 101.32
kp (29.92"), and temperature of 15C (59F).

Headwinds, tailwinds, and humidity haven't too much effect on bullet
trajectories so I haven't allowed for them. I have limited the maximum range
input to 1350 yards (9 X 150) and the minimum velocities to 400 ft/sec input
and 200 ft/sec output. Outside of these limits a warning message will be dis-
played. This message will also appear if a ballistic coefficient of zero or
less is entered. The maximum number of range intervals is nine. This is be-
cause of the 80 column display limits of the normal monitor screen and/or pr-
inter. Bullet performance comparisons are limited to twenty.

The trajectories are computed by means of equations derived from the
British 1904-1906 firing tests and not from a set of tables. For instance the
retardation from 1200 ft/sec up is closely approximated by a linear equation of
the form av + k. I have used a recursive technique to solve the differential
equation resulting from this. Below 1200 ft/sec I have used three other sets
of simpler differential equations for the lower velocity regions. This gives
results that agree quite well with the better known Ingall's Tables which are
the basis of most ballistic information found in reloading handbooks. His
tables were derived from the Krupp firings of 1881.

This program is primarily concerned with external ballistics and makes no
attempt to offer any reloading data. That is best left to the powder companies
and publishers of reputable reloading books who have the facilities to ensure
the safety of their loads.

I have included a list of bullets from the most popular manufacturers but
as bullets come and go I will leave it up to you to keep the list up to date.
It is far from complete as the ballistic coefficients for many of them are not
available or are missing.

- 2 -

BANG! is menu driven so let's start by going through the choices.

The first item on the Main Menu is atmospheric correction. This corrects
for differences from standard in altitude, temperature, and pressure in either
metric or U.S. units. This will be kept in memory for use in one of the Ball-
istic Coefficient routines and for calculating the Bullet Path. The default
correction factor is 1 or standard atmosphere at sea level.

There are several ways of correcting for non-standard atmospheric condit-
ions. If you have access to a recent aviation weather report for your area
enter the altitude and temperature at your shooting site and for the pressure
enter the altimeter setting (QNH) as given in that report. If you know the alt
-itude and temperature but not the QNH, press only the Enter key when asked for
the pressure and the default of 101.32kp/29.92" will be used. If you know the
temperature and the barometric pressure enter them at the prompt but press only
the Enter key when asked for the altitude. The important thing to remember is
that you don't enter both an altitude and a barometer reading in the same prob-
lem. This would lead to a double correction as the altitude entry itself corr-
ects for the standard pressure drop with increasing altitude. Entering the QNH
corrects only for non-standard pressure conditions at your altitude. Finally,
if only the altitude of your site is known, enter it but press only the Enter
key when asked for temperature and pressure. Standard International Civil
Aviation Organization (ICAO) atmospheric conditions for that altitude will then
be used for the correction factor.

The next item on the Main Menu is Ballistic Coefficient. Selecting this
switches you to another menu that allows you to find the ballistic coefficient
by using different methods. The first of these is the most accurate if you
have the use of one or two good chronographs and an accurate method of measur-
ing distance. It may also be used by looking up the figures put out by the
ammunition manufacturers. You first apply the atmospheric correction and then
enter the range over which you will be measuring the velocities. Next enter
the velocity at the beginning of this range (normally the muzzle). Enter the
velocity at the end of this range and the ballistic coefficient will be calc-
ulated and corrected to standard atmosphere. If you are using the manufact-
urer's figures you would, of course, give them a correction factor of 1.

Calculating the coefficient by comparison with another bullet similar in
shape and with a known ballistic coefficient is pretty straight forward. Just
enter the characteristics of your bullet as requested then do the same for the
one with the known coefficient. Many reloading manuals put out by the various
bullet makers show the shapes and ballistic coefficients of their bullets so
you can start from there.

I recommend that you use the Ogive Shape technique only as a last resort.
It requires very careful measurements and even then is not all that accurate.

I have included a method of finding the ballistic coefficient of a round
ball for those shooters who love to get themselves dirty by firing off black
powder. Since a round ball doesn't begin to approach the shape of a modern
bullet this method is not too accurate.

- 3-

The next item on the Main Menu is Ballistic Comparison. By using this you
can compare the effects of changes in ballistic coefficient, wind drift, muzzle
velocities, etc. in twenty different cases. This is a routine that will settle
many of those arguments about "My gun hits harder at 300 yards than yours does
at 100."

For each case you will be asked to enter data. If you don't enter a value
for Atmospheric Correction it will default to the value that was previously
calculated. You will then be asked whether you want to enter another case to
compare it with, whether you want to correct or redo the last case that was
entered, or whether you want to compare all of the cases that you have entered.
When you compare them you will get a listing of their respective bullet masses,
muzzle velocities and energies, the atmospheric correction that you have used,
along with the ballistic coefficient and crosswind.

The velocity, energy, time of flight, mid-range height, bullet drop and
drift for the ranges you have entered will be computed and displayed. To get
a printout of this information simply use the method. Pressing
any other key will allow you to compare another set of cases or to return to
the Main Menu.

Selecting Bullet Path from the Main Menu will let you calculate the path
of a bullet using as many as nine equal intervals. For example you could use
nine intervals of 100 yards each. Just remember the limitations that were
mentioned on page one. Eight intervals of 200 yards would exceed the limits
but six would be O.K. (1600 yds. vs 1200 yds.) Because of display limitations
you could get some strange looking results. For instance a bullet path showing
a drop that exceeds -999.9 will be prefaced with " % " and the display will be
screwed up. When the bullet path gets that low you won't hit anything anyway.
The height of sight is from the centre of the bore and is usually taken as one
inch for iron sights and 1.5 inches for a scope but you can use what you want.
The angle of fire is measured from the horizontal ( 0 ) and it doesn't matter
whether you are shooting up or down hill. For any practical purpose the effect
is the same. The ballistic coefficient you enter will be corrected by the
factor mentioned on the screen at the beginning of this particular routine.

Where the path and range for a given distance intersect is your zeroing-in
range along that path. Please note that if your angle of fire isn't 0 the
path at that point will not show zero but will instead show how high your gun
will shoot compared to where it would if you had shot on the level. The reason
for this, as all shooters should remember, is that your gun will always shoot
higher when fired uphill or downhill.

The time of flight and crosswind drift can illustrate several fascinating
points. For example, you are out hunting with your trusty "Thuddy-Thirty" and
you spot a buck trotting past you at two hundred yards from right to left at
about ten m.p.h. The wind is blowing from the left at 15 m.p.h. If you aim at
his private parts can you make him a eunuch? The answer is, not a chance. The
wind alone, will drift the shot one foot behind him. Since ten m.p.h. is about
15 feet/sec and the time of flight is nearly 1/3 sec. he will have moved five
feet before the bullet gets to where he was. In other words you will have
missed de-bagging your buck by six feet.

To obtain a printout of bullet path results again use the
key sequence. Press any other key when you wish to make your next selection.

- 4 -

Selecting Miscellany from the Main Menu will move you to a sub-menu. The
first choice presented is " Count conversion for older Oehlers ". This is a
personal convenience as I still use my often shot over and occasionally shot
Oehler's Model 11 chronograph. It removes the need for set screen spacing and
disappearing conversion tables. It will also work for any other chronograph
that uses an octal count if the clock frequency is known ( the default is
400Khz). The original TI-59 program also computed the mean, standard deviation
and all that. This can now be done by using the Statistics Menu.

The Recoil option is accurate for modern rifles but I would suggest that
for shotguns and black powder weapons that operate at a much lower gas pressure
and velocity that you simply enter only half of the powder mass. This will
reduce the recoil value to a more realistic figure though it won't help your
shoulder a bit.

This option can also illustrate the misconception that recoil and muzzle
energy are directly related. For instance, ignore the powder charge and
calculate the recoil energy of a 10 lb. gun. Then calculate the muzzle energy
by means of the Bullet Path or Compare option. Now triple the bullet weight
and repeat the above. You will find that the muzzle energy has been tripled
but that the recoil energy has increased by a factor of nine. It may get the
point across to the stubborn that bullet energy is proportional to MV while
recoil energy is proportional to MV when M is the bullet's mass and V is its

The Rotational Energy part is pretty trivial but is included because an
inordinate amount of destructive power has been ascribed to it by various gun
magazine writers and others. Comparing it to the kinetic energy produced by a
normal bullet strike will help keep things in perspective.

The first option on the Statistics Menu allows you to compute the Mean,
the Sample Standard Deviation, the " Q ", and the 95% confidence interval.
You enter the value of the various observations that you wish to use. To end
or change the entries enter a negative number. If you press E the routine will
compute the desired stats. Pressing A will allow you to remove an entry and
substitute another. When an entry is removed from the list the others slide
down to fill the empty place and leave room at the top for another one.

Standard deviation is a word that is bandied about in the popular gun
press by people who haven't the faintest idea of what they are talking about.
They don't realize that it doesn't mean a thing unless it is used along with
the mean or "average" value. When I chronograph a batch of reloads I divide
the mean velocity by the standard deviation and take the square root of the
result. I call this the " Q ", or quality factor.

Although " Q " has no rigid statistical meaning it does allow me to make
quick and dirty judgments as to the likely accuracy of a load. Try it. It
can't hurt.

- 5 -

The second item on the Statistics Menu will do a one or two-tailed t-test
so that you can compare means. You have your choice of entering your data in
raw form or you may enter it by using the mean, standard deviation and number
of events. If you intend using a one tailed test it is better to enter the
postulated greater mean first. This is because the results will appear in the
form of " The Confidence Level is XX.X% that Case 1 is the greater. " Note
that any level above 99.9% will be shown as %100.0% Also note that there is no
predetermined confidence level. The actual computed one will be shown and it
is up to you to decide whether or not this level satisfies your requirements.
The one that is often used is 95.0%

When a two-tailed test is used the results will be shown as " The Confid-
ence Level is XX.X% that the means are different." so the order of entry is
immaterial. The method of entering raw data is similar to the one used in
finding the mean and standard deviation except that it is done using two cases.

Twist rate for stabilization will give you a good idea of the minimum
twist rate needed to stabilize bullets of different weights in your gun. If
you are having accuracy problems with the heavier bullets in your rifle this
may show you the reason why.

Velocity change with powder temperature gives the direction and approxim-
ate amount of velocity change with temperature. The amount will not be exact
as there isn't too much data available on this. It will serve well enough if
the change isn't too extreme.

The Shell option in the Main Menu will allow you to go to DOS if you wish,
and then return to BANG! without having to leave the program. I originally
programmed SHELL to be available from any point in BANG! but found that this
could be confusing at times. One reason for using this might be to search the
file BULLET.LST to find a particular bullet. For instance you could SHELL then
enter the following from the DOS command line.

> FIND ".308" BULLET.LST | FIND "170" and the following list would be produced.

LEE :- .308 113 .170 .*** cFN #
HORNADY :- .308 170 .256 .182 FP #3060
NOSLER :- .308 170 .256 .242 FP #30408
SIERRA :- .308 170 .256 .250 FN #2010
SPEER :- .308 170 .257 .304 FN #2041
SIERRA :- .308 180 .271 .322 RN #2170

You will note that it not only found all the listed 170 gr. .308 cal. bullets
but also the LEE with a sectional density of .170 and the SIERRA #2170.

- 6 -

To illustrate how you might use BANG! I'll run through an example. You
have a 6.5 x 55 Swedish rifle and you want to find out how it performs with the
factory 156 gr. bullet. Furthermore you will be hunting in the Alberta
foothills at an altitude of 1,000 metres on a day when the temperature will
likely be -5C and the aviation weather report for that area says the altimeter
setting (QNH) is 101.5 kp.

First get the specs. on your ammunition. For instance, on page 238 of the
1987 Gun Digest the muzzle velocity of this bullet is given as 2645 ft/sec. and
the 300 yd. velocity as 2010 ft/sec.

Go to the Main Menu and select Ballistic Coefficient " B ". This will
take you to the Ballistic Coefficient Menu. From that menu select Coefficient
by Velocity Drop " V ". Assume that the ammo. maker is quoting his figures
for a standard day so the correction factor is 1.000 - Hit the spacebar to
continue. Now enter the range ( 300 ), initial velocity ( 2645 ), and the
velocity at 300 yds. The ballistic coefficient will be .407

Go back to the Main Menu and select Atmospheric Correction " A ". Follow
the prompts and enter altitude, temperature, and pressure. You should get a
correction factor of 1.047 which will be stored by the program.

Go back to the Main Menu again and select Miscellany " M ". From that
menu choose Velocity change with powder temperature " V " - Choose degrees
Celsius " C " and enter the original muzzle velocity ( 2645 ), original powder
temperature ( 15 since the book figures are for a standard day ), and the new
powder temperature ( -5 ). The new Muzzle Velocity is 2580 ft/sec.

Again go back to the Main Menu and choose Bullet Path " P ". Now :

Enter :
Number of range intervals 9
Range interval (yards) 50
Height of sight (inches) 1.5
Angle of fire (degrees) 0
Bullet Weight (grains) 156
Muzzle Velocity (ft/sec) 2580
Ballistic Coefficient .407
Crosswind (m.p.h.) 10

You should now get a screenful of figures that will tell you more than
you probably care to know about the trajectory of your bullet.

Appendix A shows shows the results of the above example.

Returning to the start of the program by selecting from the main
menu will reset all your variables.

Choose your own examples and fool around with the program until you feel
comfortable with it.

Appendix A

Enter the Range (yards) 300
Enter the Initial Velocity (ft/sec) 2645
Enter the Velocity at 300 yards 2010

The Ballistic Coefficient is 0.407

Press R to repeat, Esc to return to the B.C. Menu

Enter :
Altitude (metres) 1000
Temperature (Cel) -5
Pressure (kp) 101.5

The atmospheric correction factor is 1.047

Press R to repeat, Esc to return to the Main Menu

Enter :
Original Muzzle Velocity (ft/sec) 2645
Original Powder Temperature (C) 15
New Powder Temperature (C) -5

The New Muzzle velocity will be 2580 ft/sec

Press R to repeat, Esc to return to the Miscellany Menu

Atmospheric Correction = 1.047 Sight height = 1.5 Angle of fire = 0
Bullet weight = 156 gr. Ballistic Coefficient = 0.407 Crosswind = 10 m.p.h.

RANGE MUZZLE 50 100 150 200 250 300 350 400 450

VELOCITY 2580 2474 2370 2268 2170 2074 1981 1890 1804 1721
ENERGY 2304 2119 1945 1781 1630 1488 1358 1237 1127 1025
TIME 0.000 0.059 0.121 0.185 0.253 0.324 0.398 0.475 0.557 0.641
MID-RANGE 0.0 -0.6 -0.0 0.9 2.3 4.3 6.9 10.1 14.1 19.0
DRIFT 0.0 0.1 0.8 1.9 3.7 5.8 8.6 12.0 16.1 20.8
PATH 0 -1.5 -2.2 -4.2 -7.9 -13.2 -20.3 -29.5 -40.9 -54.8 -71.2
PATH 50 -1.5 0.0 0.1 -1.4 -4.6 -9.5 -16.6 -25.7 -37.5 -51.7
PATH 100 -1.5 -0.0 0.0 -1.5 -4.7 -9.7 -16.8 -26.0 -37.8 -52.1
PATH 150 -1.5 0.5 1.0 0.0 -2.7 -7.2 -13.8 -22.5 -33.8 -47.6
PATH 200 -1.5 1.1 2.4 2.1 0.0 -3.8 -9.7 -17.7 -28.3 -41.4
PATH 250 -1.5 1.9 3.9 4.3 3.1 0.0 -5.1 -12.4 -22.2 -34.6
PATH 300 -1.5 2.8 5.6 6.9 6.5 4.3 0.0 -6.4 -15.4 -26.9
PATH 350 -1.5 3.7 7.4 9.7 10.1 8.9 5.5 0.0 -8.1 -18.6
PATH 400 -1.5 4.7 9.4 12.7 14.2 13.9 11.5 7.1 0.0 -9.5
PATH 450 -1.5 5.7 11.6 15.9 18.4 19.2 17.9 14.5 8.5 0.0


I have come across a bug that crawls into the results sporadically. When
finding bullet paths one of the range columns will be very obviously wrong.
For example, if you enter 25 yard range intervals - a muzzle velocity of 1250
ft/sec - and a ballistic coefficient of .110, the results shown at 75 yards
will likely appear pretty strange. I have a good idea of why this bebit lurks
in some dark corner of this program but I have been too lazy to track it back
to its nest and stomp it out. If the little bugger does appear it can easily
be tamed by changing the muzzle velocity by a few feet per second either way or
by modifying the ballistic coefficient slightly.

If you are a Lotus 1-2-3 freak it is simple to capture the screen image
into a file, import it into Lotus or some similar program, and produce all
sorts of neat graphs showing bullet drops, drift, paths, etc. These can then
be incorporated into documents created by programs like Wordperfect so that you
can amaze your friends and confound your enemies.

After having read a discussion in the columns of a gunzine concerning bore
size, gauge, etc. I added a program to calculate all this for round lead balls.
It may help members of the muzzle loading fraternity but I think not. The ones
that I have met appeared to be beyond all help. I suspect that inhaling all
those black-powder fumes has an effect on the brain similar to glue sniffing.
Anyhow if you use this section bear in mind that Gauge is expressed to the
closest integral unit only. I have also put practical limits on the number of
digits allowed etc.

 December 13, 2017  Add comments

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>