Class FieldEquinoctialOrbit<T extends CalculusFieldElement<T>>

  • Type Parameters:
    T - type of the field elements
    All Implemented Interfaces:
    PositionAngleBased, FieldTimeShiftable<FieldOrbit<T>,​T>, FieldTimeStamped<T>, TimeShiftable<FieldOrbit<T>>, FieldPVCoordinatesProvider<T>

    public class FieldEquinoctialOrbit<T extends CalculusFieldElement<T>>
    extends FieldOrbit<T>
    implements PositionAngleBased
    This class handles equinoctial orbital parameters, which can support both circular and equatorial orbits.

    The parameters used internally are the equinoctial elements which can be related to Keplerian elements as follows:

         a
         ex = e cos(ω + Ω)
         ey = e sin(ω + Ω)
         hx = tan(i/2) cos(Ω)
         hy = tan(i/2) sin(Ω)
         lv = v + ω + Ω
       
    where ω stands for the Perigee Argument and Ω stands for the Right Ascension of the Ascending Node.

    The conversion equations from and to Keplerian elements given above hold only when both sides are unambiguously defined, i.e. when orbit is neither equatorial nor circular. When orbit is either equatorial or circular, the equinoctial parameters are still unambiguously defined whereas some Keplerian elements (more precisely ω and Ω) become ambiguous. For this reason, equinoctial parameters are the recommended way to represent orbits. Note however than the present implementation does not handle non-elliptical cases.

    The instance EquinoctialOrbit is guaranteed to be immutable.

    Since:
    9.0
    Author:
    Mathieu Roméro, Luc Maisonobe, Guylaine Prat, Fabien Maussion, Véronique Pommier-Maurussane
    See Also:
    Orbit, KeplerianOrbit, CircularOrbit, CartesianOrbit
    • Constructor Detail

      • FieldEquinoctialOrbit

        public FieldEquinoctialOrbit​(T a,
                                     T ex,
                                     T ey,
                                     T hx,
                                     T hy,
                                     T l,
                                     PositionAngleType type,
                                     PositionAngleType cachedPositionAngleType,
                                     Frame frame,
                                     FieldAbsoluteDate<T> date,
                                     T mu)
                              throws IllegalArgumentException
        Creates a new instance.
        Parameters:
        a - semi-major axis (m)
        ex - e cos(ω + Ω), first component of eccentricity vector
        ey - e sin(ω + Ω), second component of eccentricity vector
        hx - tan(i/2) cos(Ω), first component of inclination vector
        hy - tan(i/2) sin(Ω), second component of inclination vector
        l - (M or E or v) + ω + Ω, mean, eccentric or true longitude argument (rad)
        type - type of longitude argument
        cachedPositionAngleType - type of cached longitude argument
        frame - the frame in which the parameters are defined (must be a pseudo-inertial frame)
        date - date of the orbital parameters
        mu - central attraction coefficient (m³/s²)
        Throws:
        IllegalArgumentException - if eccentricity is equal to 1 or larger or if frame is not a pseudo-inertial frame
        Since:
        12.1
      • FieldEquinoctialOrbit

        public FieldEquinoctialOrbit​(T a,
                                     T ex,
                                     T ey,
                                     T hx,
                                     T hy,
                                     T l,
                                     PositionAngleType type,
                                     Frame frame,
                                     FieldAbsoluteDate<T> date,
                                     T mu)
                              throws IllegalArgumentException
        Creates a new instance.
        Parameters:
        a - semi-major axis (m)
        ex - e cos(ω + Ω), first component of eccentricity vector
        ey - e sin(ω + Ω), second component of eccentricity vector
        hx - tan(i/2) cos(Ω), first component of inclination vector
        hy - tan(i/2) sin(Ω), second component of inclination vector
        l - (M or E or v) + ω + Ω, mean, eccentric or true longitude argument (rad)
        type - type of longitude argument
        frame - the frame in which the parameters are defined (must be a pseudo-inertial frame)
        date - date of the orbital parameters
        mu - central attraction coefficient (m³/s²)
        Throws:
        IllegalArgumentException - if eccentricity is equal to 1 or larger or if frame is not a pseudo-inertial frame
      • FieldEquinoctialOrbit

        public FieldEquinoctialOrbit​(T a,
                                     T ex,
                                     T ey,
                                     T hx,
                                     T hy,
                                     T l,
                                     T aDot,
                                     T exDot,
                                     T eyDot,
                                     T hxDot,
                                     T hyDot,
                                     T lDot,
                                     PositionAngleType type,
                                     PositionAngleType cachedPositionAngleType,
                                     Frame frame,
                                     FieldAbsoluteDate<T> date,
                                     T mu)
                              throws IllegalArgumentException
        Creates a new instance.
        Parameters:
        a - semi-major axis (m)
        ex - e cos(ω + Ω), first component of eccentricity vector
        ey - e sin(ω + Ω), second component of eccentricity vector
        hx - tan(i/2) cos(Ω), first component of inclination vector
        hy - tan(i/2) sin(Ω), second component of inclination vector
        l - (M or E or v) + ω + Ω, mean, eccentric or true longitude argument (rad)
        aDot - semi-major axis derivative (m/s)
        exDot - d(e cos(ω + Ω))/dt, first component of eccentricity vector derivative
        eyDot - d(e sin(ω + Ω))/dt, second component of eccentricity vector derivative
        hxDot - d(tan(i/2) cos(Ω))/dt, first component of inclination vector derivative
        hyDot - d(tan(i/2) sin(Ω))/dt, second component of inclination vector derivative
        lDot - d(M or E or v) + ω + Ω)/dr, mean, eccentric or true longitude argument derivative (rad/s)
        type - type of longitude argument
        cachedPositionAngleType - of cached longitude argument
        frame - the frame in which the parameters are defined (must be a pseudo-inertial frame)
        date - date of the orbital parameters
        mu - central attraction coefficient (m³/s²)
        Throws:
        IllegalArgumentException - if eccentricity is equal to 1 or larger or if frame is not a pseudo-inertial frame
        Since:
        12.1
      • FieldEquinoctialOrbit

        public FieldEquinoctialOrbit​(T a,
                                     T ex,
                                     T ey,
                                     T hx,
                                     T hy,
                                     T l,
                                     T aDot,
                                     T exDot,
                                     T eyDot,
                                     T hxDot,
                                     T hyDot,
                                     T lDot,
                                     PositionAngleType type,
                                     Frame frame,
                                     FieldAbsoluteDate<T> date,
                                     T mu)
                              throws IllegalArgumentException
        Creates a new instance.
        Parameters:
        a - semi-major axis (m)
        ex - e cos(ω + Ω), first component of eccentricity vector
        ey - e sin(ω + Ω), second component of eccentricity vector
        hx - tan(i/2) cos(Ω), first component of inclination vector
        hy - tan(i/2) sin(Ω), second component of inclination vector
        l - (M or E or v) + ω + Ω, mean, eccentric or true longitude argument (rad)
        aDot - semi-major axis derivative (m/s)
        exDot - d(e cos(ω + Ω))/dt, first component of eccentricity vector derivative
        eyDot - d(e sin(ω + Ω))/dt, second component of eccentricity vector derivative
        hxDot - d(tan(i/2) cos(Ω))/dt, first component of inclination vector derivative
        hyDot - d(tan(i/2) sin(Ω))/dt, second component of inclination vector derivative
        lDot - d(M or E or v) + ω + Ω)/dr, mean, eccentric or true longitude argument derivative (rad/s)
        type - type of longitude argument
        frame - the frame in which the parameters are defined (must be a pseudo-inertial frame)
        date - date of the orbital parameters
        mu - central attraction coefficient (m³/s²)
        Throws:
        IllegalArgumentException - if eccentricity is equal to 1 or larger or if frame is not a pseudo-inertial frame
        Since:
        12.1
      • FieldEquinoctialOrbit

        public FieldEquinoctialOrbit​(FieldOrbit<T> op)
        Constructor from any kind of orbital parameters.
        Parameters:
        op - orbital parameters to copy
      • FieldEquinoctialOrbit

        public FieldEquinoctialOrbit​(Field<T> field,
                                     EquinoctialOrbit op)
        Constructor from Field and EquinoctialOrbit.

        Build a FieldEquinoctialOrbit from non-Field EquinoctialOrbit.

        Parameters:
        field - CalculusField to base object on
        op - non-field orbit with only "constant" terms
        Since:
        12.0
      • FieldEquinoctialOrbit

        public FieldEquinoctialOrbit​(Field<T> field,
                                     Orbit op)
        Constructor from Field and Orbit.

        Build a FieldEquinoctialOrbit from any non-Field Orbit.

        Parameters:
        field - CalculusField to base object on
        op - non-field orbit with only "constant" terms
        Since:
        12.0