Class CelestialBodyPointed

  • All Implemented Interfaces:
    AttitudeProvider, EventDetectorsProvider

    public class CelestialBodyPointed
    extends Object
    implements AttitudeProvider
    This class handles a celestial body pointed attitude provider.

    The celestial body pointed law is defined by two main elements:

    • a celestial body towards which some satellite axis is exactly aimed
    • a phasing reference defining the rotation around the pointing axis

    The celestial body implicitly defines two of the three degrees of freedom and the phasing reference defines the remaining degree of freedom. This definition can be represented as first aligning exactly the satellite pointing axis to the current direction of the celestial body, and then to find the rotation around this axis such that the satellite phasing axis is in the half-plane defined by a cut line on the pointing axis and containing the celestial phasing reference.

    In order for this definition to work, the user must ensure that the phasing reference is never aligned with the pointing reference. Since the pointed body moves as the date changes, this should be ensured regardless of the date. A simple way to do this for Sun, Moon or any planet pointing is to choose a phasing reference far from the ecliptic plane. Using Vector3D.PLUS_K, the equatorial pole, is perfect in these cases.

    Instances of this class are guaranteed to be immutable.

    Author:
    Luc Maisonobe
    • Constructor Detail

      • CelestialBodyPointed

        public CelestialBodyPointed​(Frame celestialFrame,
                                    ExtendedPositionProvider pointedBody,
                                    Vector3D phasingCel,
                                    Vector3D pointingSat,
                                    Vector3D phasingSat)
        Creates new instance.
        Parameters:
        celestialFrame - frame in which phasingCel is defined
        pointedBody - celestial body to point at
        phasingCel - phasing reference, in celestial frame
        pointingSat - satellite vector defining the pointing direction
        phasingSat - phasing reference, in satellite frame
    • Method Detail

      • getAttitude

        public Attitude getAttitude​(PVCoordinatesProvider pvProv,
                                    AbsoluteDate date,
                                    Frame frame)
        Compute the attitude corresponding to an orbital state.
        Specified by:
        getAttitude in interface AttitudeProvider
        Parameters:
        pvProv - local position-velocity provider around current date
        date - current date
        frame - reference frame from which attitude is computed
        Returns:
        attitude on the specified date and position-velocity state
      • getAttitudeRotation

        public Rotation getAttitudeRotation​(PVCoordinatesProvider pvProv,
                                            AbsoluteDate date,
                                            Frame frame)
        Compute the attitude-related rotation corresponding to an orbital state.
        Specified by:
        getAttitudeRotation in interface AttitudeProvider
        Parameters:
        pvProv - local position-velocity provider around current date
        date - current date
        frame - reference frame from which attitude is computed
        Returns:
        attitude-related rotation on the specified date and position-velocity state
      • getAttitude

        public <T extends CalculusFieldElement<T>> FieldAttitude<T> getAttitude​(FieldPVCoordinatesProvider<T> pvProv,
                                                                                FieldAbsoluteDate<T> date,
                                                                                Frame frame)
        Compute the attitude corresponding to an orbital state.
        Specified by:
        getAttitude in interface AttitudeProvider
        Type Parameters:
        T - type of the field elements
        Parameters:
        pvProv - local position-velocity provider around current date
        date - current date
        frame - reference frame from which attitude is computed
        Returns:
        attitude on the specified date and position-velocity state
      • getAttitudeRotation

        public <T extends CalculusFieldElement<T>> FieldRotation<T> getAttitudeRotation​(FieldPVCoordinatesProvider<T> pvProv,
                                                                                        FieldAbsoluteDate<T> date,
                                                                                        Frame frame)
        Compute the attitude-related rotation corresponding to an orbital state.
        Specified by:
        getAttitudeRotation in interface AttitudeProvider
        Type Parameters:
        T - type of the field elements
        Parameters:
        pvProv - local position-velocity provider around current date
        date - current date
        frame - reference frame from which attitude is computed
        Returns:
        rotation on the specified date and position-velocity state