The projectile motion formula starts with two position equations: x(t) = v₀ cos(θ)t and y(t) = h₀ + v₀ sin(θ)t − ½gt². Together, they describe a launch under constant downward gravity with no air resistance. Horizontal velocity stays constant; vertical velocity changes throughout the flight.
These equations are useful because the same time connects both directions. Once you know when the projectile reaches the ground, you can calculate its horizontal range. You can inspect those quantities in Projectile Motion Lab, then use the explanation below to understand the results.
Choose coordinates and state the model
Place the launch point at x = 0. Let the ground be y = 0, positive x point horizontally along the launch direction, and positive y point upward. The initial height is h₀; the angle θ is measured above the horizontal.
This model treats the projectile as a point object. Gravity has a constant positive magnitude g, while its vertical acceleration is −g. Air resistance, wind, spin and changes in gravity with height are excluded. Under these assumptions, the object's mass does not enter the trajectory equations.
Position, velocity and variables
The initial velocity splits into v₀x = v₀ cos(θ) and v₀y = v₀ sin(θ). There is no horizontal acceleration, so x(t) = v₀x t. Vertical acceleration is constant, giving y(t) = h₀ + v₀y t − ½gt².
v₀: initial speed, in meters per second [m/s].θ: launch angle above the horizontal. The Lab accepts degrees; use degree mode for the example calculations, or convert to radians before evaluating radian-based software functions.h₀: initial height above the ground [m].g: gravitational acceleration magnitude [m/s²]; this example uses 9.81.t: elapsed time after launch [s].x,y: horizontal position and height [m].
Velocity follows from how position changes with time: vₓ(t) = v₀ cos(θ) and vᵧ(t) = v₀ sin(θ) − gt. The speed is √(vₓ² + vᵧ²). At the apex, vᵧ is zero, but vₓ generally is not: the projectile does not stop moving horizontally.
For a visual explanation of components and direction, explore Vector Lab.
Flight time and range
Flight time T is the future time when the projectile reaches y = 0. Substituting into the height equation gives the landing root:
T = [v₀ sin(θ) + √((v₀ sin(θ))² + 2gh₀)] / g
Here, g must be positive and the Lab's starting height is nonnegative. For an upward launch from ground level, the other root is the starting instant rather than the later landing. The horizontal range is then R = v₀ cos(θ) T.
If the launch and landing are at the same height, with h₀ = 0, these simplify to T = 2v₀ sin(θ)/g and R = v₀² sin(2θ)/g. The compact range formula is not the correct shortcut for a launch from an elevated platform to the ground below.
Time to apex and maximum height
Setting vertical velocity to zero gives t_apex = v₀ sin(θ)/g. Substituting this time into the height equation gives y_max = h₀ + (v₀ sin(θ))²/(2g).
Maximum height is measured above the ground. The rise above the launch point is only (v₀ sin(θ))²/(2g). Keeping that distinction prevents a starting-height term from being counted twice.
Worked example: 20 m/s at 30°
Use an initial speed of 20 m/s, a launch angle of 30°, a starting height of 0 m and gravity of 9.81 m/s². Retain unrounded values during the calculation and round only the final results.
Resolve the launch velocity
v₀x = 20 cos(30°) ≈ 17.32 m/s and v₀y = 20 sin(30°) = 10.00 m/s.
Calculate the flight and apex
T = 2(10)/9.81 ≈ 2.039 s. Multiplying by horizontal velocity gives R ≈ 17.3205 × 2.0387 ≈ 35.31 m.
The apex occurs at 10/9.81 ≈ 1.019 s, at a height of 100/(2 × 9.81) ≈ 5.10 m. Its horizontal position is about 17.66 m. Half the flight time reaches the apex here because launch and landing heights are equal.
Inspect an instant during the flight
At t = 1.00 s, x ≈ 17.32 m and y = 10 − 4.905 = 5.095 m. The velocity components are vₓ ≈ 17.32 m/s and vᵧ = 10 − 9.81 = 0.19 m/s. The projectile is still rising slightly, just before the apex.
These numbers describe different things: height is a position, vertical velocity tells whether the object is rising or falling, and range is the horizontal displacement at landing.
What changing the angle reveals
At the same 20 m/s speed, a 60° ground launch has the same ideal range as a 30° launch because sin(120°) = sin(60°). It has a longer flight time and a higher apex. The equal-range result depends on the same gravity, equal launch/landing heights and no air resistance; it is not a general rule for real thrown objects.
The position equations also connect the flight to a parabolic curve. You can compare mathematical curve shapes in Function 2D Lab, while Projectile Motion Lab supplies the physical time, velocity and landing results.
Common mistakes
- Using the initial speed as the horizontal speed. Range uses
v₀ cos(θ), not v₀ alone. - Mixing degrees and radians. A software call such as
sin(30)usually does not mean sin(30°). - Using the equal-height range shortcut when h₀ is nonzero.
- Calling the apex a zero-speed point. Only vertical velocity is zero unless the launch is purely vertical.
- Adding mass to an ideal trajectory formula. Real drag can introduce mass-dependent behavior, but that behavior is outside this Lab's model.
Verify the example interactively
Open Projectile Motion Lab and enter 20 m/s, 30°, height 0 m and g = 9.81 m/s². Enable velocity components, inspect the apex, and pause or scrub near t = 1 s. Compare the displayed values with the worked example, then change the angle to 60° and compare flight time, height and range.
These links open the landing page; the Open Lab action takes you into the workspace. The example parameters must be entered manually. Browser simulation results verify the stated ideal model, not the effects of air resistance on a real launch.
For textbook context, see OpenStax: Projectile Motion.
Try it in the Lab
Enter 20 m/s, 30°, a starting height of 0 m and gravity of 9.81 m/s². Compare your calculated flight time, range and velocity components with the Lab. Settings do not load automatically.
Open Projectile Motion Simulator



