Class OrbitBlender
- All Implemented Interfaces:
TimeInterpolator<Orbit>
Its purpose is to interpolate orbit state between tabulated orbit states using the concept of blending, exposed in : "Efficient Covariance Interpolation using Blending of Approximate State Error Transitions" by Sergei Tanygin, and applying it to orbit states instead of covariances.
It propagates tabulated values to the interpolating time using given propagator and then blend each propagated states using a smoothstep function. It gives especially good results as explained here compared to Hermite interpolation when time steps between tabulated values get significant (In LEO, > 10 mn for example).
In most cases, an analytical propagator would be used to quickly fill the gap between tabulated values and recreate a dense ephemeris.
However, a fully configured and accurate numerical propagator can be used to recreate an even more precise ephemeris in case the initial tabulated values were obtained from an external source.
Note that in the current implementation, the returned blended orbit is necessarily Cartesian.
- Since:
- 12.0
- Author:
- Vincent Cucchietti
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.orekit.time.AbstractTimeInterpolator
AbstractTimeInterpolator.InterpolationData -
Field Summary
Fields inherited from class org.orekit.time.AbstractTimeInterpolator
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC, DEFAULT_INTERPOLATION_POINTS -
Constructor Summary
ConstructorsConstructorDescriptionOrbitBlender(SmoothStepFactory.SmoothStepFunction blendingFunction, Propagator blendingPropagator, Frame outputInertialFrame) Default constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected Orbitinterpolate(AbstractTimeInterpolator<Orbit>.InterpolationData interpolationData) Interpolate instance from given interpolation data.Methods inherited from class org.orekit.orbits.AbstractOrbitInterpolator
checkOrbitsConsistency, getOutputInertialFrame, interpolateMethods inherited from class org.orekit.time.AbstractTimeInterpolator
addOptionalSubInterpolatorIfDefined, checkInterpolatorCompatibilityWithSampleSize, getCentralDate, getCentralDate, getExtrapolationThreshold, getInternalNbInterpolationPoints, getNbInterpolationPoints, getSubInterpolators, getTimeParameter, interpolate
-
Constructor Details
-
OrbitBlender
public OrbitBlender(SmoothStepFactory.SmoothStepFunction blendingFunction, Propagator blendingPropagator, Frame outputInertialFrame) Default constructor.In most cases, an analytical propagator would be used to quickly fill the gap between tabulated values and recreate a dense ephemeris.
However, a fully configured and accurate numerical propagator can be used to recreate an even more precise ephemeris in case the initial tabulated values were obtained from an external source.
- Parameters:
blendingFunction-smoothstep functionused for blendingblendingPropagator- propagator used to propagate tabulated orbits to interpolating timeoutputInertialFrame- output inertial frame- Throws:
OrekitException- if output frame is not inertial- See Also:
-
-
Method Details
-
interpolate
Interpolate instance from given interpolation data.- Specified by:
interpolatein classAbstractTimeInterpolator<Orbit>- Parameters:
interpolationData- interpolation data- Returns:
- interpolated instance from given interpolation data.
-