fr.cnes.sirius.patrius.events
Class CentralBodyMaskCircularFOVDetector

java.lang.Object
  extended by org.orekit.propagation.events.AbstractDetector
      extended by fr.cnes.sirius.patrius.events.CentralBodyMaskCircularFOVDetector
All Implemented Interfaces:
Serializable, EventDetector

public class CentralBodyMaskCircularFOVDetector
extends AbstractDetector

Finder for target entry/exit events with respect to a satellite sensor FOV defined by a vector3D giving the direction in satellite frame and taking into account masking from the central body

This class handles fields of view with a circular boundary.

This class handles central body as a ellipsoid.

The default implementation behaviour is to stop propagation when the target is in the field of view outside of eclipse. This can be changed by using one of the provided constructors.

Since:
1.3
Version:
$Id: CentralBodyMaskCircularFOVDetector.java 17586 2017-05-10 13:29:16Z bignon $
Author:
chabaudp
See Also:
Propagator.addEventDetector(org.orekit.propagation.events.EventDetector), GeometricBodyShape, IEllipsoid, EclipseDetector, CircularFieldOfViewDetector, Serialized Form
Concurrency :
not thread-safe
Concurrency comment :
one attribute not thread-safe and one conditionally thread-safe

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.orekit.propagation.events.EventDetector
EventDetector.Action
 
Field Summary
 
Fields inherited from class org.orekit.propagation.events.AbstractDetector
DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
 
Fields inherited from interface org.orekit.propagation.events.EventDetector
DECREASING, INCREASING, INCREASING_DECREASING
 
Constructor Summary
CentralBodyMaskCircularFOVDetector(PVCoordinatesProvider occultedBody, double occultedBodyRadius, GeometricBodyShape occultingBody, boolean totalEclipseFlag, Vector3D center, double halfAperture)
          Constructor with default maxcheck and default threshold, creating a circularFOVDetector and an EllipsoidEclipseDetector
CentralBodyMaskCircularFOVDetector(PVCoordinatesProvider occultedBody, double occultedBodyRadius, GeometricBodyShape occultingBody, boolean totalEclipseFlag, Vector3D center, double halfAperture, double maxCheck, double threshold)
          Constructor with user maxcheck and threshold creating a circularFOVDetector and an EllipsoidEclipseDetector
CentralBodyMaskCircularFOVDetector(PVCoordinatesProvider occultedBody, double occultedBodyRadius, GeometricBodyShape occultingBody, boolean totalEclipseFlag, Vector3D center, double halfAperture, double maxCheck, double threshold, EventDetector.Action action)
          Constructor with user maxcheck and threshold creating a circularFOVDetector and an EllipsoidEclipseDetector
CentralBodyMaskCircularFOVDetector(PVCoordinatesProvider occultedBody, double occultedBodyRadius, GeometricBodyShape occultingBody, boolean totalEclipseFlag, Vector3D center, double halfAperture, double maxCheck, double threshold, EventDetector.Action action, boolean remove)
          Constructor with user maxcheck and threshold creating a circularFOVDetector and an EllipsoidEclipseDetector
 
Method Summary
 EventDetector.Action eventOccurred(SpacecraftState s, boolean increasing, boolean forward)
          Handle a target in field of view outside eclipse reaching event and choose what to do next.
 double g(SpacecraftState s)
          The switching function is the minimum value between the eclipse detector g function and the circularFOVDetector
 CircularFieldOfViewDetector getCircularFOVDetector()
          Get the circular FOV detector.
 EclipseDetector getEclipseDetector()
          Get the eclipse detector.
 boolean shouldBeRemoved()
          This method is called after EventDetector.eventOccurred(org.orekit.propagation.SpacecraftState, boolean, boolean) has been triggered.
 
Methods inherited from class org.orekit.propagation.events.AbstractDetector
getMaxCheckInterval, getMaxIterationCount, getSlopeSelection, getThreshold, init, resetState
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CentralBodyMaskCircularFOVDetector

public CentralBodyMaskCircularFOVDetector(PVCoordinatesProvider occultedBody,
                                          double occultedBodyRadius,
                                          GeometricBodyShape occultingBody,
                                          boolean totalEclipseFlag,
                                          Vector3D center,
                                          double halfAperture,
                                          double maxCheck,
                                          double threshold)
Constructor with user maxcheck and threshold creating a circularFOVDetector and an EllipsoidEclipseDetector

The default implementation behaviour is to stop propagation when the target is visible.

Parameters:
occultedBody - the target to detect in field of view outside of eclipse
occultedBodyRadius - the radius of this target
occultingBody - the ellipsoid body shape of the central body potentially occulting the target
totalEclipseFlag - true to detect only when the target is fully visible, false to detect also when the target is partially visible
center - the sight axis direction of the field of view in satellite frame
halfAperture - the half aperture of the field of view
maxCheck - maximum check (see AbstractDetector)
threshold - threshold (see AbstractDetector)
Since:
1.3
See Also:
EclipseDetector, CircularFieldOfViewDetector

CentralBodyMaskCircularFOVDetector

public CentralBodyMaskCircularFOVDetector(PVCoordinatesProvider occultedBody,
                                          double occultedBodyRadius,
                                          GeometricBodyShape occultingBody,
                                          boolean totalEclipseFlag,
                                          Vector3D center,
                                          double halfAperture,
                                          double maxCheck,
                                          double threshold,
                                          EventDetector.Action action)
Constructor with user maxcheck and threshold creating a circularFOVDetector and an EllipsoidEclipseDetector

Parameters:
occultedBody - the target to detect in field of view outside of eclipse
occultedBodyRadius - the radius of this target
occultingBody - the ellipsoid body shape of the central body potentially occulting the target
totalEclipseFlag - true to detect only when the target is fully visible, false to detect also when the target is partially visible
center - the sight axis direction of the field of view in satellite frame
halfAperture - the half aperture of the field of view
maxCheck - maximum check (see AbstractDetector)
threshold - threshold (see AbstractDetector)
action - action performed at circularFOV detection
Since:
1.3
See Also:
EclipseDetector, CircularFieldOfViewDetector

CentralBodyMaskCircularFOVDetector

public CentralBodyMaskCircularFOVDetector(PVCoordinatesProvider occultedBody,
                                          double occultedBodyRadius,
                                          GeometricBodyShape occultingBody,
                                          boolean totalEclipseFlag,
                                          Vector3D center,
                                          double halfAperture,
                                          double maxCheck,
                                          double threshold,
                                          EventDetector.Action action,
                                          boolean remove)
Constructor with user maxcheck and threshold creating a circularFOVDetector and an EllipsoidEclipseDetector

Parameters:
occultedBody - the target to detect in field of view outside of eclipse
occultedBodyRadius - the radius of this target
occultingBody - the ellipsoid body shape of the central body potentially occulting the target
totalEclipseFlag - true to detect only when the target is fully visible, false to detect also when the target is partially visible
center - the sight axis direction of the field of view in satellite frame
halfAperture - the half aperture of the field of view
maxCheck - maximum check (see AbstractDetector)
threshold - threshold (see AbstractDetector)
action - action performed at circularFOV detection
remove - if detector should be removed
Since:
3.1
See Also:
EclipseDetector, CircularFieldOfViewDetector

CentralBodyMaskCircularFOVDetector

public CentralBodyMaskCircularFOVDetector(PVCoordinatesProvider occultedBody,
                                          double occultedBodyRadius,
                                          GeometricBodyShape occultingBody,
                                          boolean totalEclipseFlag,
                                          Vector3D center,
                                          double halfAperture)
Constructor with default maxcheck and default threshold, creating a circularFOVDetector and an EllipsoidEclipseDetector

Parameters:
occultedBody - the target to detect in field of view outside of eclipse
occultedBodyRadius - the radius of this target
occultingBody - the ellipsoid body shape of the central body potentially occulting the target
totalEclipseFlag - true to detect only when the target is fully visible, false to detect also when the target is partially visible
center - the sight axis direction of the field of view in satellite frame
halfAperture - the half aperture of the field of view
Since:
1.3
See Also:
EclipseDetector, CircularFieldOfViewDetector
Method Detail

shouldBeRemoved

public boolean shouldBeRemoved()
This method is called after EventDetector.eventOccurred(org.orekit.propagation.SpacecraftState, boolean, boolean) has been triggered. It returns true if the current detector should be removed after first event detection. WARNING: this method can be called only once a event has been triggered. Before, the value is not available.

Specified by:
shouldBeRemoved in interface EventDetector
Specified by:
shouldBeRemoved in class AbstractDetector
Returns:
true if the current detector should be removed after first event detection

eventOccurred

public EventDetector.Action eventOccurred(SpacecraftState s,
                                          boolean increasing,
                                          boolean forward)
                                   throws OrekitException
Handle a target in field of view outside eclipse reaching event and choose what to do next.

Specified by:
eventOccurred in interface EventDetector
Specified by:
eventOccurred in class AbstractDetector
Parameters:
s - the current state of propagation
increasing - if true, the value of the switching function increases when times increases around event
forward - if true, the integration variable (time) increases during integration.
Returns:
the action performed when the expected circularFOV is reached
Throws:
OrekitException - if some specific error occurs

g

public double g(SpacecraftState s)
         throws OrekitException
The switching function is the minimum value between the eclipse detector g function and the circularFOVDetector

Specified by:
g in interface EventDetector
Specified by:
g in class AbstractDetector
Parameters:
s - the current state of propagation
Returns:
value of the switching function
Throws:
OrekitException - if some specific error occurs
See Also:
AbstractDetector.g(org.orekit.propagation.SpacecraftState)

getEclipseDetector

public EclipseDetector getEclipseDetector()
Get the eclipse detector.

Returns:
the eclipse detector taking into account ellipsoid body shape

getCircularFOVDetector

public CircularFieldOfViewDetector getCircularFOVDetector()
Get the circular FOV detector.

Returns:
The circular field of view detector


Copyright © 2017 CNES. All Rights Reserved.