Gravity Engine 12.0
Unity Asset for Gravity
|
Common interface for numerical NBody integration. Used by the GravityEngine. More...
Public Member Functions | |
void | Setup (int maxBodies, double timeStep) |
Setup the specified maxBodies and timeStep. Must be called prior to PreEvolve/Evolve. | |
void | Clear () |
Clear internal information so no bodies are evolved. | |
INBodyIntegrator | DeepClone () |
Clone this instance, replicating internal arrays. Copy across any internal state required for continued evolution. | |
void | AddNBody (int bodyNum, NBody nbody, GravityState.NbodyState[] nbodyState) |
Adds the N body. Implementation may support the case where the initial number of bodies in Setup() is exceeded, creating space, or may ignore additions that exceed this limit (e.g. AZTTriple). | |
void | RemoveBodyAtIndex (int atIndex) |
Removes NBody at index i. | |
void | GrowArrays (int growBy) |
Grows the arrays. Called by GravityEngine when it changes internal data sizes. | |
Vector3d | GetAccelerationForIndex (int i) |
string | GetExternalAccelForIndex (int i) |
void | PreEvolve (GravityState gravityState) |
Call ONCE after all game objects have been added to allow integrator to pre-calc starting quantities required for integration. | |
double | Evolve (double time, GravityState gravityState, bool exactTime=false) |
Evolve the specified time, m, r and info. | |
float | GetEnergy (GravityState gs) |
Gets the energy of the system. | |
float | GetInitialEnergy (GravityState gs) |
Gets the initial energy. | |
Common interface for numerical NBody integration. Used by the GravityEngine.
Index Tracking:
This interface is not normally called from developer scripts.
void INBodyIntegrator.AddNBody | ( | int | bodyNum, |
NBody | nbody, | ||
GravityState.NbodyState[] | nbodyState | ||
) |
Adds the N body. Implementation may support the case where the initial number of bodies in Setup() is exceeded, creating space, or may ignore additions that exceed this limit (e.g. AZTTriple).
nbody | NBody component |
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.
void INBodyIntegrator.Clear | ( | ) |
Clear internal information so no bodies are evolved.
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.
INBodyIntegrator INBodyIntegrator.DeepClone | ( | ) |
Clone this instance, replicating internal arrays. Copy across any internal state required for continued evolution.
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.
double INBodyIntegrator.Evolve | ( | double | time, |
GravityState | gravityState, | ||
bool | exactTime = false |
||
) |
Evolve the specified time, m, r and info.
Integrators will evolve for at least as long as the specified time, but can overshoot. The GravityEngine will correct on the next cycle.
time | Time. |
m | M. |
r | The red component. |
info | Info. |
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.
float INBodyIntegrator.GetEnergy | ( | GravityState | gs | ) |
Gets the energy of the system.
mass | Mass. |
pos | Position. |
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.
float INBodyIntegrator.GetInitialEnergy | ( | GravityState | gs | ) |
Gets the initial energy.
mass | Mass. |
pos | Position. |
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.
void INBodyIntegrator.GrowArrays | ( | int | growBy | ) |
Grows the arrays. Called by GravityEngine when it changes internal data sizes.
growBy | Grow by. |
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.
void INBodyIntegrator.PreEvolve | ( | GravityState | gravityState | ) |
Call ONCE after all game objects have been added to allow integrator to pre-calc starting quantities required for integration.
To avoid copies of mass and position arrays in integrators provide a reference to these for Evolve and PreEvolve
Some implementations (e.g. AZTriple) may make their own copies and then copy the result back into these arrays ///
m | M. |
r | The red component. |
info | Info. |
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.
void INBodyIntegrator.RemoveBodyAtIndex | ( | int | atIndex | ) |
Removes NBody at index i.
atIndex | At index. |
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.
void INBodyIntegrator.Setup | ( | int | maxBodies, |
double | timeStep | ||
) |
Setup the specified maxBodies and timeStep. Must be called prior to PreEvolve/Evolve.
maxBodies | Max bodies. |
timeStep | Time step. |
Implemented in AZTripleIntegrator, HermiteIntegrator, and LeapfrogIntegrator.