I ran into this problem on Quora recently, and decided I would post an expanded version of the answer I gave there, here.
It is a common misconception that the vertical drag force only depends on the vertical velocity: but in the case of quadratic drag, this is not so. A simple diagram explains this:
I sketch here two objects, with same vertical velocity but different horizontal velocities - such that their total velocity is $v$ and $2v$ respectively. The drag force in both cases points along the direction of the velocity vector, but in one case it is 4x larger than in the other case. As a result, the vertical component of the drag force is different - even though the vertical velocity is the same!
The implication here is that when you fire a gun horizontally, the bullet will experience a significant increase in vertical drag force. You can compute the effect using a numerical integration - which I will show below.
The second effect to be considered is the rotation of the Earth. If you are standing on the equator, you appear to weigh less because part of the force of gravity is needed to keep you rotating with the earth; while you think you are standing still, you are actually moving at about 462 m/s to the East. If you shoot your gun Eastward, the bullet is traveling even faster - and it will appear "lighter". Shoot it to the West, and it will seem a little heavier. The effect is small. The acceleration due to the motion of the Earth is $\frac{v^2}{R_E}$, or about 0.033 m/s$^2$ which is about 1/300th of the acceleration due to gravity. If you shoot the bullet Eastward at 340 m/s, the speed of the bullet is added to the speed of rotation of the Earth - and that quadratic term starts to be noticed. In fact, the apparent acceleration towards the Earth $g$ will be 0.068 m/s$^2$ less than for the bullet that is dropped straight down: the flying bullet will appear "lighter". Since the time to fall scales with $\sqrt{\frac{2h}{g}}$, a change of 2 parts in 300 in gravity results in the bullet falling more slowly by about 1 part in 300. For a 1 meter drop, the time is roughly 0.44 seconds, and so the bullet shot East will drop more slowly by about 1.5 ms.
But that effect is much smaller than the effect of drag. For this example, I used the following parameters for the bullet (these are fairly realistic values for a larger pistol: rifles may have higher muzzle velocity, in which case the effect will be even bigger. These are adapted from http://gundata.org/blog/post/9mm-ballistics-chart/ ):
caliber: 9.0 mm
drag coeff: 0.149
mass: 7.5 g
velocity: 341 m/s
I wrote a little Python script that calculates the trajectory, taking into account the initial velocity and direction, drag, and the direction of the shot relative to the rotation of the earth. The result is the following plot:
There are five curves here. The ones marked "East" and "West" correspond to the effect of the rotation of the Earth, absent any drag. You can see the two bullets land almost at the same time; because there is no drag, the time taken is almost exactly the same as that for the one marked "Drop". The trajectory marked "Drag" shows how much longer it takes for the bullet to drop when it has horizontal velocity: this is the effect of quadratic drag, and results in the fired bullet taking significantly longer to drop. Zooming in on the interesting area makes it possible to see how small these effects are:
The difference between the bullet that is shot, and the one that is dropped, is 30 ms (bullet falls more slowly) without accounting for rotation of the Earth. Taking rotation into account, the different will get a little smaller or larger, depending on the location on Earth and the direction of the shot - with the biggest effect happening if you shoot East at the equator; that would add another 2 ms to the time taken to fall.
Finally, I computed the angle at which you would need to fire a bullet so it lands at the same time as the one dropped: this turns out to happen at an angle of about 0.05°. This corresponds to aiming the gun at a point that is 9 mm below the target at a distance of 10 m.$(^1)$
Doing this experiment with sufficient care to measure the effect is difficult, and obviously the above calculation made certain assumptions about the speed of the bullet, the mass, the drag coefficient etc. The fact that the Mythbusters measured 39.6 ms when the above calculation gave a value of 30 ms is very encouraging: I think that shows the drag effect is real.
(Incidentally, in my simulation the bullet would land at a distance of 125 m; the MB "drop zone" was at 110 m, but I don't know whether they were working with the same drop height: again, it's "really very close" though).
Source code of the simulation:
# example of numerical integration of projectile motion in 2D
# used to compute the difference in flying time for a bullet that is either
# shot or dropped
from math import sin, cos, atan2, pi, sqrt
import matplotlib.pyplot as plt
# function to compute drag:
def drag(v, theta):
F =0.5*rho*v*v*A*Cd
return (F*cos(theta), F*sin(theta))
# a function that does simple integration of the equation of motion:
def integrate(v, theta, m, x, y, g = 9.81, dt=0.01):
vx = v * cos(theta)
vy = v * sin(theta)
t = 0.
# storage for the result
X = [x]
Y = [y]
T = [0.]
VX = [vx]
VY = [vy]
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:
X.append(x)
Y.append(y)
VX.append(vx)
VY.append(vy)
t = t + dt
T.append(t)
# 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
T[-1]=t
return (X,Y,T,VX,VY)
# *********
# run actual simulation
# fixed properties:
m = 0.0075 # mass
rho=1.22 # air density
g = 9.81 # gravitational acceleration
d = 0.009 # diameter of bullet
A = pi * d * d # cross sectional area
Cd = 0.149
# initial velocity & angle
v = 1120*0.3048 # 1120 fps
theta = 0.
# initial position, velocity, time
x = 0.
y = 1. # height above target surface
# velocity of surface of earth at equator:
Re = 4.0e7/(2*pi)
Ve = 4.0e7/(24.*3600.)
# acceleration due to shooting East, West:
a_east = -(Ve+v)*(Ve+v)/Re
a_west = -(Ve-v)*(Ve-v)/Re
a_still = -Ve*Ve/Re
Cd = 0.149
X,Y,T,VX,VY = integrate(0, theta, m, x, y, g+a_still)
plt.figure()
plt.plot(T,Y)
print("T drop = %.1f ms"%(1000*T[-1]))
# look at the effect of shooting East, West without drag:
Cd=0.
X,Y,T,VX,VY = integrate(v, theta, m, x, y, g+a_east)
plt.plot(T,Y)
print("T east = %.1f ms"%(1000*T[-1]))
X,Y,T,VX,VY = integrate(v, theta, m, x, y, g+a_west)
plt.plot(T,Y)
print("T West = %.1f ms"%(1000*T[-1]))
Cd = 0.149
X,Y,T,VX,VY = integrate(v, theta, m, x, y, g+a_east)
plt.plot(T,Y)
print("T drag = %.1f ms"%(1000*T[-1]))
for theta in [-0.0009]:
X,Y,T,VX,VY = integrate(v, theta, m, x, y, g)
plt.plot(T,Y)
vx = VX[0]
vy = VY[0]
print("initial drag is %.2f N"%drag(sqrt(vx*vx+vy*vy),theta)[0])
print('Total flight time: %.3f sec\n'%T[-1])
print('Total distance: %.2f m'%X[-1])
print('Final horizontal velocity: %.2f m/s'%VX[-1])
print('Final vertical velocity: %.2f m/s'%VY[-1])
print('Final vertical drag: %.3f N'%drag(v, theta)[1])
print('Angle on impact: %.2f deg'%(180.*atan2(VY[-1],VX[-1])/pi))
plt.title('projectile motion')
plt.xlabel('Time (s)')
plt.ylabel('Height (m)')
plt.legend(('Drop', 'East','West','drag','aim down'))
plt.show()
(1)It is certainly possible to aim better than that - but it's not easy. For comparison, that's approximately the size of the "9" target area for the 10 m air rifle competition at the Olympics... to score a "10" you need to hit the dot in the middle, which means, with a 4.5 mm calibre, that you have a ± 4.5 mm tolerance. So it takes really top marksmanship, or a tripod, to aim the gun so accurately that this effect can be measured.