Class AngularSeparationFromSatelliteDetector
- java.lang.Object
-
- org.orekit.propagation.events.AbstractDetector<AngularSeparationFromSatelliteDetector>
-
- org.orekit.propagation.events.AngularSeparationFromSatelliteDetector
-
- All Implemented Interfaces:
EventDetector
public class AngularSeparationFromSatelliteDetector extends AbstractDetector<AngularSeparationFromSatelliteDetector>
Detects when two moving objects come close to each other, as seen from spacecraft.The main use case for this detector is when the primary object is in fact a ground station, modeled as a
TopocentricFrame
and when the secondary is theSun
, for computing optical reflections.The default handler behavior is to
stop
propagation when objects enter the proximity zone. This can be changed by callingAbstractDetector.withHandler(EventHandler)
after construction.- Since:
- 11.0
- Author:
- Luc Maisonobe, Thomas Paulet
- See Also:
Propagator.addEventDetector(EventDetector)
-
-
Field Summary
-
Fields inherited from class org.orekit.propagation.events.AbstractDetector
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AngularSeparationFromSatelliteDetector(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, PVCoordinatesProvider primaryObject, PVCoordinatesProvider secondaryObject, double proximityAngle)
Protected constructor with full parameters.AngularSeparationFromSatelliteDetector(PVCoordinatesProvider primaryObject, PVCoordinatesProvider secondaryObject, double proximityAngle)
Build a new angular detachment detector.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected AngularSeparationFromSatelliteDetector
create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
Build a new instance.double
g(SpacecraftState s)
Compute the value of the switching function.PVCoordinatesProvider
getPrimaryObject()
Get the primaryObject, at the center of the proximity zone.double
getProximityAngle()
Get the proximity angle (rad).PVCoordinatesProvider
getSecondaryObject()
Get the secondaryObject.-
Methods inherited from class org.orekit.propagation.events.AbstractDetector
getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, init, isForward, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
-
-
-
-
Constructor Detail
-
AngularSeparationFromSatelliteDetector
public AngularSeparationFromSatelliteDetector(PVCoordinatesProvider primaryObject, PVCoordinatesProvider secondaryObject, double proximityAngle)
Build a new angular detachment detector.- Parameters:
primaryObject
- primaryObject, at the center of the proximity zonesecondaryObject
- secondaryObject, that may come close to the primaryObject as seen from the spacecraftproximityAngle
- proximity angle as seen from spacecraft, at which events are triggered (rad)
-
AngularSeparationFromSatelliteDetector
protected AngularSeparationFromSatelliteDetector(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, PVCoordinatesProvider primaryObject, PVCoordinatesProvider secondaryObject, double proximityAngle)
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:
maxCheck
- maximum checking intervalthreshold
- convergence threshold (s)maxIter
- maximum number of iterations in the event time searchhandler
- event handler to call at event occurrencesprimaryObject
- primaryObject at the center of the proximity zonesecondaryObject
- secondaryObject, that may come close to the primaryObject as seen from the spacecraftproximityAngle
- proximity angle as seen from secondaryObject, at which events are triggered (rad)
-
-
Method Detail
-
create
protected AngularSeparationFromSatelliteDetector create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
Build a new instance.- Specified by:
create
in classAbstractDetector<AngularSeparationFromSatelliteDetector>
- Parameters:
newMaxCheck
- maximum checking interval (s)newThreshold
- convergence threshold (s)newMaxIter
- maximum number of iterations in the event time searchnewHandler
- event handler to call at event occurrences- Returns:
- a new instance of the appropriate sub-type
-
getPrimaryObject
public PVCoordinatesProvider getPrimaryObject()
Get the primaryObject, at the center of the proximity zone.- Returns:
- primaryObject
-
getSecondaryObject
public PVCoordinatesProvider getSecondaryObject()
Get the secondaryObject.- Returns:
- secondaryObject
-
getProximityAngle
public double getProximityAngle()
Get the proximity angle (rad).- Returns:
- the proximity angle
-
g
public double g(SpacecraftState s)
Compute the value of the switching function.This function measures the angular separation between primary and secondary objects as seen from the spacecraft minus the proximity angle. It therefore triggers decreasing events when the secondary object enters the proximity zone and increasing events when it leaves the proximity zone.
No shadowing effect is taken into account, so this method is computed and may trigger events even when the secondary object is behind the primary. If such effects must be taken into account the detector must be associated with a
predicate filter
where thepredicate function
is based on eclipse conditions.- Specified by:
g
in interfaceEventDetector
- Specified by:
g
in classAbstractDetector<AngularSeparationFromSatelliteDetector>
- Parameters:
s
- the current state information: date, kinematics, attitude- Returns:
- value of the switching function
-
-