Click or drag to resize

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 z-axis, followed by pitch about the resulting y-axis, and then roll about the resulting x-axis when expressing the attitude of a vehicle relative to some reference orientation.

Namespace:  AGI.Foundation.Coordinates
Assembly:  AGI.Foundation.Core (in AGI.Foundation.Core.dll) Version: 19.1.398.0 (19.1.398.0)
Syntax
public struct EulerSequence : IEquatable<EulerSequence>

The EulerSequence type exposes the following members.

Constructors
  NameDescription
Public methodEulerSequence(YawPitchRoll)
Initializes an EulerSequence from the provided YawPitchRoll sequence.
Public methodEulerSequence(AngleAxisRotation, EulerSequenceIndicator)
Initializes an EulerSequence from the provided AngleAxisRotation and sequence.
Public methodEulerSequence(Matrix3By3, EulerSequenceIndicator)
Initializes an EulerSequence from the provided Matrix3By3 and sequence.
Public methodEulerSequence(UnitQuaternion, EulerSequenceIndicator)
Initializes an EulerSequence from the provided UnitQuaternion and sequence.
Public methodEulerSequence(ElementaryRotation, ElementaryRotation, ElementaryRotation)
Initializes an EulerSequence from the provided ElementaryRotations.
Public methodEulerSequence(Double, Double, Double, EulerSequenceIndicator)
Initializes an EulerSequence from the provided angles and sequence.
Top
Properties
  NameDescription
Public propertyFirstRotation
Gets the first rotation.
Public propertySecondRotation
Gets the second rotation.
Public propertySequence
Gets the order of the axes rotations for this instance.
Public propertyThirdRotation
Gets the third rotation.
Top
Methods
  NameDescription
Public methodEquals(Object)
Indicates whether another object is exactly equal to this instance.
(Overrides ValueTypeEquals(Object).)
Public methodEquals(EulerSequence)
Indicates whether another instance of this type is exactly equal to this instance.
Public methodEqualsEpsilon
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.
Public methodStatic memberFirstAxis
Determines the first axis indicator from the provided EulerSequenceIndicator.
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 ValueTypeGetHashCode.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodStatic memberIndicator
Composes a EulerSequenceIndicator from three individual AxisIndicator items.
Public methodInvert
Inverts this instance, yielding a new EulerSequence.
Public methodStatic memberSecondAxis
Determines the second axis indicator from the provided EulerSequenceIndicator.
Public methodStatic memberThirdAxis
Determines the third axis indicator from the provided EulerSequenceIndicator.
Public methodToString
Returns the value of this set of EulerSequence coordinates in the form "first rotation, second rotation, third rotation"
(Overrides ValueTypeToString.)
Top
Operators
  NameDescription
Public operatorStatic memberEquality
Returns if the two instances are exactly equal.
Public operatorStatic memberInequality
Returns if the two instances are not exactly equal.
Top
Remarks
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 North-East-Down axes of the vehicle. To obtain these angles, use a 321 EulerSequence as shown below:
C#
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;
See Also