{"id":23428578,"url":"https://github.com/rorypoulter/a-level-project","last_synced_at":"2026-05-17T02:42:08.259Z","repository":{"id":195426735,"uuid":"692882028","full_name":"RoryPoulter/A-Level-Project","owner":"RoryPoulter","description":"3D projectile simulator written in Python.","archived":false,"fork":false,"pushed_at":"2024-03-05T22:27:13.000Z","size":3716,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-07T07:41:43.532Z","etag":null,"topics":["python","sqlite"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RoryPoulter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-09-17T21:33:36.000Z","updated_at":"2024-11-26T15:59:58.000Z","dependencies_parsed_at":"2023-11-15T10:41:22.818Z","dependency_job_id":"7c957e2b-2950-4810-9c02-fa801d415135","html_url":"https://github.com/RoryPoulter/A-Level-Project","commit_stats":null,"previous_names":["rorypoulter/a-level-project"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/RoryPoulter/A-Level-Project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoryPoulter%2FA-Level-Project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoryPoulter%2FA-Level-Project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoryPoulter%2FA-Level-Project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoryPoulter%2FA-Level-Project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RoryPoulter","download_url":"https://codeload.github.com/RoryPoulter/A-Level-Project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoryPoulter%2FA-Level-Project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016892,"owners_count":26085884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","sqlite"],"created_at":"2024-12-23T07:14:01.793Z","updated_at":"2025-10-13T19:18:16.953Z","avatar_url":"https://github.com/RoryPoulter.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# A-Level-Project\r\n[![GitHub Release](https://img.shields.io/github/release/RoryPoulter/A-Level-Project.svg?style=flat)]()\r\n[![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/)\r\n[![GitHub last commit](https://img.shields.io/github/last-commit/RoryPoulter/A-Level-Project.svg?style=flat)]()\r\n\r\nPython program to simulate projectile motion in 3 dimensions.\\\r\nDeveloped for my Computer Science A-Level project.\r\n\r\n## Installation\r\n### Automatic Installation\r\nRun the file `.build/setup.cmd`\r\n\r\n### Manual Installation\r\nUse the package manager [pip](https://pip.pypa.io/en/stable/) to install the required packages.\r\n```bash\r\npip install -r /path/to/requiremnets.txt\r\n```\r\nOnce the libraries have been installed, run the file `src/main.py`\r\n\r\n## Usage\r\n### Settings\r\n* Resolution: 1920x1080\\\r\n* Text scaling: 100%\r\n### Simulation\r\nThe values can be input into text boxes.\r\n\r\nTo toggle if drag is included, tick the 'Drag' radiobutton. If you want to show both flight \r\npaths, tick the \"Compare\" radiobutton. Due to the nature of the drag calculations, results including drag are \r\nonly approximations.\r\n\r\n### GUI\r\nThe program uses tkinter for the main GUI, and matplotlib to display the results. \r\nThe appearance of the GUI can be changed by toggling colourblind mode and changing the theme.\r\nThe themes are stored in an external JSON file.\r\n\r\n![themes-demo](https://github.com/RoryPoulter/A-Level-Project/assets/118304377/254f73dc-8836-476d-a3e6-a40aecf5c6bf)\r\n\r\n### Presets\r\nThe program allows users to save presets to an external .db file. The GUI features a window\r\nto manage the presets.\r\n![presets-demo](https://github.com/RoryPoulter/A-Level-Project/assets/118304377/01377cf2-ab31-4103-9f9b-6bb7b1ea2410)\r\n\r\n#### Saving presets\r\n* Enter the values into the text boxes on the main window\r\n* Press the save icon\r\n* Press the 'Save Preset' button\r\n* Enter the preset name (must be unique and under 20 characters)\r\n* Press 'Save'\r\n* A pop-up will be displayed if successful\r\n\r\n#### Previewing presets\r\n* Press the save icon\r\n* Press the 'View Presets' button\r\n* Select the preset from the dropdown\r\n* Press the 'Preview' button\r\n\r\n#### Loading presets\r\n* Press the save icon\r\n* Press the 'View Presets' button\r\n* Select the preset from the dropdown\r\n* Press the 'Load' button\r\n* The values will be automatically copied into the text boxes\r\n\r\n#### Deleting presets\r\n* Press the save icon\r\n* Press the 'View Presets' button\r\n* Select the preset from the dropdown\r\n* Press the 'Delete' button\r\n* A pop-up will be displayed if successful\r\n\r\n\r\n\r\n\r\n## Roadmap\r\nWritten in [Python 3.10](https://www.python.org/downloads/).\\\r\n#### Updates currently in development:\r\n* Code overhaul to make future development easier\r\n\r\n#### Future updates:\r\n* Results for comparing projectiles\r\n* Theme editor to create and save custom themes\r\n* Full error diagnosis for input validation\r\n* Button to reset graph\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frorypoulter%2Fa-level-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frorypoulter%2Fa-level-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frorypoulter%2Fa-level-project/lists"}