Enum LOFType

  • All Implemented Interfaces:
    Serializable, Comparable<LOFType>, LOF

    public enum LOFType
    extends Enum<LOFType>
    implements LOF
    Enumerate for different types of Local Orbital Frames.
    Author:
    Luc Maisonobe, Maxime Journot, Vincent Cucchietti
    • Enum Constant Detail

      • TNW

        public static final LOFType TNW
        Constant for TNW frame (X axis aligned with velocity, Z axis aligned with orbital momentum).

        The axes of this frame are parallel to the axes of the VNC and NTW frames:

        • XTNW = XVNC = YNTW
        • YTNW = -ZVNC = -XNTW
        • ZTNW = YVNC = ZNTW
        See Also:
        VNC, NTW
      • TNW_INERTIAL

        public static final LOFType TNW_INERTIAL
        Constant for TNW frame considered inertial (X axis aligned with velocity, Z axis aligned with orbital momentum).

        The axes of this frame are parallel to the axes of the VNC and NTW frames:

        • XTNW = XVNC = YNTW
        • YTNW = -ZVNC = -XNTW
        • ZTNW = YVNC = ZNTW
        See Also:
        VNC, NTW
      • QSW

        public static final LOFType QSW
        Constant for QSW frame (X axis aligned with position, Z axis aligned with orbital momentum).

        This frame is also known as the LVLH frame, both constants are equivalent.

        The axes of these frames are parallel to the axes of the VVLH frame:

        • XQSW/LVLH = -ZVVLH
        • YQSW/LVLH = XVVLH
        • ZQSW/LVLH = -YVVLH
        See Also:
        LVLH, VVLH
      • QSW_INERTIAL

        public static final LOFType QSW_INERTIAL
        Constant for QSW frame considered inertial (X axis aligned with position, Z axis aligned with orbital momentum).

        This frame is also known as the LVLH frame, both constants are equivalent.

        The axes of these frames are parallel to the axes of the VVLH frame:

        • XQSW/LVLH = -ZVVLH
        • YQSW/LVLH = XVVLH
        • ZQSW/LVLH = -YVVLH
        See Also:
        LVLH, VVLH
      • LVLH

        public static final LOFType LVLH
        Constant for Local Vertical, Local Horizontal frame (X axis aligned with position, Z axis aligned with orbital momentum).

        BEWARE! Depending on the background (software used, textbook, community), different incompatible definitions for LVLH are used. This one is consistent with Vallado's book and with AGI's STK. However CCSDS standard, Wertz, and a.i. solutions' FreeFlyer use another definition (see LVLH_CCSDS).

        This frame is also known as the QSW frame, both constants are equivalent.

        The axes of these frames are parallel to the axes of the LVLH_CCSDS frame:

        • XLVLH/QSW = -ZLVLH_CCSDS
        • YLVLH/QSW = XLVLH_CCSDS
        • ZLVLH/QSW = -YLVLH_CCSDS
        See Also:
        QSW, VVLH
      • LVLH_INERTIAL

        public static final LOFType LVLH_INERTIAL
        Constant for Local Vertical, Local Horizontal frame considered inertial (X axis aligned with position, Z axis aligned with orbital momentum).

        BEWARE! Depending on the background (software used, textbook, community), different incompatible definitions for LVLH are used. This one is consistent with Vallado's book and with AGI's STK. However CCSDS standard, Wertz, and a.i. solutions' FreeFlyer use another definition (see LVLH_CCSDS).

        This frame is also known as the QSW frame, both constants are equivalent.

        The axes of these frames are parallel to the axes of the LVLH_CCSDS frame:

        • XLVLH/QSW = -ZLVLH_CCSDS
        • YLVLH/QSW = XLVLH_CCSDS
        • ZLVLH/QSW = -YLVLH_CCSDS
        See Also:
        QSW, VVLH
      • LVLH_CCSDS

        public static final LOFType LVLH_CCSDS
        Constant for Local Vertical, Local Horizontal frame as defined by CCSDS (Z axis aligned with opposite of position, Y axis aligned with opposite of orbital momentum).

        BEWARE! Depending on the background (software used, textbook, community), different incompatible definitions for LVLH are used. This one is consistent with CCSDS standard, Wertz, and a.i. solutions' FreeFlyer. However Vallado's book and with AGI's STK use another definition (see LVLH).

        The axes of this frame are parallel to the axes of both the QSW and LVLH frames:

        • XLVLH_CCSDS/VVLH = YQSW/LVLH
        • YLVLH_CCSDS/VVLH = -ZQSW/LVLH
        • ZLVLH_CCSDS/VVLH = -XQSW/LVLH
        Since:
        11.0
        See Also:
        QSW, LVLH
      • LVLH_CCSDS_INERTIAL

        public static final LOFType LVLH_CCSDS_INERTIAL
        Constant for Local Vertical, Local Horizontal frame as defined by CCSDS considered inertial (Z axis aligned with opposite of position, Y axis aligned with opposite of orbital momentum).

        BEWARE! Depending on the background (software used, textbook, community), different incompatible definitions for LVLH are used. This one is consistent with CCSDS standard, Wertz, and a.i. solutions' FreeFlyer. However Vallado's book and with AGI's STK use another definition (see LVLH).

        The axes of this frame are parallel to the axes of both the QSW and LVLH frames:

        • XLVLH_CCSDS/VVLH = YQSW/LVLH
        • YLVLH_CCSDS/VVLH = -ZQSW/LVLH
        • ZLVLH_CCSDS/VVLH = -XQSW/LVLH
        Since:
        11.0
        See Also:
        QSW, LVLH
      • VVLH

        public static final LOFType VVLH
        Constant for Vehicle Velocity, Local Horizontal frame (Z axis aligned with opposite of position, Y axis aligned with opposite of orbital momentum).

        This is another name for LVLH_CCSDS, kept here for compatibility with STK.

        Beware that the name is misleading: in the general case (i.e. not perfectly circular), none of the axes is perfectly aligned with velocity! The preferred name for this should be LVLH_CCSDS.

        The axes of this frame are parallel to the axes of both the QSW and LVLH frames:

        • XLVLH_CCSDS/VVLH = YQSW/LVLH
        • YLVLH_CCSDS/VVLH = -ZQSW/LVLH
        • ZLVLH_CCSDS/VVLH = -XQSW/LVLH
        See Also:
        LVLH_CCSDS
      • VVLH_INERTIAL

        public static final LOFType VVLH_INERTIAL
        Constant for Vehicle Velocity, Local Horizontal frame considered inertial (Z axis aligned with opposite of position, Y axis aligned with opposite of orbital momentum).

        This is another name for LVLH_CCSDS, kept here for compatibility with STK.

        Beware that the name is misleading: in the general case (i.e. not perfectly circular), none of the axes is perfectly aligned with velocity! The preferred name for this should be LVLH_CCSDS.

        The axes of this frame are parallel to the axes of both the QSW and LVLH frames:

        • XLVLH_CCSDS/VVLH = YQSW/LVLH
        • YLVLH_CCSDS/VVLH = -ZQSW/LVLH
        • ZLVLH_CCSDS/VVLH = -XQSW/LVLH
        See Also:
        LVLH_CCSDS
      • VNC

        public static final LOFType VNC
        Constant for Velocity - Normal - Co-normal frame (X axis aligned with velocity, Y axis aligned with orbital momentum).

        The axes of this frame are parallel to the axes of the TNW and NTW frames:

        • XVNC = XTNW = YNTW
        • YVNC = ZTNW = ZNTW
        • ZVNC = -YTNW = XNTW
        See Also:
        TNW, NTW
      • VNC_INERTIAL

        public static final LOFType VNC_INERTIAL
        Constant for Velocity - Normal - Co-normal frame considered inertial (X axis aligned with velocity, Y axis aligned with orbital momentum).

        The axes of this frame are parallel to the axes of the TNW and NTW frames:

        • XVNC = XTNW = YNTW
        • YVNC = ZTNW = ZNTW
        • ZVNC = -YTNW = XNTW
        See Also:
        TNW, NTW
      • EQW

        public static final LOFType EQW
        Constant for Equinoctial Coordinate System (X axis aligned with ascending node, Z axis aligned with orbital momentum).
        Since:
        11.0
      • NTW

        public static final LOFType NTW
        Constant for Transverse Velocity Normal coordinate system (Y axis aligned with velocity, Z axis aligned with orbital momentum).

        The axes of this frame are parallel to the axes of the TNW and VNC frames:

        • XNTW = -YTNW = ZVNC
        • YNTW = XTNW = XVNC
        • ZNTW = ZTNW = YVNC
        Since:
        11.0
        See Also:
        TNW, VNC
      • NTW_INERTIAL

        public static final LOFType NTW_INERTIAL
        Constant for Transverse Velocity Normal coordinate system considered inertial (Y axis aligned with velocity, Z axis aligned with orbital momentum).

        The axes of this frame are parallel to the axes of the TNW and VNC frames:

        • XNTW = -YTNW = ZVNC
        • YNTW = XTNW = XVNC
        • ZNTW = ZTNW = YVNC
        Since:
        11.0
        See Also:
        TNW, VNC
    • Method Detail

      • values

        public static LOFType[] values()
        Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
        for (LOFType c : LOFType.values())
            System.out.println(c);
        
        Returns:
        an array containing the constants of this enum type, in the order they are declared
      • valueOf

        public static LOFType valueOf​(String name)
        Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
        Parameters:
        name - the name of the enum constant to be returned.
        Returns:
        the enum constant with the specified name
        Throws:
        IllegalArgumentException - if this enum type has no constant with the specified name
        NullPointerException - if the argument is null
      • getName

        public String getName()
        Get name of the local orbital frame.
        Specified by:
        getName in interface LOF
        Returns:
        name of the local orbital frame
      • rotationFromLOF

        public Rotation rotationFromLOF​(LOFType fromLOF,
                                        PVCoordinates pv)
        Get the rotation from input local orbital frame to the instance.

        This rotation does not include any time derivatives. If first time derivatives (i.e. rotation rate) is needed as well, the full LOF.transformFromLOF(LOF, AbsoluteDate, PVCoordinates) method must be called and the complete rotation transform must be extracted from it.

        Parameters:
        fromLOF - input local orbital frame
        pv - position-velocity of the spacecraft in some inertial frame
        Returns:
        rotation from input local orbital frame to the instance
      • rotationFromLOF

        public <T extends CalculusFieldElement<T>> FieldRotation<T> rotationFromLOF​(Field<T> field,
                                                                                    LOFType fromLOF,
                                                                                    FieldPVCoordinates<T> pv)
        Get the rotation from input local orbital frame to the instance.

        This rotation does not include any time derivatives. If first time derivatives (i.e. rotation rate) is needed as well, the full LOF.transformFromLOF(LOF, FieldAbsoluteDate, FieldPVCoordinates) method must be called and the complete rotation transform must be extracted from it.

        Type Parameters:
        T - type of the field elements
        Parameters:
        field - field to which the elements belong
        fromLOF - input local orbital frame
        pv - position-velocity of the spacecraft in some inertial frame
        Returns:
        rotation from input local orbital frame to the instance
      • rotationFromInertial

        public Rotation rotationFromInertial​(AbsoluteDate date,
                                             PVCoordinates pv)
        Get the rotation from inertial frame to local orbital frame.

        This rotation does not include any time derivatives. If first time derivatives (i.e. rotation rate) is needed as well, the full transformFromInertial method must be called and the complete rotation transform must be extracted from it. It is unnecessary to use this method when dealing with LOFType, use rotationFromInertial(PVCoordinates) instead.

        Specified by:
        rotationFromInertial in interface LOF
        Parameters:
        date - date of the rotation
        pv - position-velocity of the spacecraft in some inertial frame
        Returns:
        rotation from inertial frame to local orbital frame
      • rotationFromInertial

        public abstract Rotation rotationFromInertial​(PVCoordinates pv)
        Get the rotation from inertial frame to local orbital frame.

        This rotation does not include any time derivatives. If first time derivatives (i.e. rotation rate) is needed as well, the full LOF.transformFromInertial(AbsoluteDate, PVCoordinates) method must be called and the complete rotation transform must be extracted from it.

        Parameters:
        pv - position-velocity of the spacecraft in some inertial frame
        Returns:
        rotation from inertial frame to local orbital frame
      • rotationFromInertial

        public abstract <T extends CalculusFieldElement<T>> FieldRotation<T> rotationFromInertial​(Field<T> field,
                                                                                                  FieldPVCoordinates<T> pv)
        Get the rotation from inertial frame to local orbital frame.

        This rotation does not include any time derivatives. If first time derivatives (i.e. rotation rate) is needed as well, the full LOF.transformFromInertial(FieldAbsoluteDate, FieldPVCoordinates) method must be called and the complete rotation transform must be extracted from it.

        Type Parameters:
        T - type of the field elements
        Parameters:
        field - field to which the elements belong
        pv - position-velocity of the spacecraft in some inertial frame
        Returns:
        rotation from inertial frame to local orbital frame
      • toOrbitRelativeFrame

        public abstract OrbitRelativeFrame toOrbitRelativeFrame()
        Convert current local orbital frame to CCSDS equivalent orbit relative frame when possible, null otherwise.
        Returns:
        CCSDS equivalent orbit relative frame when possible, null otherwise
        See Also:
        OrbitRelativeFrame