I am new to the physics surrounding bullet trajectory and how it is calculated. I am a software developer and I am working on a ballistics calculator for rifles. I am using wiki for the trajectory calculation

I am currently using the equation under the "Angle θ required to hit coordinate (x,y)" section. This is all well and good, but it doesnt take into account the drag of the bullet(ballistic coefficient).

I have searched all over trying to figure out how to apply the coefficient to this equation. I am really at a loss and and would be very thankful for any direction in this matter. Maybe I have a gap in my understanding, but I have found plenty of other calculators and other documentation on trajectory and the coefficient but nothing that marries to the two together.


Firstly, that Wikipedia "Trajectory Calculation" page is pretty disappointing, it's not a very good fit to how smallarms ballistics is modelled and solved. A good book on the subject is Bryan Litz's recent Applied Ballistics for Long Range Shooting and a website with some first-rate on-line ballistics calculators as well as some good a very good writeups is JBM Ballistics. You might also want to look at "GEBC - Gnu Exterior Ballistics Calculator" to get some C code to play with.

Smallarms ballistics calculations suitable for most purposes are done by "1 degree of freedom" solvers. They treat the bullet as a point mass, affected by air drag and by gravity. The air drag is usually modelled by a "ballistics coefficient", which is a single parameter that more or less successfully combines the effects of bullet size, weight and dragginess into a single number (BTW the Wikipedia "Ballistic Coefficient" page is pretty decent).

This simple physics model (free flight in vacuum, plus air drag) is given a starting velocity and position, and then integrated over time (typically Runge-Kutta).

A larger BC indicates that the bullet is less affected by air drag than a lower BC. There are two interesting points to this, one obvious, the other important but less intuitive:

  1. a bullet with a higher BC will lose speed slower, which will make it shoot flatter (drop less with distance travelled)
  2. since the BC measures the "degree of interaction between the bullet and the air", it also turns out that the amount of wind drift (how much the bullet is pushed sideways by a crosswind) is directly affected by the BC of the bullet

EDIT to add in response to the OP's comments:

When you are looking at (say) the GEBC code, you should probably be able to see that the physics model contains these points:

  • the bullet has a starting position and velocity. These are usually expressed in a coordinate system that is stationary w.r.t. the shooter.
  • one force acting on the bullet is gravity (always down)
  • optionally, one can also model Coriolis and other pseudo-forces one gets from this reference frame being not strictly an inertial one
  • there is also the drag force. In a simple model, this is always directly opposite to the bullet's speed through the air (which will be the bullet's speed through the shooter's coordinate system plus the wind speed). More sophisticated models might consider other smaller forces (lift on the bullet, side-force from Magnus effect etc), but these other forces are a separate modelling exercise. The "b.c." that you are talking about only concerns the drag force that a bullet experiences in the direction of the relative wind over the bullet.

The force on the bullet is its drag coefficient times its area times the dynamic pressure (which is 0.5 rho v^2). In solving the bullet's position you're actually interested in the acceleration due to this force, so you have this quantity divided by the bullet's mass. You know the speed "v", you know the atmospheric density "rho", you need to find out the value of CD*A/M.

Note that A is constant, M is constant, but CD is not. CD depends on velocity (actually bullet Mach number), and the CD curve will be different for bullets of different shape.

This is where the BC comes in. It is assumed that the "CD*A/M" curve of your bullet, is the same shape as and differs only by a multiplicative scaling parameter (1/BC) of the "CD*A/M" curve of a standard reference bullet.

The most common BC system is called "G1" and uses a reference bullet that is like a 1900s artillery shell. (the "G7" system uses a reference bullet that is very similar to a modern long range rifle bullet).

Your BC program will need to model the "G1" drag curve as a function of Mach number, typically this is done with lookup tables.

At every iteration step where you need the acceleration on the bullet due to it's drag, you take the current Mach number of the bullet, look up the "CD*A/M" value from the G1 table, divide it by your BC (big BC means less drag and therefore a smaller acceleration due to drag), and that is the drag component that you feed to your flight model.

(Go to the Wikipedia Ballistic Coefficient writeup and have a look at the expression for "BC_sub_bullets". In it, replace the "i" term with the "CB/CG" that it is defined to be. Solve that expression for "CB" (the bullet's drag coefficient). Now have a look at CB*A/M (the "A/M" will draw the "M/d^2" term from the RHS). This will give you the CD*A/M that you want, expressed as function of the G1 drag table)

(this question was also posted to firearms.stackexchange)

| cite | improve this answer | |
  • $\begingroup$ I will look at some of these other links you have. Some I have looked at already, some I have not. I will take a look tonight and see if any of these resources help me along. $\endgroup$ – Etch Nov 30 '11 at 17:16
  • $\begingroup$ After going through the links you posted, I dont know that there is any information there that I wasnt already aware of with the exception of the Runge-kutta. I pretty much have the drag formula with airdensity/temp/alt/coefficient and I have the trajectory formula noted above from the wiki. I dont know if I am simply missing somthing or I am flat out misunderstanding but I dont see anything that marries drag with trajectory. Ill keep looking, but perhaps I am missing something that you are saying (hopefully I am). $\endgroup$ – Etch Dec 1 '11 at 0:43
  • $\begingroup$ I looked through the C++ code on Gnu Calculator. I think that is going to help me tons. Its helping me fill in the gaps that I have. I am sure I will find my answer there, Thanks! $\endgroup$ – Etch Dec 1 '11 at 1:24
  • 1
    $\begingroup$ @Etch I'll add a bit to my post re: your comment "..t I dont see anything that marries drag with trajectory." $\endgroup$ – Daniel Chisholm Dec 1 '11 at 12:07
  • $\begingroup$ Thank you very much. I think I have a better understand on what I was trying to get. You have saved me a good amount of time. $\endgroup$ – Etch Dec 1 '11 at 14:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.