git clone https://github.com/ykaylani/najm.dot.git
- Open Unity Hub.
- Click "Add Project" and select the cloned repository folder to open it.
- The version this project was developed in is Unity 6000.1.1f1 and that is the version where the best experience lies, but all Unity 6 versions will most likely work with this.
- Navigate to Assets/Scenes then Click on the SampleScene to open it!
- Press the play button in the Unity editor
- The Integrator used in this simulation is Symplectic (Semi-Implicit) Euler.
- The Barnes-Hut Algorithm plays a role in making the simulation more performant by making the physics calculations O(n log n) instead of O(n²).
- Double Precision was used instead of float because of Small Precision errors accumulating over time, causing a big error. Double Precision also has a bigger range for massive force (10-324 to 10308) while float has 10-38 to 1038
- Delinking Propagation from Unity's FixedUpdate (Predictive Simulation)
- Custom Mesh Generation for Orbit Trails
- Floating Origin for Flexibility
- Non-Singleton Propagator for Multiple Simulations / Scene
- Major Event Triggers (Body Collisions, Orbit Escape, etc.)
- Multiple Integrators (Velocity Verlet, Symplectic Euler, Leapfrog + Yoshida)
This project was made possible with the help of these amazing resources:
Barnes-Hut Algorithm Documentation on arborjs.org
Arcane Algorithm Archive's Verlet Integration Documentation
Semi-Implicit Euler - Wikipedia
Orbital Mechanics - Wikipedia
Perifocal coordinate system - Wikipedia
John Sietsma - Morton Order
W3 Schools - DSA Radix Sort