Class TopocentricFrame

  • All Implemented Interfaces:
    Serializable, PVCoordinatesProvider

    public class TopocentricFrame
    extends Frame
    implements PVCoordinatesProvider
    Topocentric frame.

    Frame associated to a position near the surface of a body shape.

    The origin of the frame is at the defining geodetic point location, and the right-handed canonical trihedra is:

    • X axis in the local horizontal plane (normal to zenith direction) and following the local parallel towards East
    • Y axis in the horizontal plane (normal to zenith direction) and following the local meridian towards North
    • Z axis towards Zenith direction
    Author:
    Véronique Pommier-Maurussane
    See Also:
    Serialized Form
    • Constructor Detail

      • TopocentricFrame

        public TopocentricFrame​(BodyShape parentShape,
                                GeodeticPoint point,
                                String name)
        Simple constructor.
        Parameters:
        parentShape - body shape on which the local point is defined
        point - local surface point where topocentric frame is defined
        name - the string representation
    • Method Detail

      • getParentShape

        public BodyShape getParentShape()
        Get the body shape on which the local point is defined.
        Returns:
        body shape on which the local point is defined
      • getPoint

        public GeodeticPoint getPoint()
        Get the surface point defining the origin of the frame.
        Returns:
        surface point defining the origin of the frame
      • getCartesianPoint

        public Vector3D getCartesianPoint()
        Get the surface point defining the origin of the frame.
        Returns:
        surface point defining the origin of the frame in body frame
        Since:
        12.0
      • getPoint

        public <T extends CalculusFieldElement<T>> FieldGeodeticPoint<T> getPoint​(Field<T> field)
        Get the surface point defining the origin of the frame.
        Type Parameters:
        T - type of the elements
        Parameters:
        field - of the elements
        Returns:
        surface point defining the origin of the frame
        Since:
        9.3
      • getZenith

        public Vector3D getZenith()
        Get the zenith direction of topocentric frame, expressed in parent shape frame.

        The zenith direction is defined as the normal to local horizontal plane.

        Returns:
        unit vector in the zenith direction
        See Also:
        getNadir()
      • getNadir

        public Vector3D getNadir()
        Get the nadir direction of topocentric frame, expressed in parent shape frame.

        The nadir direction is the opposite of zenith direction.

        Returns:
        unit vector in the nadir direction
        See Also:
        getZenith()
      • getNorth

        public Vector3D getNorth()
        Get the north direction of topocentric frame, expressed in parent shape frame.

        The north direction is defined in the horizontal plane (normal to zenith direction) and following the local meridian.

        Returns:
        unit vector in the north direction
        See Also:
        getSouth()
      • getSouth

        public Vector3D getSouth()
        Get the south direction of topocentric frame, expressed in parent shape frame.

        The south direction is the opposite of north direction.

        Returns:
        unit vector in the south direction
        See Also:
        getNorth()
      • getEast

        public Vector3D getEast()
        Get the east direction of topocentric frame, expressed in parent shape frame.

        The east direction is defined in the horizontal plane in order to complete direct triangle (east, north, zenith).

        Returns:
        unit vector in the east direction
        See Also:
        getWest()
      • getWest

        public Vector3D getWest()
        Get the west direction of topocentric frame, expressed in parent shape frame.

        The west direction is the opposite of east direction.

        Returns:
        unit vector in the west direction
        See Also:
        getEast()
      • getTrackingCoordinates

        public TrackingCoordinates getTrackingCoordinates​(Vector3D extPoint,
                                                          Frame frame,
                                                          AbsoluteDate date)
        Get the tracking coordinates of a point with regards to the local point.
        Parameters:
        extPoint - point for which elevation shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        tracking coordinates of the point
        Since:
        12.0
      • getTrackingCoordinates

        public <T extends CalculusFieldElement<T>> FieldTrackingCoordinates<T> getTrackingCoordinates​(FieldVector3D<T> extPoint,
                                                                                                      Frame frame,
                                                                                                      FieldAbsoluteDate<T> date)
        Get the tracking coordinates of a point with regards to the local point.
        Type Parameters:
        T - type of the field elements
        Parameters:
        extPoint - point for which elevation shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        tracking coordinates of the point
        Since:
        12.0
      • getElevation

        public double getElevation​(Vector3D extPoint,
                                   Frame frame,
                                   AbsoluteDate date)
        Get the elevation of a point with regards to the local point.

        The elevation is the angle between the local horizontal and the direction from local point to given point.

        Parameters:
        extPoint - point for which elevation shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        elevation of the point
      • getElevation

        public <T extends CalculusFieldElement<T>> T getElevation​(FieldVector3D<T> extPoint,
                                                                  Frame frame,
                                                                  FieldAbsoluteDate<T> date)
        Get the elevation of a point with regards to the local point.

        The elevation is the angle between the local horizontal and the direction from local point to given point.

        Type Parameters:
        T - type of the elements
        Parameters:
        extPoint - point for which elevation shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        elevation of the point
        Since:
        9.3
      • getAzimuth

        public double getAzimuth​(Vector3D extPoint,
                                 Frame frame,
                                 AbsoluteDate date)
        Get the azimuth of a point with regards to the topocentric frame center point.

        The azimuth is the angle between the North direction at local point and the projection in local horizontal plane of the direction from local point to given point. Azimuth angles are counted clockwise, i.e positive towards the East.

        Parameters:
        extPoint - point for which elevation shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        azimuth of the point
      • getAzimuth

        public <T extends CalculusFieldElement<T>> T getAzimuth​(FieldVector3D<T> extPoint,
                                                                Frame frame,
                                                                FieldAbsoluteDate<T> date)
        Get the azimuth of a point with regards to the topocentric frame center point.

        The azimuth is the angle between the North direction at local point and the projection in local horizontal plane of the direction from local point to given point. Azimuth angles are counted clockwise, i.e positive towards the East.

        Type Parameters:
        T - type of the elements
        Parameters:
        extPoint - point for which elevation shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        azimuth of the point
        Since:
        9.3
      • getRange

        public double getRange​(Vector3D extPoint,
                               Frame frame,
                               AbsoluteDate date)
        Get the range of a point with regards to the topocentric frame center point.
        Parameters:
        extPoint - point for which range shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        range (distance) of the point
      • getRange

        public <T extends CalculusFieldElement<T>> T getRange​(FieldVector3D<T> extPoint,
                                                              Frame frame,
                                                              FieldAbsoluteDate<T> date)
        Get the range of a point with regards to the topocentric frame center point.
        Type Parameters:
        T - type of the elements
        Parameters:
        extPoint - point for which range shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        range (distance) of the point
        Since:
        9.3
      • getRangeRate

        public double getRangeRate​(PVCoordinates extPV,
                                   Frame frame,
                                   AbsoluteDate date)
        Get the range rate of a point with regards to the topocentric frame center point.
        Parameters:
        extPV - point/velocity for which range rate shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        range rate of the point (positive if point departs from frame)
      • getRangeRate

        public <T extends CalculusFieldElement<T>> T getRangeRate​(FieldPVCoordinates<T> extPV,
                                                                  Frame frame,
                                                                  FieldAbsoluteDate<T> date)
        Get the range rate of a point with regards to the topocentric frame center point.
        Type Parameters:
        T - type of the elements
        Parameters:
        extPV - point/velocity for which range rate shall be computed
        frame - frame in which the point is defined
        date - computation date
        Returns:
        range rate of the point (positive if point departs from frame)
        Since:
        9.3
      • computeLimitVisibilityPoint

        public GeodeticPoint computeLimitVisibilityPoint​(double radius,
                                                         double azimuth,
                                                         double elevation)
        Compute the limit visibility point for a satellite in a given direction.

        This method can be used to compute visibility circles around ground stations for example, using a simple loop on azimuth, with either a fixed elevation or an elevation that depends on azimuth to take ground masks into account.

        Parameters:
        radius - satellite distance to Earth center
        azimuth - pointing azimuth from station
        elevation - pointing elevation from station
        Returns:
        limit visibility point for the satellite
      • pointAtDistance

        public GeodeticPoint pointAtDistance​(double azimuth,
                                             double elevation,
                                             double distance)
        Compute the point observed from the station at some specified distance.
        Parameters:
        azimuth - pointing azimuth from station
        elevation - pointing elevation from station
        distance - distance to station
        Returns:
        observed point
      • getPosition

        public Vector3D getPosition​(AbsoluteDate date,
                                    Frame frame)
        Get the position of the body in the selected frame.
        Specified by:
        getPosition in interface PVCoordinatesProvider
        Parameters:
        date - current date
        frame - the frame where to define the position
        Returns:
        position of the body (m and)