Click or drag to resize

WaypointPropagator Class

Propagates a path connecting waypoints relative to an ellipsoid.
Inheritance Hierarchy

Namespace:  AGI.Foundation.Propagators
Assembly:  AGI.Foundation.Models (in AGI.Foundation.Models.dll) Version: 24.3.420.0 (24.3.420.0)
Syntax
public class WaypointPropagator : CartesianOnePointPropagator

The WaypointPropagator type exposes the following members.

Constructors
Properties
  NameDescription
Public propertyAvailabilityIntervals
Gets a TimeIntervalCollection over which data is available. If the availability interval is infinite, this returns Infinite.
Public propertyEllipsoid
Gets the reference ellipsoid.
Public propertyIsFrozen
Gets a value indicating whether this object is frozen. A frozen object cannot be modified and an ObjectFrozenException will be thrown if an attempt is made to do so.
(Inherited from DefinitionalObject.)
Public propertyReferenceFrame
Gets the reference frame in which ephemeris information is produced.
Public propertyTimeInterval
Gets the time interval over which the propagator can supply ephemeris.
Public propertyWaypoints
Gets the list of waypoints.
Top
Methods
  NameDescription
Protected methodCheckForSameDefinition(CartesianOnePointPropagator)
Checks to determine if another instance has the same definition as this instance and returns if it does. Derived classes MUST override this method and check all new fields introduced by the derived class for definitional equivalence. It is NOT necessary to check base class fields because the base class will already have done that. When overriding this method, you should NOT call the base implementation because it will return for all derived-class instances. Derived classes should check the type of other to preserve the symmetric nature of IsSameDefinition(Object).
(Overrides CartesianOnePointPropagatorCheckForSameDefinition(CartesianOnePointPropagator).)
Protected methodCheckForSameDefinition(DefinitionalObject)
Checks to determine if another instance has the same definition as this instance and returns if it does. Derived classes MUST override this method and check all new fields introduced by the derived class for definitional equivalence. It is NOT necessary to check base class fields because the base class will already have done that. When overriding this method, you should NOT call the base implementation because it will return for all derived-class instances. Derived classes should check the type of other to preserve the symmetric nature of IsSameDefinition(Object).
(Inherited from CartesianOnePointPropagator.)
Protected methodCheckForSameDefinition(WaypointPropagator)
Checks to determine if another instance has the same definition as this instance and returns if it does. Derived classes MUST override this method and check all new fields introduced by the derived class for definitional equivalence. It is NOT necessary to check base class fields because the base class will already have done that. When overriding this method, you should NOT call the base implementation because it will return for all derived-class instances. Derived classes should check the type of other to preserve the symmetric nature of IsSameDefinition(Object).
Public methodClone
Clones this object using the specified context.
(Overrides DefinitionalObjectClone(CopyContext).)
Protected methodComputeCurrentDefinitionHashCode
Computes a hash code based on the current properties of this object. Derived classes MUST override this method and compute a hash code that combines: a unique hash code seed, the base implementation result, and the hash codes of all new fields introduced by the derived class which are used in the CheckForSameDefinition(DefinitionalObject) method.
(Overrides CartesianOnePointPropagatorComputeCurrentDefinitionHashCode.)
Public methodStatic memberConstructConstantVelocityWaypointPropagator
Creates a waypoint propagator from a list of times and locations. The object will travel from point to point at a constant ground speed and rate of climb, with discontinuous jumps in those parameters at the waypoints.
Public methodCreatePoint
Creates a Point that represents the motion produced by this propagator.
(Inherited from CartesianOnePointPropagator.)
Public methodStatic memberDetermineDuration
Assuming constant acceleration, determines the duration from the provided parameters.
Public methodStatic memberDetermineFinalVelocity
Assuming constant acceleration, determines the final velocity from the provided parameters.
Public methodStatic memberDetermineInitialVelocity
Assuming constant acceleration, determines the initial velocity from the provided parameters.
Public methodEnumerateDependencies
Enumerates the dependencies of this object by calling EnumerateT(T) for each object that this object directly depends upon. Derived classes which contain additional dependencies MUST override this method, call the base implementation, and enumerate dependencies introduced by the derived class.
(Overrides DefinitionalObjectEnumerateDependencies(DependencyEnumerator).)
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodFreeze
Freezes this object. Further attempts to modify it will result in an ObjectFrozenException.
(Inherited from DefinitionalObject.)
Protected methodFreezeAggregatedObjects
Called by Freeze to also freeze any objects that are considered to be a part of this object. Derived classes which contain additional aggregated objects MUST override this method, call the base implementation, and freeze aggregated objects introduced by the derived class. The objects that need to be frozen in this method are frequently created in this object's constructor and are not settable via properties.
(Inherited from DefinitionalObject.)
Public methodGetDefinitionHashCode
Gets a hash code representing the definition of this object.
(Inherited from DefinitionalObject.)
Public methodGetEvaluator

Gets an evaluator that can propagate at individual dates.

This evaluator propagates the orbit state. The result of evaluating will be a MotionT corresponding to the orbital state at the given JulianDate expressed in the propagator's ReferenceFrame.

Note: when evaluating with this evaluator, it may be more efficient to specify times using an arithmetically safe TimeStandard to avoid the need to convert in order to perform the propagation. The length of a time step may be different in different TimeStandards. So be careful when specifying times.

(Inherited from CartesianOnePointPropagator.)
Public methodGetEvaluator(EvaluatorGroup)
Gets an evaluator that can propagate the position of the path of a platform over time as it traverses the given collection of Waypoints using great arcs across the reference Ellipsoid shape model. The resulting evaluator will produce the Cartesian position for a given JulianDate within the range of the waypoint data represented by TimeInterval.
(Overrides CartesianOnePointPropagatorGetEvaluator(EvaluatorGroup).)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Protected methodGetMotionReferenceFrame
Gets the reference frame in which the motion is defined.
(Overrides CartesianOnePointPropagatorGetMotionReferenceFrame.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodIsAvailable
Determines if valid data is available for the given JulianDate.
Public methodIsSameDefinition
Determines if this object has the same definition as another object.
(Inherited from DefinitionalObject.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodPropagate(JulianDate, JulianDate, Duration, Int32, ReferenceFrame)

Calculates position (and zero or more derivatives) for regular time steps over an interval.

Note: when propagating, it may be more efficient to specify times using an arithmetically safe TimeStandard to avoid the need to convert in order to perform the propagation. The length of a time step may be different in different TimeStandards. So be careful when specifying times.

(Inherited from CartesianOnePointPropagator.)
Public methodPropagate(JulianDate, JulianDate, Duration, Int32, ReferenceFrame, ITrackCalculationProgress)

Calculates position (and zero or more derivatives) for regular time steps over an interval.

Note: when evaluating with this evaluator, it may be more efficient to specify times using an arithmetically safe TimeStandard to avoid the need to convert in order to perform the propagation. The length of a time step may be different in different TimeStandards. So be careful when specifying times.

(Inherited from CartesianOnePointPropagator.)
Protected methodThrowIfFrozen
Throws ObjectFrozenException if this object IsFrozen. This method should be called from any method or property that modifies this object.
(Inherited from DefinitionalObject.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Examples

The following example shows how to use the WaypointPropagator to move between waypoints at a constant velocity:

C#
EarthCentralBody earth = CentralBodiesFacet.GetFromContext().Earth;
const double constantVelocity = 80.0;

JulianDate startDate = new JulianDate(new GregorianDate(2007, 12, 6, 12, 0, 0));

// Create the start point of our route with a particular date, location, and velocity.
Cartographic point1 = new Cartographic(Trig.DegreesToRadians(-77.28), Trig.DegreesToRadians(39.94), 3000.0);
Waypoint waypoint1 = new Waypoint(startDate, point1, constantVelocity, 0.0);

// Create the next two waypoints from a location, the same velocity, and the previous waypoint.
Cartographic point2 = new Cartographic(Trig.DegreesToRadians(-79.59), Trig.DegreesToRadians(38.81), 3000.0);
Waypoint waypoint2 = new Waypoint(waypoint1, earth.Shape, point2, constantVelocity);

Cartographic point3 = new Cartographic(Trig.DegreesToRadians(-81.44), Trig.DegreesToRadians(39.69), 3000.0);
Waypoint waypoint3 = new Waypoint(waypoint2, earth.Shape, point3, constantVelocity);

// Construct the waypoint propagator with all of the waypoints
List<Waypoint> waypoints = new List<Waypoint>();
waypoints.Add(waypoint1);
waypoints.Add(waypoint2);
waypoints.Add(waypoint3);
WaypointPropagator propagator = new WaypointPropagator(earth, waypoints);

// The propagator can then be used to create a Point that represents the position and velocity of the
// vehicle moving between the waypoints.
Point propagatedPoint = propagator.CreatePoint();

// Or an entire set of ephemeris can be computed at a specified time step.
DateMotionCollection<Cartesian> ephemeris = propagator.Propagate(waypoint1.Date, waypoint3.Date, Duration.FromSeconds(60.0), 1, propagator.ReferenceFrame);
See Also