Gravity Engine 12.0
Unity Asset for Gravity
Loading...
Searching...
No Matches
RelativeMotion Class Reference

Relative Motion for orbital transfers and rendezvous. The relative motion formalism describes the motion of the ship with repect to the target in a co-rotating coordinate frame in which the target is stationary. It is assumed that the target is in a circular orbit and that the ship is in a "nearby" orbit. The closer the ship and target orbit, the better the approximation to actual motion and computation of rendezvous maneuvers. More...

Public Member Functions

 RelativeMotion (NBody ship, NBody target, NBody planet)
 
double GetN ()
 Get the angular velocity of the target in radians/sec.
 
double TargetAngleDegrees ()
 Determine the target angle: the angle from the local horizontal of the ship to the target based on the current world positions in GE.
 
void ComputeRendezvous (double time, bool targetAngleAlign)
 Compute the two-impulse maneuver to rendezvous with a target in a circular orbit using a linearized relative motion framework (Clohessy-Wiltshire). See e.g. Curtis 7.5.
 
Vector3d GetBurn0 ()
 Return the initial burn to initiate a rendezvous computed by a call to ComputeRendezvous.
 
List< ManeuverGetManeuvers ()
 Provide the maneuvers for the rendezvous determined by a call to ComputeRendezvous.
 
Vector3d ShipToLVLH ()
 Determine the relative position in the LVLH frame of the ship based on the current world position in GE.
 

Static Public Member Functions

static double TargetAngle (NBody ship, NBody target, NBody planet)
 Get the angle of the target with respect to the ship's local horizon vector. It is assumed the ship and target are in coplanar orbits. Does not assume orbit is circular.
 
static Vector3d TargetVector (NBody ship, NBody target, NBody planet)
 Get the vector to the target with respect to the ship.
 

Detailed Description

Relative Motion for orbital transfers and rendezvous. The relative motion formalism describes the motion of the ship with repect to the target in a co-rotating coordinate frame in which the target is stationary. It is assumed that the target is in a circular orbit and that the ship is in a "nearby" orbit. The closer the ship and target orbit, the better the approximation to actual motion and computation of rendezvous maneuvers.

This component can be used to determine the maneuvers for a rendezvous. See e.g. @RelativeXferController.

The class is developed with reference to the presentation in Curtis "Orbital Mechanics for Engineering Students". Chapter 7.

There are different conventions for local co-ordinates. This component follows Curtis/Prussing and Conway: x - vertical y - downrange z - cross range. Others (e.g. Woffinden) use x for downrange, z vertical and y cross-range.

Member Function Documentation

◆ ComputeRendezvous()

void RelativeMotion.ComputeRendezvous ( double  time,
bool  targetAngleAlign 
)

Compute the two-impulse maneuver to rendezvous with a target in a circular orbit using a linearized relative motion framework (Clohessy-Wiltshire). See e.g. Curtis 7.5.

This assumes the altitide distance between the ship and target is small compared to the radius of the target orbit. The resulting maneuvers are an approximation to the true 3D orbital rendezvous problem.

Parameters
timeThe time interval to rendezvous
targetAngleAligntrigger angle targeting mode. Ensures initial dV aligns with target angle algorithm.

◆ GetBurn0()

Vector3d RelativeMotion.GetBurn0 ( )

Return the initial burn to initiate a rendezvous computed by a call to ComputeRendezvous.

Returns
dV required for the burn

◆ GetManeuvers()

List< Maneuver > RelativeMotion.GetManeuvers ( )

Provide the maneuvers for the rendezvous determined by a call to ComputeRendezvous.

Returns
List of maneuvers

◆ GetN()

double RelativeMotion.GetN ( )

Get the angular velocity of the target in radians/sec.

Returns
angular velocity in radians/second

◆ ShipToLVLH()

Vector3d RelativeMotion.ShipToLVLH ( )

Determine the relative position in the LVLH frame of the ship based on the current world position in GE.

Returns

◆ TargetAngle()

static double RelativeMotion.TargetAngle ( NBody  ship,
NBody  target,
NBody  planet 
)
static

Get the angle of the target with respect to the ship's local horizon vector. It is assumed the ship and target are in coplanar orbits. Does not assume orbit is circular.

Parameters
ship
target
planet
Returns

◆ TargetAngleDegrees()

double RelativeMotion.TargetAngleDegrees ( )

Determine the target angle: the angle from the local horizontal of the ship to the target based on the current world positions in GE.

Returns
Target angle in degrees

◆ TargetVector()

static Vector3d RelativeMotion.TargetVector ( NBody  ship,
NBody  target,
NBody  planet 
)
static

Get the vector to the target with respect to the ship.

Parameters
ship
target
planet
Returns

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