Class TopocentricFrame

java.lang.Object
org.orekit.frames.Frame
org.orekit.frames.TopocentricFrame
All Implemented Interfaces:
ExtendedPositionProvider, PVCoordinatesProvider

public class TopocentricFrame extends Frame implements ExtendedPositionProvider
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:
  • Constructor Details

    • 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 Details

    • 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

      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:
    • 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

      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:
    • 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

      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:
    • 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)
    • getPosition

      public <T extends CalculusFieldElement<T>> FieldVector3D<T> getPosition(FieldAbsoluteDate<T> date, Frame frame)
      Get the position in the selected frame.
      Specified by:
      getPosition in interface ExtendedPositionProvider
      Type Parameters:
      T - field type
      Parameters:
      date - current date
      frame - the frame where to define the position
      Returns:
      position
    • getVelocity

      public Vector3D getVelocity(AbsoluteDate date, Frame frame)
      Get the velocity of the body in the selected frame.
      Specified by:
      getVelocity in interface ExtendedPositionProvider
      Specified by:
      getVelocity in interface PVCoordinatesProvider
      Parameters:
      date - current date
      frame - the frame where to define the velocity
      Returns:
      velocity of the body (m/s)
    • getVelocity

      public <T extends CalculusFieldElement<T>> FieldVector3D<T> getVelocity(FieldAbsoluteDate<T> date, Frame frame)
      Get the velocity vector in the selected frame.
      Specified by:
      getVelocity in interface ExtendedPositionProvider
      Type Parameters:
      T - field type
      Parameters:
      date - current date
      frame - the frame where to define the velocity
      Returns:
      velocity
    • getPVCoordinates

      public TimeStampedPVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame)
      Get the PVCoordinates of the body in the selected frame.
      Specified by:
      getPVCoordinates in interface ExtendedPositionProvider
      Specified by:
      getPVCoordinates in interface PVCoordinatesProvider
      Parameters:
      date - current date
      frame - the frame where to define the position
      Returns:
      time-stamped position/velocity of the body (m and m/s)
    • getPVCoordinates

      public <T extends CalculusFieldElement<T>> TimeStampedFieldPVCoordinates<T> getPVCoordinates(FieldAbsoluteDate<T> date, Frame frame)
      Get the position-velocity-acceleration in the selected frame.
      Specified by:
      getPVCoordinates in interface ExtendedPositionProvider
      Type Parameters:
      T - field type
      Parameters:
      date - current date
      frame - the frame where to define the position
      Returns:
      position-velocity-acceleration vector
    • getTopocentricPosition

      public static Vector3D getTopocentricPosition(TrackingCoordinates coords)
      Get the topocentric position from TrackingCoordinates.
      Parameters:
      coords - The coordinates that are to be converted.
      Returns:
      The topocentric coordinates.
      Since:
      12.1
    • getTopocentricPosition

      public static <T extends CalculusFieldElement<T>> FieldVector3D<T> getTopocentricPosition(FieldTrackingCoordinates<T> coords)
      Get the topocentric position from FieldTrackingCoordinates.
      Type Parameters:
      T - Type of the field coordinates.
      Parameters:
      coords - The coordinates that are to be converted.
      Returns:
      The topocentric coordinates.
      Since:
      12.1