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 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 approximation error over longer periods of time. (doubles also provide a bigger range than floats which allows for things like realistic masses)
- Delinking Propagation from Unity's FixedUpdate (Predictive Simulation)
- Custom Mesh Generation for Orbit Trails
- Fast Multipole Method Implementation
- Floating Origin for Flexibility
- Non-Singleton Propagator for Multiple Simulations / Scene
- Major Event Triggers (Body Collisions, Orbit Escape, etc.)
- Yoshida Integration (4th and 6th Order)
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
