Class Attitude

    • Constructor Detail

      • Attitude

        public Attitude​(Frame referenceFrame,
                        TimeStampedAngularCoordinates orientation)
        Creates a new instance.
        Parameters:
        referenceFrame - reference frame from which attitude is defined
        orientation - complete orientation between reference frame and satellite frame, including rotation rate
      • Attitude

        public Attitude​(AbsoluteDate date,
                        Frame referenceFrame,
                        AngularCoordinates orientation)
        Creates a new instance.
        Parameters:
        date - date at which attitude is defined
        referenceFrame - reference frame from which attitude is defined
        orientation - complete orientation between reference frame and satellite frame, including rotation rate
      • Attitude

        public Attitude​(AbsoluteDate date,
                        Frame referenceFrame,
                        org.hipparchus.geometry.euclidean.threed.Rotation attitude,
                        org.hipparchus.geometry.euclidean.threed.Vector3D spin,
                        org.hipparchus.geometry.euclidean.threed.Vector3D acceleration)
        Creates a new instance.
        Parameters:
        date - date at which attitude is defined
        referenceFrame - reference frame from which attitude is defined
        attitude - rotation between reference frame and satellite frame
        spin - satellite spin (axis and velocity, in satellite frame)
        acceleration - satellite rotation acceleration (in satellite frame)
    • Method Detail

      • shiftedBy

        public Attitude shiftedBy​(double dt)
        Get a time-shifted attitude.

        The state can be slightly shifted to close dates. This shift is based on a linear extrapolation for attitude taking the spin rate into account. It is not intended as a replacement for proper attitude propagation but should be sufficient for either small time shifts or coarse accuracy.

        Specified by:
        shiftedBy in interface TimeShiftable<Attitude>
        Parameters:
        dt - time shift in seconds
        Returns:
        a new attitude, shifted with respect to the instance (which is immutable)
      • withReferenceFrame

        public Attitude withReferenceFrame​(Frame newReferenceFrame)
        Get a similar attitude with a specific reference frame.

        If the instance reference frame is already the specified one, the instance itself is returned without any object creation. Otherwise, a new instance will be created with the specified reference frame. In this case, the required intermediate rotation and spin between the specified and the original reference frame will be inserted.

        Parameters:
        newReferenceFrame - desired reference frame for attitude
        Returns:
        an attitude that has the same orientation and motion as the instance, but guaranteed to have the specified reference frame
      • getDate

        public AbsoluteDate getDate()
        Get the date of attitude parameters.
        Specified by:
        getDate in interface TimeStamped
        Returns:
        date of the attitude parameters
      • getReferenceFrame

        public Frame getReferenceFrame()
        Get the reference frame.
        Returns:
        referenceFrame reference frame from which attitude is defined.
      • getRotation

        public org.hipparchus.geometry.euclidean.threed.Rotation getRotation()
        Get the attitude rotation.
        Returns:
        attitude satellite rotation from reference frame.
        See Also:
        getOrientation(), getSpin()
      • getSpin

        public org.hipparchus.geometry.euclidean.threed.Vector3D getSpin()
        Get the satellite spin.

        The spin vector is defined in satellite frame.

        Returns:
        spin satellite spin (axis and velocity).
        See Also:
        getOrientation(), getRotation()
      • getRotationAcceleration

        public org.hipparchus.geometry.euclidean.threed.Vector3D getRotationAcceleration()
        Get the satellite rotation acceleration.

        The rotation acceleration. vector is defined in satellite frame.

        Returns:
        rotation acceleration
        See Also:
        getOrientation(), getRotation()
      • interpolate

        public Attitude interpolate​(AbsoluteDate interpolationDate,
                                    Stream<Attitude> sample)
        Get an interpolated instance.

        Note that the state of the current instance may not be used in the interpolation process, only its type and non interpolable fields are used (for example central attraction coefficient or frame when interpolating orbits). The interpolable fields taken into account are taken only from the states of the sample points. So if the state of the instance must be used, the instance should be included in the sample points.

        Note that this method is designed for small samples only (say up to about 10-20 points) so it can be implemented using polynomial interpolation (typically Hermite interpolation). Using too much points may induce Runge's phenomenon and numerical problems (including NaN appearing).

        The interpolated instance is created by polynomial Hermite interpolation on Rodrigues vector ensuring rotation rate remains the exact derivative of rotation.

        As this implementation of interpolation is polynomial, it should be used only with small samples (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).

        Specified by:
        interpolate in interface TimeInterpolable<Attitude>
        Parameters:
        interpolationDate - interpolation date
        sample - sample points on which interpolation should be done
        Returns:
        a new instance, interpolated at specified date