A projectile motion simulator you can aim by hand: drag on the canvas to set the launch angle and speed, then let go and watch the parabola play out. Read off the range, the height of the apex and the total flight time as you tune gravity and angle — then switch on air resistance and watch the clean arc bend into a shorter, lopsided path. It all runs on your device.
In a vacuum, 45° flies the farthest — and complementary angles tie. Launch a shot at 45° and, with no air resistance, it covers more ground than any other angle. Even more surprising: any two angles that add up to 90° land in exactly the same spot. A flat, fast 30° shot and a high, lazy 60° shot travel the identical distance — one just spends much longer in the air. Turn on air resistance and both effects shift: the best angle drops below 45°, and the tidy symmetry breaks.
How It Works
Two independent motions, one parabola — and a numerical solver for when the air pushes back.
1
Horizontal and vertical, kept separate
The launch velocity splits into a horizontal part, v₀·cosθ, and a vertical part, v₀·sinθ. Horizontally the projectile drifts at a constant speed, so x = v₀·cosθ·t. Vertically gravity pulls it down the whole time, so y = v₀·sinθ·t − ½g·t². The two axes never talk to each other — that independence is the heart of projectile motion.
2
Why the path is a parabola
Eliminate time between those two equations and y becomes a downward parabola in x. The apex sits where the vertical velocity hits zero, at height (v₀·sinθ)²/(2g); the projectile lands after a flight time of 2·v₀·sinθ/g, giving a range of v₀²·sin(2θ)/g. Because sin(2θ) peaks at θ = 45°, that angle throws the farthest — and sin(2θ) is unchanged when you swap θ for 90°−θ, which is why complementary angles match.
3
Adding air resistance
With drag switched on there is no neat formula. The acceleration becomes gravity minus a force that grows with the square of the speed and points opposite the velocity, a = g − k·|v|·v. The simulator steps this equation forward in small time increments, so the drawn path is the actual integrated flight and the readouts come straight from where the projectile really rises and lands.
What is projectile motion?
Projectile motion is the motion of an object launched into the air and moving under gravity alone. Its horizontal velocity stays constant while gravity pulls it downward, so the path traces a parabola. The launch speed and angle set how far and how high it goes, and the combination of steady horizontal drift and accelerating vertical fall produces the familiar curved arc.
What launch angle gives the maximum range?
In a vacuum, ignoring air resistance and launching from the same height it lands, a projectile travels farthest at a launch angle of 45°. Angles that add up to 90° — such as 30° and 60° — give the same range, one on a flat, fast arc and the other high and steep. With air resistance the best angle drops somewhat below 45°.
Does mass affect projectile motion?
No — mass does not affect projectile motion in a vacuum. All masses follow exactly the same path for a given launch speed and angle, because gravity gives every object the same acceleration regardless of its mass. A cannonball and a pebble launched identically trace identical arcs. Mass only starts to matter once air resistance is involved, since drag affects light objects more than heavy ones.
How does air resistance change projectile motion?
Air resistance pushes back against the direction of travel, so it shortens the range, lowers the optimal launch angle below 45°, and makes the trajectory asymmetric: the projectile rises on a wider curve and falls on a steeper, shorter one instead of a clean symmetric parabola. The drag modelled here is quadratic — the acceleration becomes a = g − k·|v|·v — so the retarding force grows with the square of the speed and bleeds off the most speed just after launch. With drag switched on there is no neat formula, so the flight is integrated numerically in small time steps rather than read from the analytic parabola.
Teaching or blogging about physics? You can embed this on your own site free — one line of code, no sign-up.