https://github.com/rorypoulter/a-level-project
3D projectile simulator written in Python.
https://github.com/rorypoulter/a-level-project
python sqlite
Last synced: about 1 month ago
JSON representation
3D projectile simulator written in Python.
- Host: GitHub
- URL: https://github.com/rorypoulter/a-level-project
- Owner: RoryPoulter
- License: gpl-3.0
- Created: 2023-09-17T21:33:36.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-05T22:27:13.000Z (over 2 years ago)
- Last Synced: 2025-09-07T07:41:43.532Z (10 months ago)
- Topics: python, sqlite
- Language: Python
- Homepage:
- Size: 3.54 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# A-Level-Project
[]()
[](https://opensource.org/licenses/)
[]()
Python program to simulate projectile motion in 3 dimensions.\
Developed for my Computer Science A-Level project.
## Installation
### Automatic Installation
Run the file `.build/setup.cmd`
### Manual Installation
Use the package manager [pip](https://pip.pypa.io/en/stable/) to install the required packages.
```bash
pip install -r /path/to/requiremnets.txt
```
Once the libraries have been installed, run the file `src/main.py`
## Usage
### Settings
* Resolution: 1920x1080\
* Text scaling: 100%
### Simulation
The values can be input into text boxes.
To toggle if drag is included, tick the 'Drag' radiobutton. If you want to show both flight
paths, tick the "Compare" radiobutton. Due to the nature of the drag calculations, results including drag are
only approximations.
### GUI
The program uses tkinter for the main GUI, and matplotlib to display the results.
The appearance of the GUI can be changed by toggling colourblind mode and changing the theme.
The themes are stored in an external JSON file.

### Presets
The program allows users to save presets to an external .db file. The GUI features a window
to manage the presets.

#### Saving presets
* Enter the values into the text boxes on the main window
* Press the save icon
* Press the 'Save Preset' button
* Enter the preset name (must be unique and under 20 characters)
* Press 'Save'
* A pop-up will be displayed if successful
#### Previewing presets
* Press the save icon
* Press the 'View Presets' button
* Select the preset from the dropdown
* Press the 'Preview' button
#### Loading presets
* Press the save icon
* Press the 'View Presets' button
* Select the preset from the dropdown
* Press the 'Load' button
* The values will be automatically copied into the text boxes
#### Deleting presets
* Press the save icon
* Press the 'View Presets' button
* Select the preset from the dropdown
* Press the 'Delete' button
* A pop-up will be displayed if successful
## Roadmap
Written in [Python 3.10](https://www.python.org/downloads/).\
#### Updates currently in development:
* Code overhaul to make future development easier
#### Future updates:
* Results for comparing projectiles
* Theme editor to create and save custom themes
* Full error diagnosis for input validation
* Button to reset graph