Gravity Engine  1.5
Unity Asset for Gravity
OrbitEllipse Class Reference

Calculate the correct initial conditions for a specified elliptical orbit around a designated body OR moves the object in a fixed ellipse determined by Kepler's equation. More...

Inheritance diagram for OrbitEllipse:
EllipseBase INbodyInit IFixedOrbit IOrbitScalable IOrbitPositions

Public Types

enum  evolveType { GRAVITY_ENGINE, KEPLERS_EQN }
 
- Public Types inherited from EllipseBase
enum  ParamBy { AXIS_A, CLOSEST_P }
 

Public Member Functions

bool IsFixed ()
 Check if body is configured at scene start to be fixed. (Allows objects to be optionally configured as not fixed, to allow e.g. Kepler eqn vs initial velocity in OrbitEllipse) More...
 
void InitNBody (float physicalScale, float massScale)
 Inits the N body position and velocity based on the ellipse parameters and the position and velocity of the parent. More...
 
void InitFromSolarBody (SolarBody sbody)
 Inits from solar body. More...
 
float GetPeriod ()
 
void PreEvolve (float physicalScale, float massScale)
 Called by GravityEngine to setup physics info prior to simulation Do not call this method directly. Instead ensure this object is added to the GravityEngine either by adding in a script or to the public bodies list. More...
 
void Evolve (float physicsTime, float physicalScale, ref float[] r_new)
 Called from the GravityEngine on FixedUpdate cycles to determine current position of body given the physics time evolution only when mode=KEPLERS_EQN. More...
 
void ApplyScale (float scale)
 Apply scale to the orbit. This is used by the inspector scripts during scene setup. Do not use at run-time. More...
 
void Log (string prefix)
 
- Public Member Functions inherited from EllipseBase
void Init ()
 Init the ellipse, verify a center body is present, determine orientation and update transform. More...
 
void SetCenterBody (GameObject centerBody)
 Sets the center body and initializes the ellipse configuration. More...
 
void InitFromOrbitData (OrbitData od)
 Inits an EllipseBase orbit from orbital parameters contained in an OrbitData. More...
 
OrbitData GetOrbitData ()
 
void SetTransform ()
 Sets the transform based on the orbit parameters. More...
 
Vector3[] OrbitPositions (int numPoints)
 Calculate an array of points that describe the specified orbit More...
 
GameObject GetCenterObject ()
 Return the center object around which this ellipse is defined. More...
 

Static Public Member Functions

static float MeanToTrueAnomoly (float m, float e)
 Convert Mean Anomoly to True Anomoly for an ellipse with eccentricity e. More...
 

Public Attributes

evolveType evolveMode = evolveType.GRAVITY_ENGINE
 Use GRAVITY_ENGINE to evolve or move in a fixed KEPLER orbit.
 
- Public Attributes inherited from EllipseBase
ParamBy paramBy = ParamBy.AXIS_A
 Define ellipse by semi0major axis (A) or closest approach (P)
 
GameObject centerObject
 object to orbit around (if null, will take parent game object)
 
float ecc
 eccentricity (0..1, 0=circle, 1=linear)
 
float a_scaled = -1f
 
float p_scaled
 
float a = 10f
 (a,p) hold the values for a and p in the unit system specified by the gravity engine. These are scaled and used to set a and p for game simulation based on the unit scaling system provided by gravity engine. More...
 
float p
 pericenter - based on paramBy user can specify a OR p. a = p/(1-ecc)
 
float omega_uc
 "longitude of ascending node" - angle from x-axis to line from focus to pericenter
 
float omega_lc
 "argument of perienter" - angle from ascending node to pericenter
 
float inclination
 inclination (degrees!)
 
float phase
 initial TRUE anomoly (angle wrt line from focus to closest approach)
 

Additional Inherited Members

- Protected Member Functions inherited from EllipseBase
void UpdateOrbitParams ()
 
void CalculateRotation ()
 
- Protected Attributes inherited from EllipseBase
Quaternion ellipse_orientation
 
Vector3 xunit = Vector3.right
 
Vector3 yunit = Vector3.up
 
Vector3 zunit = Vector3.forward
 
NBody centerNbody
 
OrbitData initData
 

Detailed Description

Calculate the correct initial conditions for a specified elliptical orbit around a designated body OR moves the object in a fixed ellipse determined by Kepler's equation.

In Gravity Engine mode the orbit will evolve based on the global gravitation field and due to interactions with other bodies the actual orbit may not be the ellipse shown in the Unity editor due to these perturbations.

In KEPLER mode the orbit will be constrained to move on the ellipse specified.

This script must be attached to a gameObject with an NBody component.

Member Function Documentation

void OrbitEllipse.ApplyScale ( float  scale)

Apply scale to the orbit. This is used by the inspector scripts during scene setup. Do not use at run-time.

Parameters
scaleScale.

Implements IOrbitScalable.

void OrbitEllipse.Evolve ( float  physicsTime,
float  physicalScale,
ref float[]  r_new 
)

Called from the GravityEngine on FixedUpdate cycles to determine current position of body given the physics time evolution only when mode=KEPLERS_EQN.

This routine updates the game object position in game space and physics space.

Do not call this method directly.

Parameters
physicsTimePhysics time.
physicalScalePhysical scale.
rReference to array into which new position is placed.

Implements IFixedOrbit.

void OrbitEllipse.InitFromSolarBody ( SolarBody  sbody)

Inits from solar body.

Parameters
sbodySbody.
void OrbitEllipse.InitNBody ( float  physicalScale,
float  massScale 
)

Inits the N body position and velocity based on the ellipse parameters and the position and velocity of the parent.

Parameters
physicalScalePhysical scale.

Implements INbodyInit.

bool OrbitEllipse.IsFixed ( )

Check if body is configured at scene start to be fixed. (Allows objects to be optionally configured as not fixed, to allow e.g. Kepler eqn vs initial velocity in OrbitEllipse)

Returns
true if this instance is fixed; otherwise, false.

Implements IFixedOrbit.

static float OrbitEllipse.MeanToTrueAnomoly ( float  m,
float  e 
)
static

Convert Mean Anomoly to True Anomoly for an ellipse with eccentricity e.

Returns
True Anomoly in degrees.
Parameters
mMean Anomoly. (degrees)
eEccentricty.
void OrbitEllipse.PreEvolve ( float  physicalScale,
float  massScale 
)

Called by GravityEngine to setup physics info prior to simulation Do not call this method directly. Instead ensure this object is added to the GravityEngine either by adding in a script or to the public bodies list.

Parameters
physicalScalePhysical scale.

Implements IFixedOrbit.


The documentation for this class was generated from the following file: