This 'ballistics calculator' is a computer simulation which analyzes the behavior of a round ball in its flight from the muzzle to the target. A round ball is unique among projectiles in that its ballistic characteristics are solely dependant upon its diameter (unless it's made of something other than lead). This allows a (reasonably) simple physics model calculation to predict how it will behave, once the resistance of a "reference projectile" is known for a range of velocities. In the first decade of the 20th Century, British artillerymen made extensive measurements on the "retardation" of a 'reference' round-nosed one to three pound projectile over a wide range of velocities. These retardation (rearward forces) caused it to lose velocity over time, and this information could then be used to calculate ballistic tables. Of course, this reference projectile bears little resemblance to either a round ball or to almost any type of actual bullet, but it does tell us the relative forces as the velocity changes. Since the forces retarding the projectile depend almost entirely upon the shape of its forward face, any relatively round-fronted projectile will have at least the same relative resistance as its velocity changes. The trick is then to find (or guess) the relationship of the bullet you are interested in to the reference projectile, and this is referred to as the 'ballistic coefficient', or BC. Unfortunately, the BC is largely mythical, as even small changes in bullet design prevent any exact correspondance between it and the reference, but for our purposes, a round ball is close enough that we can use this British data with a proper 'fudge factor'. I performed a number of real-world measurements to come up with this factor, and the output of this simulator is reasonably accurate.
When the program starts, this window appears. On the left are all of the variables you can change:
- Caliber - The ball caliber in inches (not the bore caliber).
- Weight - The weight of the ball in grains.
- Muzzle Velocity - The muzzle velocity in feet per second.
- Sight Height - The distance from the top of the front sight to the bore center.
- Sighting Distance - What distance are you sighted in for?
- Cross Wind - Cross wind speed in mph (assumes wind at right angle).
- Altitude - Your altitude in feet.
- Temperature - The air temperature in Farenheight.
You will notice that as you enter a caliber, the ball weight is automatically calculated, based on the weight of a sphere of that size made from pure lead. If you want to change the weight, just do it, although the value will change back again if you change the caliber. Also, if you change altitude, the temperature will change to reflect the normal reduction in ambient temperature as you go higher. As with the weight, the temperature can be changed as you wish. Note that all entries have some built-in limits, and if you exceed them you will get an error message in the window.
After you have made your changes, clicking the 'FIRE' button will start the simulation. The results are shown in tabular form in the right window. If they get jumbled up, just increase the window size a little.
- Yards - the distance from the muzzle.
- Velocity - The velocity in fps at that distance.
- Fpe - The bullet energy in foot-pounds at that distance.
- Drop - The vertical position of the ball, in inches, at that distance.
- Drift - The horizontal drift from a cross wind.
- TOF - Time of flight (how long (in seconds) the bullet is in the air).
Getting hard copy
If you want to print out the results or see them in a spreadsheet, there are a couple of ways to do it. The program itself won't print anything, but the data is easily copied to a word processor or note pad. The first way is to simply click in the window containing the data and select the data to be copied; holding the 'ctrl' key and then pressing 'a' will select everything (called a [ctrl]a). You then copy the selection ([ctrl]c) and in an open word processor page, such as the 'Notepad' or 'Wordpad' just paste it in ([ctrl]v>). Another way is to check the box 'Create Data File', located just below the 'FIRE' button. When the 'FIRE' button is clicked again, a file is generated with all the your data and will appear in the same folder as the program. The file name will be something like 'c0d50_w187d5_ 'and so on. If you change the input conditions, the file name will change to reflect those conditions. Since Windows doesn't like periods in a file name, instead of 'c0.50_' for fifty caliber, the dots are replaced with the letter 'd'. The file is in a tab-separated variable (.csv) form and can be opened either as a text document or in a spreadsheet. If you open it in a spreadsheet, you can generate a graph of distance versus velocity, for example - or any other combination.
A Force To Be Reckoned With
The program will also give you a file showing the forces acting on the ball. If you click on the 'Data' menu and choose 'Show Force Data', a message will appear in the results window that a file has been created. The 'forces.csv' file can be opened in a word processor, spreadsheet or web browser. The data shows the force, in pounds, acting on the ball (of whatever size you entered) over a velocity range of 100fps to 3000fps. As you can see from the graph on the right, the force increases as the square of the velocity until near the speed of sound, when it then goes sharply upward until there is a blip just at the speed of sound. The forces don't rise as rapidly for a short distance and then take off again. If you look at the force on a 0.50 caliber ball at 1400fps, the ball loses 3.88 fpe for each foot it travels - no wonder it slows down quickly!
The Winds Do Blow
When there is a cross wind, a portion of the speed of the wind is added to the velocity of the projectile (the vector sum), so the ball feels like it is going a little faster than it actually is. Because the forces on the ball rise sharply with velocity, this extra forward resistance from what the ball would normally feel is translated to a side push which accelerates the ball to the side. This means that the most 'damage' done by a cross wind occurs in the early part of the flight. The ball slows down, but the sideways velocity doesn't, so the path of the ball curves ever more as it travels down range. This is why shooting in a variable cross wind is one of the most frustrating things you can imagine.
What About Slugs?
Although the program was written for a round ball, the retardation data was based on what was, in effect, just a large slug. If you change the weight of the projectile to that of a slug you are using, you will see the performance improves because of the increased sectional density a slug has compared to a round ball. I have not been able to independantly verify the results of a slug simulation, but they shouldn't be too far off.
Where To Get It
Very simple: Just click here to download the file 'ballistics.zip', which is the compressed archive. After downloading the 'ballistics.zip' file, place in the directory where you want it and then extract the files. Depending upon the version of your operating system, you may be able to just double-click on the 'ballistics.zip' and you will get a prompt asking if you want to extract the files - answer Yes. You may be able to right-click on the file and look for a menu choice 'Extrace All.." - either one will work. You might also get a warning that the file might damage your computer; this is a standard warning Windows now gives with all '.zip' files, but this is a 'safe' program. The folder contains the program itself ('External_Ballistics') and four other '.dll' files. All of the files except the 'READ_ME' file must be kept together. Note that some versions of Windows may not have the ability to extract the files, so some other unzip program such as 'Zip Genius' will have to be used to extract everything.
Very Important Note! I have downloaded and extracted the files onto another computer of mine I use for testing, and everything worked well. However, it is possible that some earlier versions of Microsoft Windows® will need additional files. If this happens, a message should appear saying that 'xxx.dll' or some such file is missing. If you see anything like that, please email me and I will try to get it for you and add it to the archive.
So where is the old version?
Some people have asked for the old version because of some incompatability problems with older computers or Linux systems. As always, your wish is my command... The console version for systems with scrolling console windows is here, and the one for fixed-size windows is here. The original instructions for the console versions are now in this 'read_me' file.
Of Interest To Programmers
The program was written in C++ using the Nokia Qt 4.7.1 framework. It was compiled using the (free) Qt Creator as well. The source code is available here and is free for anyone to study, use or modify as they see fit, although if you use any of the code in your own program, I would appreciate a mention of this site.