public class GroundMaskElevationDetector extends AbstractSignalPropagationDetector
This class finds elevation events (i.e. satellite raising and setting) with respect to an azimuth-elevation mask.
An azimuth-elevation mask defines the physical horizon for a local point, origin of some topocentric frame.
Azimuth is defined according to getAzimuth
.
Elevation is defined according to getElevation
.
The azimuth elevation mask must be supplied as a twodimensional array with multiples lines of pairs of azimuth-elevation angles. First row will be filled with azimuth values, second row with elevation values, as in the following snippet:
double[][] mask = { { FastMath.toRadians(0), FastMath.toRadians(10) }, { FastMath.toRadians(45), FastMath.toRadians(8) }, { FastMath.toRadians(90), FastMath.toRadians(6) }, { FastMath.toRadians(135), FastMath.toRadians(4) }, { FastMath.toRadians(180), FastMath.toRadians(5) }, { FastMath.toRadians(225), FastMath.toRadians(6) }, { FastMath.toRadians(270), FastMath.toRadians(8) }, { FastMath.toRadians(315), FastMath.toRadians(9) } };
No assumption is made on azimuth values and ordering. The only restraint is that only one elevation value can be associated to identical azimuths modulo 2PI.
The default implementation behavior is to continue
propagation at raising and
to stop
propagation at setting. This can be changed by using provided constructors.
This detector can takes into account signal propagation duration through
AbstractSignalPropagationDetector.setPropagationDelayType(PropagationDelayType, Frame)
(default is signal being instantaneous).
Propagator.addEventDetector(EventDetector)
,
Serialized FormAbstractSignalPropagationDetector.DatationChoice, AbstractSignalPropagationDetector.PropagationDelayType
EventDetector.Action
actionAtEntry, actionAtExit, DEFAULT_MAXCHECK, DEFAULT_MAXITER, DEFAULT_THRESHOLD, removeAtEntry, removeAtExit, shouldBeRemovedFlag
DECREASING, INCREASING, INCREASING_DECREASING
Constructor and Description |
---|
GroundMaskElevationDetector(double[][] azimelev,
TopocentricFrame topoIn)
Build a new azimuth-elevation detector.
|
GroundMaskElevationDetector(double[][] azimelev,
TopocentricFrame topoIn,
double maxCheck)
Build a new azimuth-elevation detector.
|
GroundMaskElevationDetector(double[][] azimelev,
TopocentricFrame topoIn,
double maxCheck,
double threshold)
Build a new azimuth-elevation detector.
|
GroundMaskElevationDetector(double[][] azimelev,
TopocentricFrame topoIn,
double maxCheck,
double threshold,
EventDetector.Action raising,
EventDetector.Action setting)
Build a new azimuth-elevation detector.
|
GroundMaskElevationDetector(double[][] azimelev,
TopocentricFrame topoIn,
double maxCheck,
double threshold,
EventDetector.Action raising,
EventDetector.Action setting,
boolean removeRaising,
boolean removeSetting)
Build a new azimuth-elevation detector.
|
Modifier and Type | Method and Description |
---|---|
EventDetector |
copy()
A copy of the detector.
|
EventDetector.Action |
eventOccurred(SpacecraftState s,
boolean increasing,
boolean forward)
Handle an azimuth-elevation event and choose what to do next.
|
double |
g(SpacecraftState state)
Compute the value of the switching function.
|
AbstractSignalPropagationDetector.DatationChoice |
getDatationChoice()
Specify if the datation choice corresponds to the emitter date or the receiver date.
|
double |
getElevation(double azimuth)
Get the interpolated elevation for a given azimuth according to the mask.
|
PVCoordinatesProvider |
getEmitter(SpacecraftState s)
Getter for the signal emitter.
|
PVCoordinatesProvider |
getReceiver(SpacecraftState s)
Getter for the signal receiver.
|
TopocentricFrame |
getTopocentricFrame()
Get the topocentric frame.
|
void |
setPropagationDelayType(AbstractSignalPropagationDetector.PropagationDelayType propagationDelayType,
Frame frame)
Setter for the propagation delay computation type.
|
getEpsilonSignalPropagation, getInertialFrame, getMaxIterSignalPropagation, getPropagationDelayType, getSignalEmissionDate, getSignalEmissionDate, getSignalReceptionDate, getSignalReceptionDate, setEpsilonSignalPropagation, setMaxIterSignalPropagation
filterEvent, getActionAtEntry, getActionAtExit, getMaxCheckInterval, getMaxIterationCount, getSlopeSelection, getThreshold, init, isRemoveAtEntry, isRemoveAtExit, logEventsOverTimeInterval, resetState, setMaxCheckInterval, setMaxIter, shouldBeRemoved
public GroundMaskElevationDetector(double[][] azimelev, TopocentricFrame topoIn)
This simple constructor takes default values for maximal checking interval ( AbstractDetector.DEFAULT_MAXCHECK
) and
convergence threshold (AbstractDetector.DEFAULT_THRESHOLD
).
azimelev
- azimuth-elevation mask (rad)topoIn
- topocentric frame in which elevation should be evaluatedIllegalArgumentException
- if azimuth-elevation mask is not supportedpublic GroundMaskElevationDetector(double[][] azimelev, TopocentricFrame topoIn, double maxCheck)
This constructor takes default value for convergence threshold (AbstractDetector.DEFAULT_THRESHOLD
).
The maximal interval between elevation checks should be smaller than the half duration of the minimal pass to handle, otherwise some short passes could be missed.
azimelev
- azimuth-elevation mask (rad)topoIn
- topocentric frame in which elevation should be evaluatedmaxCheck
- maximal checking interval (s)IllegalArgumentException
- if azimuth-elevation mask is not supportedpublic GroundMaskElevationDetector(double[][] azimelev, TopocentricFrame topoIn, double maxCheck, double threshold)
The maximal interval between elevation checks should be smaller than the half duration of the minimal pass to handle, otherwise some short passes could be missed.
The default implementation behavior is to continue
propagation at raising
and to stop
propagation at setting.
azimelev
- azimuth-elevation mask (rad)topoIn
- topocentric frame in which elevation should be evaluatedmaxCheck
- maximal checking interval (s)threshold
- convergence threshold (s)IllegalArgumentException
- if azimuth-elevation mask is not supportedpublic GroundMaskElevationDetector(double[][] azimelev, TopocentricFrame topoIn, double maxCheck, double threshold, EventDetector.Action raising, EventDetector.Action setting)
The maximal interval between elevation checks should be smaller than the half duration of the minimal pass to handle, otherwise some short passes could be missed.
azimelev
- azimuth-elevation mask (rad)topoIn
- topocentric frame in which elevation should be evaluatedmaxCheck
- maximal checking interval (s)threshold
- convergence threshold (s)raising
- action performed when propagation at raisingsetting
- action performed when propagation at settingIllegalArgumentException
- if azimuth-elevation mask is not supportedpublic GroundMaskElevationDetector(double[][] azimelev, TopocentricFrame topoIn, double maxCheck, double threshold, EventDetector.Action raising, EventDetector.Action setting, boolean removeRaising, boolean removeSetting)
The maximal interval between elevation checks should be smaller than the half duration of the minimal pass to handle, otherwise some short passes could be missed.
azimelev
- azimuth-elevation mask (rad)topoIn
- topocentric frame in which elevation should be evaluatedmaxCheck
- maximal checking interval (s)threshold
- convergence threshold (s)raising
- action performed when propagation at raisingsetting
- action performed when propagation at settingremoveRaising
- if detector should be removed at raisingremoveSetting
- if detector should be removed at settingIllegalArgumentException
- if azimuth-elevation mask is not supportedpublic TopocentricFrame getTopocentricFrame()
public EventDetector.Action eventOccurred(SpacecraftState s, boolean increasing, boolean forward) throws PatriusException
eventOccurred
in interface EventDetector
eventOccurred
in class AbstractDetector
s
- the current state information : date, kinematics, attitudeincreasing
- if true, the value of the switching function increases when times increases
around eventforward
- if true, the integration variable (time) increases during integration.PatriusException
- if some specific error occurspublic double g(SpacecraftState state) throws PatriusException
g
in interface EventDetector
g
in class AbstractDetector
state
- the current state information: date, kinematics, attitude for forces and events
computation, mass provider, and additional statesPatriusException
- if some specific error occurspublic double getElevation(double azimuth)
azimuth
- azimuth (rad)public void setPropagationDelayType(AbstractSignalPropagationDetector.PropagationDelayType propagationDelayType, Frame frame)
AbstractSignalPropagationDetector
setPropagationDelayType
in class AbstractSignalPropagationDetector
propagationDelayType
- Propagation delay type used in events computationframe
- Frame to use for signal propagation with delay (may be null if propagation delay type is
considered instantaneous). Warning: the usage of a pseudo inertial frame is tolerated, however it will
lead to some inaccuracies due to the non-invariance of the frame with respect to time. For this reason,
it is suggested to use the ICRF frame or a frame which is frozen with respect to the ICRF.public PVCoordinatesProvider getEmitter(SpacecraftState s)
getEmitter
in class AbstractSignalPropagationDetector
s
- the spacecraft state used by the detectorpublic PVCoordinatesProvider getReceiver(SpacecraftState s)
getReceiver
in class AbstractSignalPropagationDetector
s
- the spacecraft state used by the detectorpublic AbstractSignalPropagationDetector.DatationChoice getDatationChoice()
getDatationChoice
in class AbstractSignalPropagationDetector
public EventDetector copy()
The following attributes are not deeply copied:
TopocentricFrame
Copyright © 2023 CNES. All rights reserved.