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 EventDetector.Action#CONTINUE continue propagation at raising and
to EventDetector.Action#STOP 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.EventDatationType, AbstractSignalPropagationDetector.PropagationDelayTypeEventDetector.ActionactionAtEntry, actionAtExit, DEFAULT_MAXCHECK, DEFAULT_MAXITER, DEFAULT_THRESHOLD, removeAtEntry, removeAtExit, shouldBeRemovedFlagDECREASING, 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.
|
double |
getElevation(double azimuth)
Get the interpolated elevation for a given azimuth according to the mask.
|
TopocentricFrame |
getTopocentricFrame()
Get the topocentric frame.
|
getEmitter, getEpsilonSignalPropagation, getEventDatationType, getInertialFrame, getLinkTypeHandler, getMaxIterSignalPropagation, getOtherDate, getPropagationDelayType, getReceiver, getSignalEmissionDate, getSignalEmissionDate, getSignalReceptionDate, getSignalReceptionDate, setEpsilonSignalPropagation, setMaxIterSignalPropagation, setPropagationDelayTypefilterEvent, getActionAtEntry, getActionAtExit, getMaxCheckInterval, getMaxIterationCount, getSlopeSelection, getThreshold, init, isRemoveAtEntry, isRemoveAtExit, logEventsOverTimeInterval, resetState, setMaxCheckInterval, setMaxIter, shouldBeRemovedpublic 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 EventDetector.Action#CONTINUE continue propagation at raising
and to EventDetector.Action#STOP 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 EventDetectoreventOccurred in class AbstractDetectors - 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 EventDetectorg in class AbstractDetectorstate - 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 EventDetector copy()
The following attributes are not deeply copied:
TopocentricFrameCopyright © 2025 CNES. All rights reserved.