public class StateCovarianceKeplerianHermiteInterpolator extends AbstractStateCovarianceInterpolator
Its purpose is to interpolate state covariance between tabulated state covariances using polynomial interpolation. To do
so, it uses a HermiteInterpolator
and compute the first and second order derivatives at tabulated states assuming
a standard Keplerian motion depending on given derivatives filter.
It gives very accurate results as explained here. In the very poorly tracked test case evolving in a highly dynamical environment mentioned in the linked thread, the user can expect at worst errors of less than 0.2% in position sigmas and less than 0.35% in velocity sigmas with steps of 40mn between tabulated values.
However, note that this method does not guarantee the positive definiteness of the computed state covariance as opposed to
StateCovarianceBlender
.
HermiteInterpolator
,
StateCovarianceBlender
AbstractTimeInterpolator.InterpolationData
COLUMN_DIM, DEFAULT_POSITION_ANGLE, ROW_DIM
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC, DEFAULT_INTERPOLATION_POINTS
Constructor and Description |
---|
StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints,
double extrapolationThreshold,
TimeInterpolator<Orbit> orbitInterpolator,
CartesianDerivativesFilter filter,
Frame outFrame,
OrbitType outOrbitType,
PositionAngleType outPositionAngleType)
Constructor using an output frame.
|
StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints,
double extrapolationThreshold,
TimeInterpolator<Orbit> orbitInterpolator,
CartesianDerivativesFilter filter,
LOFType outLOF)
Constructor using an output local orbital frame.
|
StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints,
TimeInterpolator<Orbit> orbitInterpolator,
CartesianDerivativesFilter filter,
Frame outFrame,
OrbitType outOrbitType,
PositionAngleType outPositionAngleType)
Constructor using an output frame and :
Default extrapolation threshold value (
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC s)
As this implementation of interpolation is polynomial, it should be used only with small number of interpolation
points (about 10-20 points) in order to avoid Runge's
phenomenon and numerical problems (including NaN appearing). |
StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints,
TimeInterpolator<Orbit> orbitInterpolator,
CartesianDerivativesFilter filter,
LOFType outLOF)
Constructor using an output local orbital frame and :
Use of position and two time derivatives during interpolation
As this implementation of interpolation is polynomial, it should be used only with small number of interpolation
points (about 10-20 points) in order to avoid Runge's
phenomenon and numerical problems (including NaN appearing).
|
StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints,
TimeInterpolator<Orbit> orbitInterpolator,
Frame outFrame,
OrbitType outOrbitType,
PositionAngleType outPositionAngleType)
Constructor using an output frame and :
Default number of interpolation points of
DEFAULT_INTERPOLATION_POINTS
Use of position and two time derivatives during interpolation
As this implementation of interpolation is polynomial, it should be used only with small number of interpolation
points (about 10-20 points) in order to avoid Runge's
phenomenon and numerical problems (including NaN appearing). |
StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints,
TimeInterpolator<Orbit> orbitInterpolator,
LOFType outLOF)
Constructor using an output local orbital frame and :
Default extrapolation threshold value (
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC s)
Use of position and two time derivatives during interpolation
As this implementation of interpolation is polynomial, it should be used only with small number of interpolation
points (about 10-20 points) in order to avoid Runge's
phenomenon and numerical problems (including NaN appearing). |
StateCovarianceKeplerianHermiteInterpolator(TimeInterpolator<Orbit> orbitInterpolator,
Frame outFrame,
OrbitType outOrbitType,
PositionAngleType outPositionAngleType)
Constructor using an output frame and :
Default number of interpolation points of
DEFAULT_INTERPOLATION_POINTS
Default extrapolation threshold value (DEFAULT_EXTRAPOLATION_THRESHOLD_SEC s)
Use of position and two time derivatives during interpolation
As this implementation of interpolation is polynomial, it should be used only with small number of interpolation
points (about 10-20 points) in order to avoid Runge's
phenomenon and numerical problems (including NaN appearing). |
StateCovarianceKeplerianHermiteInterpolator(TimeInterpolator<Orbit> orbitInterpolator,
LOFType outLOF)
Constructor using an output local orbital frame and :
Default number of interpolation points of
DEFAULT_INTERPOLATION_POINTS
Default extrapolation threshold value (DEFAULT_EXTRAPOLATION_THRESHOLD_SEC s)
Use of position and two time derivatives during interpolation
As this implementation of interpolation is polynomial, it should be used only with small number of interpolation
points (about 10-20 points) in order to avoid Runge's
phenomenon and numerical problems (including NaN appearing). |
Modifier and Type | Method and Description |
---|---|
protected StateCovariance |
computeInterpolatedCovarianceInOrbitFrame(List<TimeStampedPair<Orbit,StateCovariance>> uncertainStates,
Orbit interpolatedOrbit)
Compute the interpolated covariance expressed in the interpolated orbit frame.
|
CartesianDerivativesFilter |
getFilter()
Get Filter defining if only the state covariance value are used or if first or/and second Keplerian derivatives
should be used.
|
expressCovarianceInDesiredOutput, getOrbitInterpolator, getOutFrame, getOutLOF, getOutOrbitType, getOutPositionAngleType, interpolate, interpolateOrbit
addOptionalSubInterpolatorIfDefined, checkInterpolatorCompatibilityWithSampleSize, getCentralDate, getExtrapolationThreshold, getNbInterpolationPoints, getSubInterpolators, getTimeParameter, interpolate, interpolate
public StateCovarianceKeplerianHermiteInterpolator(TimeInterpolator<Orbit> orbitInterpolator, LOFType outLOF)
DEFAULT_INTERPOLATION_POINTS
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s)BEWARE: If the output local orbital frame is not considered pseudo-inertial, all the covariance components related to the velocity will be poorly interpolated. Only the position covariance should be considered in this case.
orbitInterpolator
- orbit interpolatoroutLOF
- output local orbital framepublic StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, LOFType outLOF)
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s)BEWARE: If the output local orbital frame is not considered pseudo-inertial, all the covariance components related to the velocity will be poorly interpolated. Only the position covariance should be considered in this case.
interpolationPoints
- number of interpolation pointsorbitInterpolator
- orbit interpolatoroutLOF
- output local orbital framepublic StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, LOFType outLOF)
BEWARE: If the output local orbital frame is not considered pseudo-inertial, all the covariance components related to the velocity will be poorly interpolated. Only the position covariance should be considered in this case.
interpolationPoints
- number of interpolation pointsorbitInterpolator
- orbit interpolatoroutLOF
- output local orbital framefilter
- filter for derivatives from the sample to use in position-velocity-acceleration interpolationpublic StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, double extrapolationThreshold, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, LOFType outLOF)
As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).
BEWARE: If the output local orbital frame is not considered pseudo-inertial, all the covariance components related to the velocity will be poorly interpolated. Only the position covariance should be considered in this case.
interpolationPoints
- number of interpolation pointsextrapolationThreshold
- extrapolation threshold beyond which the propagation will failorbitInterpolator
- orbit interpolatoroutLOF
- output local orbital framefilter
- filter defining if only the state covariance value are used or if first or/and second Keplerian
derivatives should be used during the interpolation.public StateCovarianceKeplerianHermiteInterpolator(TimeInterpolator<Orbit> orbitInterpolator, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
DEFAULT_INTERPOLATION_POINTS
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s)orbitInterpolator
- orbit interpolatoroutFrame
- output frameoutOrbitType
- output orbit typeoutPositionAngleType
- output position anglepublic StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
DEFAULT_INTERPOLATION_POINTS
interpolationPoints
- number of interpolation pointsorbitInterpolator
- orbit interpolatoroutFrame
- output frameoutOrbitType
- output orbit typeoutPositionAngleType
- output position anglepublic StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s)interpolationPoints
- number of interpolation pointsorbitInterpolator
- orbit interpolatorfilter
- filter defining if only the state covariance value are used or if first or/and second Keplerian
derivatives should be used during the interpolation.outFrame
- output frameoutOrbitType
- output orbit typeoutPositionAngleType
- output position anglepublic StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, double extrapolationThreshold, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).
interpolationPoints
- number of interpolation pointsextrapolationThreshold
- extrapolation threshold beyond which the propagation will failorbitInterpolator
- orbit interpolatorfilter
- filter defining if only the state covariance value are used or if first or/and second Keplerian
derivatives should be used during the interpolation.outFrame
- output frameoutOrbitType
- output orbit typeoutPositionAngleType
- output position anglepublic CartesianDerivativesFilter getFilter()
protected StateCovariance computeInterpolatedCovarianceInOrbitFrame(List<TimeStampedPair<Orbit,StateCovariance>> uncertainStates, Orbit interpolatedOrbit)
computeInterpolatedCovarianceInOrbitFrame
in class AbstractStateCovarianceInterpolator
uncertainStates
- list of orbits and associated covariancesinterpolatedOrbit
- interpolated orbitCopyright © 2002-2023 CS GROUP. All rights reserved.