Class GeographicZoneDetector

java.lang.Object
org.orekit.propagation.events.AbstractDetector<GeographicZoneDetector>
org.orekit.propagation.events.GeographicZoneDetector
All Implemented Interfaces:
EventDetector

public class GeographicZoneDetector extends AbstractDetector<GeographicZoneDetector>
Detector for entry/exit of a zone defined by geographic boundaries.

This detector identifies when a spacecraft crosses boundaries of general shapes defined on the surface of the globe. Typical shapes of interest can be countries, land masses or physical areas like the south atlantic anomaly. Shapes can be arbitrarily complicated: convex or non-convex, in one piece or several non-connected islands, they can include poles, they can have holes like the Caspian Sea (this would be a hole only if one is interested in land masses, of course). Complex shapes involve of course more computing time than simple shapes.

Since:
6.2
Author:
Luc Maisonobe
See Also:
  • Constructor Details

    • GeographicZoneDetector

      public GeographicZoneDetector(BodyShape body, SphericalPolygonsSet zone, double margin)
      Build a new detector.

      The new instance uses default values for maximal checking interval (AbstractDetector.DEFAULT_MAX_CHECK) and convergence threshold (AbstractDetector.DEFAULT_THRESHOLD).

      Parameters:
      body - body on which the geographic zone is defined
      zone - geographic zone to consider
      margin - angular margin to apply to the zone
    • GeographicZoneDetector

      public GeographicZoneDetector(double maxCheck, double threshold, BodyShape body, SphericalPolygonsSet zone, double margin)
      Build a detector.
      Parameters:
      maxCheck - maximal checking interval (s)
      threshold - convergence threshold (s)
      body - body on which the geographic zone is defined
      zone - geographic zone to consider
      margin - angular margin to apply to the zone
    • GeographicZoneDetector

      protected GeographicZoneDetector(EventDetectionSettings detectionSettings, EventHandler handler, BodyShape body, SphericalPolygonsSet zone, EnclosingBall<Sphere2D,S2Point> cap, double margin)
      Protected constructor with full parameters.

      This constructor is not public as users are expected to use the builder API with the various withXxx() methods to set up the instance in a readable manner without using a huge amount of parameters.

      Parameters:
      detectionSettings - event detection settings
      handler - event handler to call at event occurrences
      body - body on which the geographic zone is defined
      zone - geographic zone to consider
      cap - spherical cap surrounding the zone
      margin - angular margin to apply to the zone
      Since:
      13.0
  • Method Details

    • create

      protected GeographicZoneDetector create(EventDetectionSettings detectionSettings, EventHandler newHandler)
      Build a new instance.
      Specified by:
      create in class AbstractDetector<GeographicZoneDetector>
      Parameters:
      detectionSettings - detection settings
      newHandler - event handler to call at event occurrences
      Returns:
      a new instance of the appropriate sub-type
    • withMargin

      public GeographicZoneDetector withMargin(double newMargin)
      Setup the detector margin.
      Parameters:
      newMargin - angular margin to apply to the zone
      Returns:
      a new detector with updated configuration (the instance is not changed)
    • getBody

      public BodyShape getBody()
      Get the body on which the geographic zone is defined.
      Returns:
      body on which the geographic zone is defined
    • getZone

      public SphericalPolygonsSet getZone()
      Get the geographic zone.
      Returns:
      the geographic zone
    • getMargin

      public double getMargin()
      Get the angular margin to apply (radians).
      Returns:
      the angular margin to apply (radians)
    • g

      public double g(SpacecraftState s)
      Compute the value of the detection function.

      The value is the signed distance to boundary, minus the margin. It is positive if the spacecraft is outside of the zone and negative if it is inside.

      Parameters:
      s - the current state information: date, kinematics, attitude
      Returns:
      signed distance to boundary minus the margin