Plotting a Trajectory for a Ballistic Object: Complexities Revealed

Click For Summary
SUMMARY

This discussion focuses on the complexities of plotting the trajectory of a ballistic object in two dimensions, considering factors such as gravity, drag, and atmospheric conditions. The initial conditions include a constant gravitational acceleration of -32.15 ft/s², a projectile velocity of 3000 ft/s, and a ballistic coefficient of 0.400 lbs/in² using the G7 Drag Model. The method proposed involves implementing a predictor-corrector algorithm for numerical integration to calculate the changes in velocity and position over time, utilizing small time steps for accuracy.

PREREQUISITES
  • Understanding of ballistic coefficients and drag models, specifically G7 Drag Model
  • Knowledge of numerical integration techniques, particularly predictor-corrector algorithms
  • Familiarity with basic physics concepts such as gravity and projectile motion
  • Proficiency in programming for implementing algorithms to simulate trajectory
NEXT STEPS
  • Research numerical integration methods, focusing on the trapezoidal rule and its applications in physics simulations
  • Explore advanced drag models and their impact on projectile motion
  • Learn about the implementation of physics engines in programming languages such as Python or C++ for trajectory simulations
  • Investigate the effects of varying atmospheric conditions on ballistic trajectories
USEFUL FOR

Engineers, physicists, and programmers involved in ballistic modeling, simulation developers, and anyone interested in the dynamics of projectile motion and atmospheric effects.

Zaggy
Messages
1
Reaction score
0
OK, having been researching this of late, I've come to the conclusion it is far more complex than I first thought! So I guess without further ado, I'll jump into explaining my problem...

Aim:

Having established a set of initial conditions, I would like to be plot the trajectory of a ballistic object (in two dimensions, vertical and horizontal) at a repeating interval (say every 1/100th or 1/1000th of a second), taking into account gravity (obviously), accurate drag model & ballistic coefficient and the effects of an atmosphere (initially, the standard atmosphere)

Initial Conditions:

i) the 'world' / standard atmosphere
We can assume a standard world where g will be constant, though RHO (and speed of sound) may have a different value OR be changing during flight (ie as a projectile is shot upwards into thinner/colder air):
g (gravity) : -32.15 ft/s^2
h (altitude) : 0 ft
T (Temperature) : 59deg F (where T = 59 - 0.00356 * h)
p (pressure) : 2118.145 lbs/sqft (where p = 2116 * (((T + 459.7) / 518.6) ^ 5.256))
RHO (density) : 0.0023769 slugs/cuft (where RHO = p / (1718 * (T + 459.7)))
Speed of Sound : 1119.28 ft/s (assuming 80% humidity)​

ii) projectile properties
We are assuming a spin-stabilised projectile, with a circular cross-section (I'm trying to use a real-world set of numbers, based up high-power target shooting projectiles) that is fired horizontally:
v (velocity) : 3000 ft/s
W (weight) : 180grains
r (radius of cross-section) 0.154 inches (ie, a .308" cal projectile)
BC (Ballistic coefficient) : 0.400 lbs/in^2 (G7 Drag Model - see excerpt)​

'G7' Drag Model excerpt (30 data points, instead of 80 - Drag Model assumes the Standard Atmosphere is present; so as I understand it, we don't even really need h, T, p and RHO; just a means to convert the current v (ft/s) into Mach; which is not difficult):

Mach CDrag
0.900 0.1464
0.925 0.1660
0.950 0.2054
0.975 0.2993
1.000 0.3803
1.025 0.4015
1.050 0.4043
1.075 0.4034
1.100 0.4014
1.150 0.3955
1.200 0.3884
1.300 0.3732
1.400 0.3580
1.500 0.3440
1.600 0.3315
1.700 0.3209
1.800 0.3117
1.900 0.3042
2.000 0.2980
2.100 0.2922
2.200 0.2864
2.300 0.2807
2.400 0.2752
2.500 0.2697
2.600 0.2643
2.700 0.2588
2.800 0.2533
2.900 0.2479
3.000 0.2424

Method:

Now, as above, the goal is to plot the movement of a project over time in 2D space. Plotting a trajectory with ONLY gravity is easy - plotting a trajectory with a CONSTANT retardation is easy (say 60% retardation per second, which is 'in the ballpark' for this sort of projectile) - BUT I have no idea about how to go about figuring out the retardation using the Ballistic coefficient and the Drag model (obviously the gravity component is not a problem, just 'deceleration' or 'retardation' of the projectile)...

In otherwords, what do I need to in order to calculate velocity change from time= 0.000 to time = 0.001... eg: t = 0.000, v = 3000.0 --> t = 0.001, v = 3000.0 - x1 --> t = 0.002, v = (3000.0 - x1) - x2; etc...


I hope that makes sense to someone out there :)


Cheers


Zaggy
 
Physics news on Phys.org


You need to implement some form of numerical integration. Below is an example of a predictor - corrector algorithm:

With the data you have, you can generate a function to calculate acceleration based on velocity and position:

Acceleration = F(velocity, position)

In the algorithm shown below, an, vn, and pn, are successive "guesses" that should converge quickly. a1, v1, and p1 are Euler (since a1 is really a(i-1)), but I left the expressions similar to the ones used for trapezoidal (this can be used to simplify the code). The remaining steps are trapezoidal (average acceleration = 1/2 (previous acceleration + new acceleration)) and should converge quickly in 4 to 8 steps.

F(...) calculates the acceleration based on v and p, and Δt is the elapsed time per step. You may want to do 6 to 8 interations instead of the 4 shown in this example. Even though each step of this algorithm will converge to a specific set of values, the algorithm is based on trapezoidal rule, a linear approximation, so you need to use small time steps (Δt).

You'll need to implement this algorithm for each axis.

initial condition:

time = 0
i = 0
v(0) = initial_velocity
p(0) = initial_position
a(0) = F(v(0), p(0))

then perform this loop until desired elasped time or impact

v0 = v(i)
p0 = p(i)

a1 = F(v0, p0)
v1 = v(i) + 1/2 (a(i) + a1) Δt
p1 = p(i) + 1/2 (v(i) + v1) Δt

a2 = F(v1, p1)
v2 = v(i) + 1/2 (a(i) + a2) Δt
p2 = p(i) + 1/2 (v(i) + v2) Δt

a3 = F(v2, p2)
v3 = v(i) + 1/2 (a(i) + a3) Δt
p3 = p(i) + 1/2 (v(i) + v3) Δt

a4 = F(v3, p3)
v4 = v(i) + 1/2 (a(i) + a4) Δt
p4 = p(i) + 1/2 (v(i) + v4) Δt

...

i += 1
time += Δt

v(i) = vn
p(i) = pn
a(i) = F(v(i), p(i))
 
Last edited:

Similar threads

  • · Replies 2 ·
Replies
2
Views
1K
  • · Replies 3 ·
Replies
3
Views
9K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 1 ·
Replies
1
Views
6K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 8 ·
Replies
8
Views
4K
Replies
1
Views
2K
  • · Replies 8 ·
Replies
8
Views
5K
  • · Replies 2 ·
Replies
2
Views
11K
  • · Replies 5 ·
Replies
5
Views
3K