public class EarthZoneDetector extends AbstractDetector
The default implementation behaviour is to
stop
propagation when the spacecraft
enters the zone and to continue
when
it leaves it. This can be changed by using one of the provided constructors.
Beware of the MaxCheck and Threshold parameters : if the zone is complex and the MaxCheck too large, the event detection could fail, because it would not manage to converge. To compute an approximative event even if the zone is precise and complex, set a large enough Threshold.
EventDetector
,
PyramidalField
,
Serialized FormEventDetector.Action
actionAtEntry, actionAtExit, DEFAULT_MAXCHECK, DEFAULT_MAXITER, DEFAULT_THRESHOLD, removeAtEntry, removeAtExit, shouldBeRemovedFlag
DECREASING, INCREASING, INCREASING_DECREASING
Constructor and Description |
---|
EarthZoneDetector(EllipsoidBodyShape centralBody,
List<double[][]> zonesPoints)
Constructor for the earth zones entering detector with default maxCheck and convergence threshold.
|
EarthZoneDetector(EllipsoidBodyShape centralBody,
List<double[][]> zonesPoints,
double maxCheck,
double threshold)
Constructor for the earth zones entering detector.
|
EarthZoneDetector(EllipsoidBodyShape centralBody,
List<double[][]> zonesPoints,
double maxCheck,
double threshold,
EventDetector.Action entry,
EventDetector.Action exit)
Constructor for the earth zones entering detector.
|
EarthZoneDetector(EllipsoidBodyShape centralBody,
List<double[][]> zonesPoints,
double maxCheck,
double threshold,
EventDetector.Action entry,
EventDetector.Action exit,
boolean removeEntry,
boolean removeExit)
Constructor for the earth zones entering detector.
|
EarthZoneDetector(List<IFieldOfView> fieldsIn,
EllipsoidBodyShape centralBody,
double maxCheck,
double threshold,
EventDetector.Action entry,
EventDetector.Action exit,
boolean removeEntry,
boolean removeExit)
Constructor for the earth zones entering detector.
|
EarthZoneDetector(List<Vector3D[]> directionsList,
Frame bodyFrame)
Constructor for the earth zones entering detector with default maxCheck and convergence threshold.
|
EarthZoneDetector(List<Vector3D[]> directionsList,
Frame bodyFrame,
double maxCheck,
double threshold)
Constructor for the earth zones entering detector.
|
EarthZoneDetector(List<Vector3D[]> directionsList,
Frame bodyFrame,
double maxCheck,
double threshold,
EventDetector.Action entry,
EventDetector.Action exit)
Constructor for the earth zones entering detector.
|
EarthZoneDetector(List<Vector3D[]> directionsList,
Frame bodyFrame,
double maxCheck,
double threshold,
EventDetector.Action entry,
EventDetector.Action exit,
boolean removeEntry,
boolean removeExit)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
EventDetector |
copy()
A copy of the detector.
|
EventDetector.Action |
eventOccurred(SpacecraftState s,
boolean increasing,
boolean forward)
Handle the event and choose what to do next.
|
double |
g(SpacecraftState s)
Compute the value of the switching function.
|
BodyShape |
getCentralBodyShape()
Getter for the central body shape.
|
List<IFieldOfView> |
getFOV()
Getter for FOV list.
|
Frame |
getFrame()
Getter for the frame.
|
void |
init(SpacecraftState s0,
AbsoluteDate t)
Initialize event handler at the start of a propagation.
|
filterEvent, getActionAtEntry, getActionAtExit, getMaxCheckInterval, getMaxIterationCount, getSlopeSelection, getThreshold, isRemoveAtEntry, isRemoveAtExit, logEventsOverTimeInterval, resetState, setMaxCheckInterval, setMaxIter, shouldBeRemoved
public EarthZoneDetector(EllipsoidBodyShape centralBody, List<double[][]> zonesPoints)
The zones are defined by an array of geodetic points. The points must be given in the right order : from the point i to the point i + 1, if the associated vector from the center of the earth are v(i) and v(i + 1), the inside of the zone is on the side of the positive cross vector from the earth center v(i) * v(i+1).
The arcs defined by two consecutive points shall not cross each other. Two Consecutive points shall not be too close. A point shall not be exactly on the arc defined by two consecutive others.
Using that constructor, the switching function will test the spacecraft's nadir point to get the angular distance to the border of the zones.
centralBody
- the central bodyzonesPoints
- The zones : for each of the list, the points that define the zone is given as an array of {latitude,
longitude}public EarthZoneDetector(EllipsoidBodyShape centralBody, List<double[][]> zonesPoints, double maxCheck, double threshold)
The zones are defined by an array of geodetic points. The points must be given in the right order : from the point i to the point i + 1, if the associated vector from the center of the earth are v(i) and v(i + 1), the inside of the zone is on the side of the positive cross vector from the earth center v(i) * v(i+1).
The arcs defined by two consecutive points shall not cross each other. Two Consecutive points shall not be too close. A point shall not be exactly on the arc defined by two consecutive others.
Using that constructor, the switching function will test the spacecraft's nadir point to get the angular distance to the border of the zones.
The default implementation behaviour is to
stop
propagation when the spacecraft
point enters the zone and to continue
when it leaves it.
centralBody
- the central bodyzonesPoints
- The zones : for each of the list, the points that define the zone is given as an array of {latitude,
longitude}maxCheck
- maximum check (see AbstractDetector
)threshold
- convergence threshold (see AbstractDetector
)public EarthZoneDetector(EllipsoidBodyShape centralBody, List<double[][]> zonesPoints, double maxCheck, double threshold, EventDetector.Action entry, EventDetector.Action exit)
The zones are defined by an array of geodetic points. The points must be given in the right order : from the point i to the point i + 1, if the associated vector from the center of the earth are v(i) and v(i + 1), the inside of the zone is on the side of the positive cross vector from the earth center v(i) * v(i+1).
The arcs defined by two consecutive points shall not cross each other. Two Consecutive points shall not be too close. A point shall not be exactly on the arc defined by two consecutive others.
Using that constructor, the switching function will test the spacecraft's nadir point to get the angular distance to the border of the zones.
centralBody
- the central bodyzonesPoints
- The zones : for each of the list, the points that define the zone is given as an array of {latitude,
longitude}maxCheck
- maximum check (see AbstractDetector
)threshold
- convergence threshold (see AbstractDetector
)entry
- when the spacecraft point enters the zone.exit
- when the spacecraft point leave the zone.public EarthZoneDetector(EllipsoidBodyShape centralBody, List<double[][]> zonesPoints, double maxCheck, double threshold, EventDetector.Action entry, EventDetector.Action exit, boolean removeEntry, boolean removeExit)
The zones are defined by an array of geodetic points. The points must be given in the right order : from the point i to the point i + 1, if the associated vector from the center of the earth are v(i) and v(i + 1), the inside of the zone is on the side of the positive cross vector from the earth center v(i) * v(i+1).
The arcs defined by two consecutive points shall not cross each other. Two Consecutive points shall not be too close. A point shall not be exactly on the arc defined by two consecutive others.
Using that constructor, the switching function will test the spacecraft's nadir point to get the angular distance to the border of the zones.
centralBody
- the central bodyzonesPoints
- The zones : for each of the list, the points that define the zone is given as an array of {latitude,
longitude}maxCheck
- maximum check (see AbstractDetector
)threshold
- convergence threshold (see AbstractDetector
)entry
- when the spacecraft point enters the zone.exit
- when the spacecraft point leave the zone.removeEntry
- when the spacecraft point enters the zone.removeExit
- when the spacecraft point leaves the zone.public EarthZoneDetector(List<IFieldOfView> fieldsIn, EllipsoidBodyShape centralBody, double maxCheck, double threshold, EventDetector.Action entry, EventDetector.Action exit, boolean removeEntry, boolean removeExit)
The zones are defined by an array of geodetic points. The points must be given in the right order : from the point i to the point i + 1, if the associated vector from the center of the earth are v(i) and v(i + 1), the inside of the zone is on the side of the positive cross vector from the earth center v(i) * v(i+1).
The arcs defined by two consecutive points shall not cross each other. Two Consecutive points shall not be too close. A point shall not be exactly on the arc defined by two consecutive others.
Using that constructor, the switching function will test the spacecraft's nadir point to get the angular distance to the border of the zones.
centralBody
- the central bodyfieldsIn
- list of fields of viewmaxCheck
- maximum check (see AbstractDetector
)threshold
- convergence threshold (see AbstractDetector
)entry
- when the spacecraft point enters the zone.exit
- when the spacecraft point leave the zone.removeEntry
- when the spacecraft point enters the zone.removeExit
- when the spacecraft point leaves the zone.public EarthZoneDetector(List<Vector3D[]> directionsList, Frame bodyFrame)
The zones are defined by an array of points of space expressed in the earth attached frame. The points must be given in the right order : from the vector i to the point i + 1, the inside of the zone is on the side of the positive cross vector from the earth center v(i) * v(i+1).
The arcs defined by two consecutive points shall not cross each other. Two Consecutive points shall not be too close. A point shall not be exactly on the arc defined by two consecutive others.
Using that constructor, the switching function will test the spacecraft position itself to get the angular distance to the border of the zones.
directionsList
- The zones : for each of the list, the directions from the earth center define the zonebodyFrame
- the frame attached to the earthpublic EarthZoneDetector(List<Vector3D[]> directionsList, Frame bodyFrame, double maxCheck, double threshold)
The zones are defined by an array of points of space expressed in the earth attached frame. The points must be given in the right order : from the vector i to the point i + 1, the inside of the zone is on the side of the positive cross vector from the earth center v(i) * v(i+1)..
The arcs defined by two consecutive points shall not cross each other. Two Consecutive points shall not be too close. A point shall not be exactly on the arc defined by two consecutive others.
Using that constructor, the switching function will test the spacecraft position itself to get the angular distance to the border of the zones.
The default implementation behaviour is to
stop
propagation when the spacecraft
point enters the zone and to continue when it leaves it.
directionsList
- The zones : for each of the list, the directions from the earth center define the zonebodyFrame
- the frame attached to the earthmaxCheck
- maximum check (see AbstractDetector
)threshold
- convergence threshold (see AbstractDetector
)public EarthZoneDetector(List<Vector3D[]> directionsList, Frame bodyFrame, double maxCheck, double threshold, EventDetector.Action entry, EventDetector.Action exit)
The zones are defined by an array of points of space expressed in the Earth attached frame. The points must be given in the right order : from the vector i to the point i + 1, the inside of the zone is on the side of the positive cross vector from the earth center v(i) * v(i+1)..
The arcs defined by two consecutive points shall not cross each other. Two Consecutive points shall not be too close. A point shall not be exactly on the arc defined by two consecutive others.
Using that constructor, the switching function will test the spacecraft position itself to get the angular distance to the border of the zones.
directionsList
- The zones : for each of the list, the directions from the earth center define the zonebodyFrame
- the frame attached to the earthmaxCheck
- maximum check (see AbstractDetector
)threshold
- convergence threshold (see AbstractDetector
)entry
- when the spacecraft point enters the zone.exit
- when the spacecraft point leave the zone.public EarthZoneDetector(List<Vector3D[]> directionsList, Frame bodyFrame, double maxCheck, double threshold, EventDetector.Action entry, EventDetector.Action exit, boolean removeEntry, boolean removeExit)
The zones are defined by an array of points of space expressed in the Earth attached frame. The points must be given in the right order : from the vector i to the point i + 1, the inside of the zone is on the side of the positive cross vector from the earth center v(i) * v(i+1)..
The arcs defined by two consecutive points shall not cross each other. Two Consecutive points shall not be too close. A point shall not be exactly on the arc defined by two consecutive others.
Using that constructor, the switching function will test the spacecraft position itself to get the angular distance to the border of the zones.
directionsList
- The zones : for each of the list, the directions from the earth center define the zonebodyFrame
- the frame attached to the earthmaxCheck
- maximum check (see AbstractDetector
)threshold
- convergence threshold (see AbstractDetector
)entry
- when the spacecraft point enters the zone.exit
- when the spacecraft point leave the zone.removeEntry
- when the spacecraft point enters the zone.removeExit
- when the spacecraft point leaves the zone.public void init(SpacecraftState s0, AbsoluteDate t)
This method is called once at the start of the propagation. It may be used by the event handler to initialize some internal data if needed.
init
in interface EventDetector
init
in class AbstractDetector
s0
- initial statet
- target time for the integrationpublic 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 s) throws PatriusException
g
in interface EventDetector
g
in class AbstractDetector
s
- the current state information: date, kinematics, attitudePatriusException
- if some specific error occurspublic BodyShape getCentralBodyShape()
public Frame getFrame()
public List<IFieldOfView> getFOV()
public EventDetector copy()
The following attributes are not deeply copied:
BodyShape
IFieldOfView
Copyright © 2023 CNES. All rights reserved.