Website with interactive projectile-motion experiments for the British Physics Computational Challenge. This project was awarded a Gold Award.
The app lets users explore a range of projectile-motion models by adjusting physical parameters such as launch speed, launch angle, start height, and gravity. It includes both closed-form and numerical modelling, along with extensions for drag, Earth curvature, altitude-dependent effects, bouncing trajectories, and related quantities such as range, arc length, and bounding parabolas.
- Interactive Flask-based web interface
- User-controlled projectile parameters, e.g.:
- initial velocity
- launch angle
- launch height
- gravity
- Multiple trajectory models, including:
- standard projectile motion
- numerical simulation
- minimum launch speed / low-ball / high-ball trajectories
- bounding parabola
- maximum range trajectory
- arc length calculations
- bouncing projectile motion
- projectile motion with air drag
- Plot generation and visualisation of trajectories
- Video output for bouncing motion
- MATLAB-based numerical and analytical modelling integrated into the web app
Computes projectile motion step-by-step using a numerical update scheme.
Generates the closed-form projectile trajectory using standard equations of motion.
Includes:
- minimum launch speed
- low-ball and high-ball solutions
- maximum range angle
- bounding parabola
- arc length calculations
Computes and visualises radial distance properties over time.
Simulates repeated bounces using a coefficient of restitution and produces a video of the motion.
Simulates motion with air resistance using vector dynamics and numerical time-stepping. Also includes consideration of Earth curvature.
- Flask
- Python
- MATLAB
- MATLAB Engine for Python
- NumPy
- HTML/CSS for the website front end
- Matplotlib-style plotting / figure generation
- OpenCV not required; video output is handled through MATLAB tooling
This project requires:
- Python
- MATLAB installed locally
- MATLAB Engine for Python configured
- Flask
- NumPy
pip install flask numpyMake sure MATLAB Engine for Python is installed and available in your environment.
python app.pyThen open the local Flask server in your browser.
- The project combines analytical mechanics with numerical computation.
- It was designed to make projectile-motion theory interactive and visual.
- The codebase includes both modelling logic and web-app integration.
Gold Award – British Physics Computational Challenge