EulerSequence Structure 
Represents a rotation as a sequence of three ElementaryRotations about consecutive axes. The first elementary rotation results in an intermediate orientation and associated set of axes from which the second elementary rotation is performed. Likewise, the third elementary rotation is performed from the intermediate orientation and set of axes which result from the second rotation.
A 321 Euler sequence is commonly used to represent yaw about the zaxis, followed by pitch about the resulting yaxis, and then roll about the resulting xaxis when expressing the attitude of a vehicle relative to some reference orientation.
Namespace: AGI.Foundation.Coordinates
The EulerSequence type exposes the following members.
Name  Description  

EulerSequence(YawPitchRoll) 
Initializes an EulerSequence from the provided YawPitchRoll sequence.
 
EulerSequence(AngleAxisRotation, EulerSequenceIndicator) 
Initializes an EulerSequence from the provided AngleAxisRotation and sequence.
 
EulerSequence(Matrix3By3, EulerSequenceIndicator) 
Initializes an EulerSequence from the provided Matrix3By3 and sequence.
 
EulerSequence(UnitQuaternion, EulerSequenceIndicator) 
Initializes an EulerSequence from the provided UnitQuaternion and sequence.
 
EulerSequence(ElementaryRotation, ElementaryRotation, ElementaryRotation) 
Initializes an EulerSequence from the provided
ElementaryRotations.
 
EulerSequence(Double, Double, Double, EulerSequenceIndicator) 
Initializes an EulerSequence from the provided angles and sequence.

Name  Description  

FirstRotation 
Gets the first rotation.
 
SecondRotation 
Gets the second rotation.
 
Sequence 
Gets the order of the axes rotations for this instance.
 
ThirdRotation 
Gets the third rotation.

Name  Description  

Equals(Object) 
Indicates whether another object is exactly equal to this instance.
(Overrides ValueTypeEquals(Object).)  
Equals(EulerSequence) 
Indicates whether another instance of this type is exactly equal to this instance.
 
EqualsEpsilon 
Returns if all of the elements of this rotation are within epsilon
of the same elements of the specified rotation. That is, in order for the rotations to be
considered equal (and for this function to return ), the absolute value of the
difference between each of their elements must be less than or equal to epsilon.
 
FirstAxis 
Determines the first axis indicator from the provided EulerSequenceIndicator.
 
GetHashCode 
Returns a hash code for this instance, which is suitable for use in hashing algorithms and data structures like a hash table.
(Overrides ValueTypeGetHashCode.)  
GetType  Gets the Type of the current instance. (Inherited from Object.)  
Indicator 
Composes a EulerSequenceIndicator from three individual AxisIndicator items.
 
Invert 
Inverts this instance, yielding a new EulerSequence.
 
SecondAxis 
Determines the second axis indicator from the provided EulerSequenceIndicator.
 
ThirdAxis 
Determines the third axis indicator from the provided EulerSequenceIndicator.
 
ToString 
Returns the value of this set of EulerSequence coordinates in the form "first rotation, second rotation, third rotation"
(Overrides ValueTypeToString.) 
Name  Description  

Equality 
Returns if the two instances are exactly equal.
 
Inequality 
Returns if the two instances are not exactly equal.

A 321 Euler sequence can be used to express the yaw (heading), pitch (elevation), and roll (bank) orientation of the vehicle body axis relative to the local NorthEastDown axes of the vehicle. To obtain these angles, use a 321 EulerSequence as shown below:
Point myVehiclePoint = propagator.CreatePoint(); EarthCentralBody earth = CentralBodiesFacet.GetFromContext().Earth; AxesNorthEastDown ned = new AxesNorthEastDown(earth, myVehiclePoint); Vector surfaceNormal = new VectorEllipsoidSurfaceNormal(earth.Shape, earth.FixedFrame, myVehiclePoint); AxesAlignedConstrained vehicleBodyAxes = new AxesAlignedConstrained( new VectorVelocity(myVehiclePoint, earth.FixedFrame), AxisIndicator.First, new VectorInverted(surfaceNormal), AxisIndicator.Third); AxesEvaluator rotationEvaluator = GeometryTransformer.GetAxesTransformation(ned, vehicleBodyAxes); UnitQuaternion ned2body = rotationEvaluator.Evaluate(propagator.TimeInterval.Start); EulerSequence yawPitchRoll = new EulerSequence(ned2body, EulerSequenceIndicator.Euler321); double yaw = yawPitchRoll.FirstRotation.Angle; double pitch = yawPitchRoll.SecondRotation.Angle; double roll = yawPitchRoll.ThirdRotation.Angle;