Final Course Project for CSM Semester 3
Course: 420-SF3-RE Program Development in a Graphical Environment — Section: 01
Teacher: Nagat Drawel
Tip
The quickest way to start this application is to open the Project_PendulumSimulator folder as a project in NetBeans. Execute "Reload POM" to ensure all project dependencies are available.
The pom.xml already has the necessary Run actions specified. Use NetBeans' run button to automatically build and execute the application.
This application provides an interactive environment where users can explore the physics of pendulum motion. The simulator will allow users to manipulate key variables affecting the pendulum’s physical behaviour, such as string length, mass, and release angle, and to observe how these parameters affect the motion of the pendulum in real time.
Functionalities include:
- Starting, pausing, and resetting pendulum motion.
- Adjusting physical parameters (length, mass, angle, and gravity).
- Graphical visualization of motion through smooth animations.
- Saving simulations and loading previously created simulations.
This project falls under the scientific domain of a physics simulation, specifically focused on classical mechanics. The application aims to serve as both an educational and exploratory tool for students learning about oscillatory motion, energy conservation, and the effects of different parameters on a pendulum’s behaviour.
* This project notably uses Maven for its dependency resolution, JavaFX for the graphical interface library, and the FXML definition for JavaFX views.
- Ali Shahrestani
Implemented the App booter system, including configurable settings, a globally accessible object-reuse system, and simulation state management.
Implemented the simulation save system, including designing the data exporting structure, IO handling, and live unsaved-file indication.
Enforced app standards, including a multi-step controller initialize() and delegation of repeated code to the Globals system.
- Kourosh Maissamyazad
Implemented the Model-View (Controller) connection, including connecting parameter sliders with the pendulum instance and syncing parameter sliders when loading a save.
Implemented the display of pendulum information in the view, including the sinusoidal graph visualization.
Designed and styled the views.
- Daniel Orejuela Liu
Implemented the graphical movement of the pendulum, including translation between physical properties to their on-screen representation.
Implemented the physical and mathematical formulas, including calculating the position of the pendulum based on adjustable parameters.
Planned the simulation interface, including Play/Pause and which parameters are adjustable during play or pause.