Let's say I throw an object horizontally off a cliff with a fixed height, and I know the time it takes to fall. I wanted to know how far it travels, but it has an acceleration opposite the direction of initial velocity due to air resistance. Therefore, I integrated velocity with respect to time; in this case, velocity as a function of time was equal to v0 - at. Okay, what's acceleration (in this case)? I looked into air resistance, and it turns out it's dependent on area, some coefficient, air density, and... instantaneous velocity... As a high school student who's only done basic calculus, this confuses me. Do I have to learn, like, second-order differential equations before I can solve this, or am I missing something basic? Any help would be greatly appreciated, and sorry for asking something basic like this :(.

  • $\begingroup$ Good introduction to drag can be found here $\endgroup$
    – Floris
    Commented Jun 1, 2017 at 11:42
  • $\begingroup$ See also this question $\endgroup$
    – Floris
    Commented Jun 1, 2017 at 22:25

3 Answers 3


It's not a dumb question - and actually it is impossible to answer it analytically (for the case of quadratic drag with horizontal velocity and vertical acceleration).

Here are some basic things to help you think about this:

  • The drag force points the opposite direction of the velocity
  • because the drag force is proportional to the velocity squared, the horizontal velocity increases the vertical drag(!)
  • The equation may be daunting, until you realize that it's basically saying "the drag force is the force needed to move all the air my projectile cuts through"

The equation is

$$F = \frac12 \rho v^2 A C_D$$

If you have a (front facing) area of $A$, then every second you move through a column of air of volume $V = Av$ where $v$ is the velocity. The mass of this column is $m = \rho V = \rho A v$. If you move all that air at the speed of your projectile, it gets a momentum of $p = mv = \rho A v^2$. This starts to look a lot like your drag equation. We just need the factor $\frac12 C_D$ to account for the way that air really moves (it's not simply "moving the entire column of air at the speed of the projectile) and there you are.

To compute the trajectory you will need to use numerical integration. You calculate the initial drag from the initial velocity. This allows you to compute the instantaneous acceleration (don't forget gravity); let this acceleration act for a very short time, and compute the new (horizontal and vertical components of) velocity. From velocity calculate displacement. Repeat for the next time step.


I decided to write a simple Python script that demonstrates the approach. When you run this with A=0 (effectively no drag) you can compare the result with the analytical solution - this shows the integration works correctly. When you add "realistic" drag, you can then compute the trajectory for any other configuration. As usual, my code comes without warranty ("not necessarily an example of good coding, not fully tested, no error checking, etc..."). Enjoy.

# example of numerical integration of projectile motion in 2D
import matplotlib.pyplot as plt
from math import sin, cos, atan2, pi, sqrt

# constants
rho = 1.22 # density of medium
g = 9.81   # acceleration of gravity

# projectile properties
A = 0.05  # cross sectional area
Cd = 0.5  # drag factor
m = 0.1   # mass

# initial velocity & angle (radians)
v = 10.      # m/s
theta = pi/4

# initial position, velocity, time
x = 0.
y = 5.    # height above target surface
vx = v * cos(theta)
vy = v * sin(theta)
vx_init = vx
t = 0.

# storage for the result
X = [x]
Y = [y]

# step size
dt = 0.01

def drag(v, theta):
    F =0.5*rho*v*v*A*Cd
    return (F*cos(theta), F*sin(theta))

while ((y>0) | (vy>0)):
    # instantaneous force:
    Fx, Fy = drag(v, theta)
    # acceleration:
    ax = -Fx/m
    ay = -Fy/m - g
    # position update:
    x = x + vx*dt + 0.5*ax*dt*dt
    y = y + vy*dt + 0.5*ay*dt*dt
    # update velocity components:
    vx = vx + ax*dt
    vy = vy + ay*dt
    # new angle and velocity:
    v = sqrt(vx*vx+vy*vy)
    theta = atan2(vy,vx)
    # store result for plotting:
    t = t + dt

# adjust last point to Y=0 - we may have "overshot":
ft = Y[-2]/(Y[-2]-Y[-1]) # fractional time to last point
X[-1] = X[-2] + (X[-1]-X[-2])*ft
Y[-1] = 0.
t = t - (1-ft)*dt

print('Total flight time: %.3f sec\n'%t)
print('Total distance: %.2f m'%X[-1])
print('Initial horizontal velocity: %.2f m/s'%vx_init)
print('Final horizontal velocity: %.2f m/s'%vx)
plt.title('projectile motion')
plt.xlabel('X position')
plt.ylabel('Y position')

And an example of the output of the above:

enter image description here


I have deleted my original answer as a result of a comment from @Floris in that for drag which depends on the square of the speed the vertical and horizontal motions are not independent of one another.

According to this paper the equations of motions which need to be solved in this case are:

$a_{\rm x}=-kv_{\rm x}v$ and $a_{\rm y}=g-kv_{\rm y}v$ where $v^2= v_{\rm x}^2+ v_{\rm y}^2$ which can only be done numerically.

  • $\begingroup$ Im pretty sure you can't separate the equation! As soon as vertical velocity sneaks in this changes the horizontal component of drag because of the square term... (in other words the horizontal drag depends on the vertical velocity). $\endgroup$
    – Floris
    Commented Jun 1, 2017 at 11:26
  • $\begingroup$ @Floris So is this an example of the horizontal and vertical motions not being independent of one another? Is this only true for the quadratic drag or is it true for all types of drag? I have found a paper which very much agrees with you. mistersyracuse.com/uploads/3/0/8/0/3080275/… $\endgroup$
    – Farcher
    Commented Jun 1, 2017 at 11:33
  • $\begingroup$ it is true for nonlinear drag. In practice that means "quadratic", which holds true for most macroscopic motion. $\endgroup$
    – Floris
    Commented Jun 1, 2017 at 11:41
  • $\begingroup$ @Floris Thank you for your comment and as a result I have deleted my original answer. $\endgroup$
    – Farcher
    Commented Jun 1, 2017 at 11:57
  • $\begingroup$ This is much more accurate now. $\endgroup$
    – Floris
    Commented Jun 1, 2017 at 12:34

In presence of drag, Newton's equations include a term proportional to v. $dv/dt = g/m - kv$ whose solutions are general solution of the homogeneous equation ( with g=0) plus a particular solution (obtained by going to infinite time, when dv/dt= 0). Let's do it. General solution to $dv/dt = -kv$ is $v/v_\infty= e^{-kt}$.

Particular solution: $dv/dt = 0$ or $v_{part} = gm/k$ Now $v=gm/ke^{-kt} + gm/k$. Check: $dv/dt = gm/k(-ke^{-kt}) = -gme^{-kt}= -kv+ gm$ as expected. What is the velocity at t=0? $v_0 = gm/k + gm/k= 2gm/k$

  • $\begingroup$ You are showing the solution for 1D motion with linear drag (true only at very low Reynolds number). The question alludes to the need for 2D treatment (horizontal component of velocity). $\endgroup$
    – Floris
    Commented Jun 1, 2017 at 11:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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