Class AngularSeparationDetector
- java.lang.Object
-
- org.orekit.propagation.events.AbstractDetector<AngularSeparationDetector>
-
- org.orekit.propagation.events.AngularSeparationDetector
-
- All Implemented Interfaces:
EventDetector
public class AngularSeparationDetector extends AbstractDetector<AngularSeparationDetector>
Detects when spacecraft comes close to a moving beacon, as seen from a moving observer.The main use case for this detector is when the observer is in fact a ground station, modeled as a
TopocentricFrame
and when the beacon is theSun
, for computing interferences for the telemetry link. Another similar case is when the beacon is another spacecraft, for interferences computation.The default handler behavior is to
stop
propagation when spacecraft enters the proximity zone. This can be changed by callingAbstractDetector.withHandler(EventHandler)
after construction.- Since:
- 8.0
- Author:
- Luc Maisonobe
- 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
AngularSeparationDetector(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, PVCoordinatesProvider beacon, PVCoordinatesProvider observer, double proximityAngle)
Protected constructor with full parameters.AngularSeparationDetector(PVCoordinatesProvider beacon, PVCoordinatesProvider observer, double proximityAngle)
Build a new angular separation detector.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected AngularSeparationDetector
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
getBeacon()
Get the beacon at the center of the proximity zone.PVCoordinatesProvider
getObserver()
Get the observer for the spacecraft.double
getProximityAngle()
Get the proximity angle (rad).-
Methods inherited from class org.orekit.propagation.events.AbstractDetector
getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, init, isForward, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
-
-
-
-
Constructor Detail
-
AngularSeparationDetector
public AngularSeparationDetector(PVCoordinatesProvider beacon, PVCoordinatesProvider observer, double proximityAngle)
Build a new angular separation detector.- Parameters:
beacon
- beacon at the center of the proximity zoneobserver
- observer for the spacecraft, that may also see the beacon at the same time if they are too close to each otherproximityAngle
- proximity angle as seen from observer, at which events are triggered (rad)
-
AngularSeparationDetector
protected AngularSeparationDetector(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, PVCoordinatesProvider beacon, PVCoordinatesProvider observer, 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 occurrencesbeacon
- beacon at the center of the proximity zoneobserver
- observer for the spacecraft, that may also see the beacon at the same time if they are too close to each otherproximityAngle
- proximity angle as seen from observer, at which events are triggered (rad)
-
-
Method Detail
-
create
protected AngularSeparationDetector create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
Build a new instance.- Specified by:
create
in classAbstractDetector<AngularSeparationDetector>
- 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
-
getBeacon
public PVCoordinatesProvider getBeacon()
Get the beacon at the center of the proximity zone.- Returns:
- beacon at the center of the proximity zone
-
getObserver
public PVCoordinatesProvider getObserver()
Get the observer for the spacecraft.- Returns:
- observer for the spacecraft
-
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 beacon and spacecraft as seen from the observer minus the proximity angle. It therefore triggers decreasing events when the spacecraft 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 spacecraft is below horizon for an observer which is a ground station. If such effects must be taken into account the detector must be associated with a
predicate filter
where thepredicate function
is based on elevation.- Specified by:
g
in interfaceEventDetector
- Specified by:
g
in classAbstractDetector<AngularSeparationDetector>
- Parameters:
s
- the current state information: date, kinematics, attitude- Returns:
- value of the switching function
-
-