T
- type of the field elementspublic class FieldLongitudeCrossingDetector<T extends org.hipparchus.CalculusFieldElement<T>> extends FieldAbstractDetector<FieldLongitudeCrossingDetector<T>,T>
This detector identifies when a spacecraft crosses a fixed longitude with respect to a central body.
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
Modifier | Constructor and Description |
---|---|
|
FieldLongitudeCrossingDetector(org.hipparchus.Field<T> field,
OneAxisEllipsoid body,
double longitude)
Build a new detector.
|
protected |
FieldLongitudeCrossingDetector(FieldAdaptableInterval<T> maxCheck,
T threshold,
int maxIter,
FieldEventHandler<T> handler,
OneAxisEllipsoid body,
double longitude)
Protected constructor with full parameters.
|
|
FieldLongitudeCrossingDetector(T maxCheck,
T threshold,
OneAxisEllipsoid body,
double longitude)
Build a detector.
|
Modifier and Type | Method and Description |
---|---|
protected FieldLongitudeCrossingDetector<T> |
create(FieldAdaptableInterval<T> newMaxCheck,
T newThreshold,
int newMaxIter,
FieldEventHandler<T> newHandler)
Build a new instance.
|
T |
g(FieldSpacecraftState<T> s)
Compute the value of the detection function.
|
OneAxisEllipsoid |
getBody()
Get the body on which the geographic zone is defined.
|
double |
getLongitude()
Get the fixed longitude to be crossed (radians).
|
void |
init(FieldSpacecraftState<T> s0,
FieldAbsoluteDate<T> t)
Initialize event handler at the start of a propagation.
|
getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, isForward, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
public FieldLongitudeCrossingDetector(org.hipparchus.Field<T> field, OneAxisEllipsoid body, double longitude)
The new instance uses default values for maximal checking interval
(FieldAbstractDetector.DEFAULT_MAXCHECK
) and convergence threshold (FieldAbstractDetector.DEFAULT_THRESHOLD
).
field
- the type of numbers to use.body
- body on which the longitude is definedlongitude
- longitude to be crossedpublic FieldLongitudeCrossingDetector(T maxCheck, T threshold, OneAxisEllipsoid body, double longitude)
maxCheck
- maximal checking interval (s)threshold
- convergence threshold (s)body
- body on which the longitude is definedlongitude
- longitude to be crossedprotected FieldLongitudeCrossingDetector(FieldAdaptableInterval<T> maxCheck, T threshold, int maxIter, FieldEventHandler<T> handler, OneAxisEllipsoid body, double longitude)
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.
maxCheck
- maximum checking intervalthreshold
- convergence threshold (s)maxIter
- maximum number of iterations in the event time searchhandler
- event handler to call at event occurrencesbody
- body on which the longitude is definedlongitude
- longitude to be crossedprotected FieldLongitudeCrossingDetector<T> create(FieldAdaptableInterval<T> newMaxCheck, T newThreshold, int newMaxIter, FieldEventHandler<T> newHandler)
create
in class FieldAbstractDetector<FieldLongitudeCrossingDetector<T extends org.hipparchus.CalculusFieldElement<T>>,T extends org.hipparchus.CalculusFieldElement<T>>
newMaxCheck
- maximum checking intervalnewThreshold
- convergence threshold (s)newMaxIter
- maximum number of iterations in the event time searchnewHandler
- event handler to call at event occurrencespublic OneAxisEllipsoid getBody()
public double getLongitude()
public void init(FieldSpacecraftState<T> s0, FieldAbsoluteDate<T> 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.
The default implementation does nothing
init
in interface FieldEventDetector<T extends org.hipparchus.CalculusFieldElement<T>>
init
in class FieldAbstractDetector<FieldLongitudeCrossingDetector<T extends org.hipparchus.CalculusFieldElement<T>>,T extends org.hipparchus.CalculusFieldElement<T>>
s0
- initial statet
- target time for the integrationpublic T g(FieldSpacecraftState<T> s)
The value is the longitude difference between the spacecraft and the fixed
longitude to be crossed, with some sign tweaks to ensure continuity.
These tweaks imply the increasing
flag in events detection becomes
irrelevant here! As an example, the longitude of a prograde spacecraft
will always increase, but this g function will increase and decrease so it
will cross the zero value once per orbit, in increasing and decreasing
directions on alternate orbits. If eastwards and westwards crossing have to
be distinguished, the velocity direction has to be checked instead of looking
at the increasing
flag.
g
in interface FieldEventDetector<T extends org.hipparchus.CalculusFieldElement<T>>
g
in class FieldAbstractDetector<FieldLongitudeCrossingDetector<T extends org.hipparchus.CalculusFieldElement<T>>,T extends org.hipparchus.CalculusFieldElement<T>>
s
- the current state information: date, kinematics, attitudeCopyright © 2002-2023 CS GROUP. All rights reserved.