Click or drag to resize

Waypoint Class

Defines the characteristics at a waypoint.
Inheritance Hierarchy

Namespace:  AGI.Foundation.Propagators
Assembly:  AGI.Foundation.Models (in AGI.Foundation.Models.dll) Version: 24.1.418.0 (24.1.418.0)
public class Waypoint : IEquatable<Waypoint>

The Waypoint type exposes the following members.

Public methodWaypoint(JulianDate, Cartographic, Double, Double)
Initializes a new instance.
Public methodWaypoint(Waypoint, Ellipsoid, Cartographic, Double)
Initializes a new instance.
Public propertyDate
Gets the date at which the waypoint is achieved.
Public propertyGroundSpeed
Gets the speed tangent to the ellipsoid surface.
Public propertyLocation
Gets the planetodetic position at the waypoint.
Public propertyRateOfClimb
Gets the velocity normal to the ellipsoid surface.
Public methodEquals(Object)
Indicates whether another object is exactly equal to this instance.
(Overrides ObjectEquals(Object).)
Public methodEquals(Waypoint)
Indicates whether another instance of this type is equal to this instance. Strict equality is not enforced for waypoints at geographic poles since the longitude coordinate is undefined at these locations.
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 methodGetHashCode
Returns a hash code for this instance, which is suitable for use in hashing algorithms and data structures like a hash table.
(Overrides ObjectGetHashCode.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public operatorStatic memberEquality
Returns if the two instances are exactly equal.
Public operatorStatic memberInequality
Returns if the two instances are not exactly equal.

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

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>();
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