Model
For ideal projectile motion without air resistance, horizontal velocity is constant and vertical motion has constant acceleration.
x(t) = v0 cos(theta) t
y(t) = v0 sin(theta) t - 1/2 g t^2
y(t) = v0 sin(theta) t - 1/2 g t^2
The public result can show the trajectory and range. A private student version can include derivations, parameter studies, homework variants and notebook files.
Python preview
import numpy as np
import matplotlib.pyplot as plt
g = 9.81
v0 = 20
theta = np.deg2rad(35)
t = np.linspace(0, 2 * v0 * np.sin(theta) / g, 200)
x = v0 * np.cos(theta) * t
y = v0 * np.sin(theta) * t - 0.5 * g * t**2
plt.plot(x, y)
plt.xlabel("x / m")
plt.ylabel("y / m")
plt.grid(True)
plt.show()Common mistakes
- Mixing degrees and radians in Python.
- Using the same equation for horizontal and vertical acceleration.
- Forgetting that the final time depends on the vertical motion.
Private extension
Approved students can receive the full derivation, practice tasks, extended notebooks, air-resistance variants and solution walkthroughs.