physics cannonball projectile

Maximizing Horizontal Range of a Projectile


A recent homework problem that appeared in the forums was concerned with maximizing the horizontal range of a projectile subject to the launch site being a fixed height above the ground upon which the projectile eventually impacted. A number of interesting methods of solution arose so the idea of this article is to present all of these since each method illustrates a different approach to the problem and each is instructive in its own right.

The Problem

A cannon sits on top of a plane at a height ##h## above the ground and fires a shell with an initial velocity ##v_0##. At what angle ##\theta_0## must it fire the shell to attain maximum range ##R_{\text{max}}## along the ground?

I hope the OP (original poster) of the above problem will not mind me including his problem diagram:

A cannon sits atop on a plane at a height

Parametric Equations

The above motion may be represented by the following pair of parametric equations: $$x=R=v_0\cos(\theta)t$$and $$y=v_0\sin(\theta)t-½gt^2.$$Substituting for t in the second equation and setting y=-h, we obtain: $$-h=R\tan(\theta)-\frac{gR^2\sec^2(\theta)}{2{v_0}^2}$$

Method 1: Implicit Differentiation

From PF user @Perok:

Set ##u = \tan \theta## and re-write the equation as:

$$\frac{gR^2}{2v^2}(1 + u^2) – Ru = h$$ Then implicitly differentiate wrt ##u##, setting ##\frac{dR}{du} = 0##, giving: $$R = \frac{v^2}{gu}$$ Then you plug that into the first equation:
$$h = \frac{gR^2}{2v^2}(1 + u^2) – Ru = \frac{v^2}{2gu^2}(1 + u^2) – \frac{v^2}{g} = \frac{v^2}{2g}(\frac{1}{u^2} – 1)$$ to give: $$u^2 = \frac{1}{1 + 2gh/v^2} \ \ \text{and} \ \ \frac 1 u = \sqrt{1 + \frac{2gh}{v^2}}$$ Then you get ##R## directly from:
$$R = \frac{v^2}{gu} = \frac{v^2}{g} \sqrt{1 + \frac{2gh}{v^2}} = \frac{v}{g} \sqrt{v^2 + 2gh}$$
And, of course: $$\tan \theta = \frac{v}{\sqrt{v^2 + 2gh}}$$
Note that you can also put ##R = \frac{v^2}{g\tan \theta}## into the first equation and get an equation for ##\sin \theta##, as the trig functions cancel out.

Method 2: “Imaginary Slope” Method

In this method, we draw a line from where the projectile is fired to its point of impact on the level ground which is a fixed vertical distance h lower than the firing point. Then we treat the problem using equations applicable to projectiles being fired up or (in this case) down a slope. The mathematical  ‘hard yards’ for this approach are presented for us in this section of a website on ‘Kinematics Fundamentals’.

We focus on the derived equation for range down a slope noting that maximizing this range (R’) will also maximize the horizontal distance (R) travelled if the vertical distance is held fixed:

$$R’=\frac{{v_0}^2}{g\cos^2\alpha}\left(\sin(2\theta+\alpha)+\sin\alpha\right),$$ where ##\alpha## is the angle of our “imaginary” slope with ##\sin\alpha=\frac{h}{R’},## and ##R’=h^2+R^2##. We can see that this expression will be maximized when $$2\theta+\alpha=\frac{\pi}{2}\implies\theta_{max}=\frac{\pi}{4}-\frac{\alpha}{2}.$$Under this circumstance we obtain $$R’_{max}=\frac{{v_0}^2}{g\cos^2\alpha}\left(1+\sin\alpha\right)=\frac{{v_0}^2}{g(1-\sin\alpha)},$$ and substituting ##R’_{max}=h/\sin\alpha##, we solve the equation: $$\frac{h}{\sin\alpha}=\frac{{v_0}^2}{g(1-\sin\alpha)}$$obtaining:$$\sin\alpha=\frac{hg}{{v_0}^2+hg}.$$ Finally we obtain the projection angle for maximum range: $$\theta_{max}=\frac{\pi}{4}-\frac{\alpha}{2}.$$ All that remains to be done is to show that this result is the same as the previous obtained by implicit differentiation. $$\tan\theta_{max}=\tan\left(\frac{\pi}{4}-\frac{\alpha}{2}\right)=\frac{1-\sin\alpha}{\cos\alpha}=\sqrt{\frac{1-\sin\alpha}{1+\sin\alpha}}.$$Substituting ##\sin\alpha=\frac{hg}{hg+{v_0}^2}##, we obtain the matching result: $$\tan\theta_{max}=\frac{v_0}{\sqrt{{v_0}^2+2gh}}$$ We should also verify our result for the maximum horizontal range: $$R_{max}=R’_{max} \cos\alpha = h \cot\alpha = \frac{hv_0\sqrt{{v_0}^2+2gh}}{hg}=\frac{v_0\sqrt{{v_0}^2+2gh}}{g}.$$

Method 3: Using Vectors

The ‘hard yards’ for this deceptively simple method but very elegant method are covered in a PF Insights article entitled “How to Master Projectile Motion without Quadratics” by PF user @kuruman. I say ‘deceptively simple’ because the approach requires something of a ‘mindset’ change to that which one is used to in conventional projectile kinematics. This author (at least) found that took some getting used to. But once one has understood the theory,  the horizontal range maximization problem becomes an almost trivial ‘corollary’!

We begin with a slightly modified version of @kuruman’s vector diagram.

diagram represents the vector relationship

The diagram represents the vector relationship ##\vec v_{\!f}=\vec v_0+\vec g~t_{\!f}.## Angle ##\theta## is the angle of projection and angle ##\theta_c## is complementary to ##\theta## since triangle ADB is a right triangle. At point D the projectile has zero vertical velocity meaning it has reached its highest point. The significance of the right angle marked at vertex A will be explained a little later.

Horizontal projectile range R is related to the vector cross product of initial and final velocities: $$\vec v_0 \times \vec v_{\!f}=\vec v_0 \times (\vec v_0+\vec g~t_{\!f})=\vec v_0 \times\vec g~t_{\!f}$$ $$\vec v_0 \times\vec g~t_{\!f} =v_{0 \perp}~g~ t_{\!f}=(v_{0 x}~ t_{\!f})g= Rg. $$Hence $$R=\frac{|\vec v_0 \times \vec v_{\!f}|}{g}.$$ Plainly this vector cross product will be maximised when the angle between ##\vec v_0## and ##\vec v_f## is a right angle. This is the situation depicted in the diagram above showing a right angle at vertex A. From the geometry it should be apparent why we have marked vertex C of the velocity triangle with angle ##\theta##. Then:

$$R_{max}=\frac{|\vec v_0||\vec v_f|}{g}$$ and $$\tan\theta_{max}=\frac{|\vec v_0|}{|\vec v_f|}.$$ Clearly ##|\vec v_0|=v_0## and – for a projectile that has fallen a fixed vertical distance h below its launch point (as is the case in this problem) – ##|v_f|=\sqrt{v_0^2+2gh}##. Substituting these values in the above equations, we again arrive at the exact same solution set as obtained by the other two methods above.

We should add a brief explanatory note that since ##{v_0}^2={v_{0x}}^2+{v_{0y}}^2## it follows that ##{v_f}^2={v_x}^2+{v_y}^2+2gh={v_0}^2+2gh##.

Summary and Conclusion

In this article, we have examined the problem of (horizontal) range maximization for a projectile launched at a fixed vertical distance h above the ground where it eventually impacts. Three different techniques have been described each with its own unique set of mathematical operations but still leading to the same solution set for maximum horizontal range R and corresponding launch angle ##\theta##.

The first method employed makes use of a carefully selected trigonometric substitution which considerably simplifies the solution by a Calculus-based method. The second solution “pencils in” an imaginary slope and then makes use of the kinematics of projectiles on an inclined plane. Finally, method 3 is remarkable in that it demonstrates the ‘evergreen’ character of Euclidean geometry. Similar triangles in conjunction with vector cross products produce a solution that neatly illustrates a key physical aspect of the maximization problem namely that range maximization occurs when the initial and final velocities are at right angles to each other.


Thanks to PF user @brotherbobby who posted the range maximization problem in the first instance.

This article has effectively been co-authored by PF mentors @Perok  and  @kuruman who contributed solution methods 1 and 3 respectively.

Further thanks to PF users @vanhees71, @dextercioby, and  @jedishrfu who all took time to review and/or comment on the article when initially placed in the insights development forum. And of course to @Greg who attended to the small detail of actually publishing it!

The online Geogebra utility was used to create the vector diagram graphic in this article.


[1]PF User kuruman.
How to master projectile motion without quadratics.
(Accessed on 03/22/2021).
bib ]
Geogebra | free math apps – used by over 100 million students &
teachers worldwide.
(Accessed on 03/22/2021).
bib ]
[3]Sunil Kumar Singh.
Projectile motion on an incline – kinematics fundamentals – Openstax
(Accessed on 03/22/2021).
bib ]
[4]PF User brotherbobby & respondents.
Maximum range on the ground for an elevated cannon | physics forums.
(Accessed on 03/22/2021).
bib ]

Comment Thread


7 replies
  1. neilparker62 says:
    WA is fine with 2D vector cross products. eg (ai + bj) x (ci + dj) would be entered as {a,b} cross {c,d}. The output is negative because i x -j is negative. On entry you need to make sure the ##v_f## vector is pointing downwards because the projectile is landing on the roof. It has passed (or should have passed) the maximum point of the trajectory. The reason WA chokes is not because it is wrong nor that your vector equation is wrong but because 15m is on the wrong side of the axis of symmetry – the projectile is still heading upward at that point. See following parametric graph of the projectile motion:

  2. kuruman says:
    Don’t go conventional – just trust your own method! WA choked and it wasn’t because your method or WA is at fault! The ‘code’ I put in was quite simple – it asked WA to solve the vector equation directly. What you have above is the solution provided on the kinematics webpage here and your vector technique shows it up as wrong!

    I don’t see why the WA ‘code’ is a vector equation. I can see the two-dimensional vector on the left side but the right-hand side looks like a scalar and why is it negative? Also, I don’t know about WA, but Mathematica does not accept 2-d vector cross products. For 2-d vectors, a third component must be set to zero.

    I think the proper way to use the equation directly in WA is to ask it to solve the equation $$\sqrt{\left[v_0(\cos\theta, \sin\theta,0) \times (v_0\cos\theta,-\sqrt{v_{0}^2\sin^2\theta-2g\Delta h},0)\right]\cdot \left[v_0(\cos\theta, \sin\theta,0) \times (v_0\cos\theta,-\sqrt{v_{0}^2\sin^2\theta-2g\Delta h},0)\right]} =gR.$$The LHS is the square root of the dot product of the cross product with itself, i.e. the magnitude. It is set equal to ##gR##, a positive quantity.

    I tried this with Mathematica. The numerical NSolve befuddled it. However, I got the expected result with cautionary messages when I used FindRoot and gave it an approximate value for ##\Delta h##.

  3. neilparker62 says:
    Don’t go conventional – just trust your own method! WA choked and it wasn’t because your method or WA is at fault! The ‘code’ I put in was quite simple – it asked WA to solve the vector equation directly. What you have above is the solution provided on the kinematics webpage here and your vector technique shows it up as wrong!
  4. kuruman says:
    I am a Mathematica person myself so I put the two kinematic equations in x and y and asked it to solve for the time of flight tf and the height h. It worked fine (see below). I don’t understand WA code well enough to ascertain what you are doing with it.

    View attachment 280975

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply