Interface BodyShape

All Known Subinterfaces:
EarthShape
All Known Implementing Classes:
Geoid, OneAxisEllipsoid, ReferenceEllipsoid

public interface BodyShape
Interface representing the rigid surface shape of a natural body.

The shape is not provided as a single complete geometric model, but single points can be queried (getIntersectionPoint(org.hipparchus.geometry.euclidean.threed.Line, org.hipparchus.geometry.euclidean.threed.Vector3D, org.orekit.frames.Frame, org.orekit.time.AbsoluteDate)).

Author:
Luc Maisonobe
  • Method Details

    • getBodyFrame

      Frame getBodyFrame()
      Get body frame related to body shape.
      Returns:
      body frame related to body shape
    • getIntersectionPoint

      GeodeticPoint getIntersectionPoint(Line line, Vector3D close, Frame frame, AbsoluteDate date)
      Get the intersection point of a line with the surface of the body.

      A line may have several intersection points with a closed surface (we consider the one point case as a degenerated two points case). The close parameter is used to select which of these points should be returned. The selected point is the one that is closest to the close point.

      Parameters:
      line - test line (may intersect the body or not)
      close - point used for intersections selection
      frame - frame in which line is expressed
      date - date of the line in given frame
      Returns:
      intersection point at altitude zero or null if the line does not intersect the surface
    • getIntersectionPoint

      <T extends CalculusFieldElement<T>> FieldGeodeticPoint<T> getIntersectionPoint(FieldLine<T> line, FieldVector3D<T> close, Frame frame, FieldAbsoluteDate<T> date)
      Get the intersection point of a line with the surface of the body.

      A line may have several intersection points with a closed surface (we consider the one point case as a degenerated two points case). The close parameter is used to select which of these points should be returned. The selected point is the one that is closest to the close point.

      Type Parameters:
      T - type of the field elements
      Parameters:
      line - test line (may intersect the body or not)
      close - point used for intersections selection
      frame - frame in which line is expressed
      date - date of the line in given frame
      Returns:
      intersection point at altitude zero or null if the line does not intersect the surface
      Since:
      9.0
    • projectToGround

      Vector3D projectToGround(Vector3D point, AbsoluteDate date, Frame frame)
      Project a point to the ground.
      Parameters:
      point - point to project
      date - current date
      frame - frame in which moving point is expressed
      Returns:
      ground point exactly at the local vertical of specified point, in the same frame as specified point
      Since:
      7.0
      See Also:
    • projectToGround

      Project a moving point to the ground.
      Parameters:
      pv - moving point
      frame - frame in which moving point is expressed
      Returns:
      ground point exactly at the local vertical of specified point, in the same frame as specified point
      Since:
      7.0
      See Also:
    • transform

      GeodeticPoint transform(Vector3D point, Frame frame, AbsoluteDate date)
      Transform a Cartesian point to a surface-relative point.
      Parameters:
      point - Cartesian point
      frame - frame in which Cartesian point is expressed
      date - date of the computation (used for frames conversions)
      Returns:
      point at the same location but as a surface-relative point
    • transform

      <T extends CalculusFieldElement<T>> FieldGeodeticPoint<T> transform(FieldVector3D<T> point, Frame frame, FieldAbsoluteDate<T> date)
      Transform a Cartesian point to a surface-relative point.
      Type Parameters:
      T - type of the filed elements
      Parameters:
      point - Cartesian point
      frame - frame in which Cartesian point is expressed
      date - date of the computation (used for frames conversions)
      Returns:
      point at the same location but as a surface-relative point
      Since:
      9.0
    • getLongitude

      default double getLongitude(Vector3D point, Frame frame, AbsoluteDate date)
      Computes the longitude of a surface-relative point. This has its own method for performance with symmetrical bodies around the Z axis.
      Parameters:
      point - Cartesian point
      frame - frame in which Cartesian point is expressed
      date - date of the computation (used for frames conversions)
      Returns:
      longitude of surface-relative point
      Since:
      14.0
    • getLongitude

      default <T extends CalculusFieldElement<T>> T getLongitude(FieldVector3D<T> point, Frame frame, FieldAbsoluteDate<T> date)
      Computes the longitude of a surface-relative point. This has its own method for performance with symmetrical bodies around the Z axis.
      Type Parameters:
      T - field type
      Parameters:
      point - Cartesian point
      frame - frame in which Cartesian point is expressed
      date - date of the computation (used for frames conversions)
      Returns:
      longitude of surface-relative point
      Since:
      14.0
    • transform

      Vector3D transform(GeodeticPoint point)
      Transform a surface-relative point to a Cartesian point.
      Parameters:
      point - surface-relative point
      Returns:
      point at the same location but as a Cartesian point
    • transform

      <T extends CalculusFieldElement<T>> FieldVector3D<T> transform(FieldGeodeticPoint<T> point)
      Transform a surface-relative point to a Cartesian point.
      Type Parameters:
      T - type of the filed elements
      Parameters:
      point - surface-relative point
      Returns:
      point at the same location but as a Cartesian point
      Since:
      9.0