Class TimeStampedAngularCoordinatesHermiteInterpolator
 java.lang.Object

 org.orekit.time.AbstractTimeInterpolator<TimeStampedAngularCoordinates>

 org.orekit.utils.TimeStampedAngularCoordinatesHermiteInterpolator

 All Implemented Interfaces:
TimeInterpolator<TimeStampedAngularCoordinates>
public class TimeStampedAngularCoordinatesHermiteInterpolator extends AbstractTimeInterpolator<TimeStampedAngularCoordinates>
Class using Hermite interpolator to interpolate time stamped angular coordinates.As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 1020 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).
 Author:
 Vincent Cucchietti, Luc Maisonobe
 See Also:
HermiteInterpolator
,TimeStampedAngularCoordinates


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
Constructors Constructor Description TimeStampedAngularCoordinatesHermiteInterpolator()
Constructor with : Default number of interpolation points ofDEFAULT_INTERPOLATION_POINTS
Default extrapolation threshold value (DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s) Use of angular and first time derivative for attitude interpolation As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 1020 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).TimeStampedAngularCoordinatesHermiteInterpolator(int interpolationPoints)
/** Constructor with : Default extrapolation threshold value (DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s) Use of angular and first time derivative for attitude interpolation As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 1020 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).TimeStampedAngularCoordinatesHermiteInterpolator(int interpolationPoints, double extrapolationThreshold, AngularDerivativesFilter filter)
Constructor.TimeStampedAngularCoordinatesHermiteInterpolator(int interpolationPoints, AngularDerivativesFilter filter)
Constructor with : 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 1020 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).

Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AngularDerivativesFilter
getFilter()
Get filter for derivatives from the sample to use in interpolation.protected TimeStampedAngularCoordinates
interpolate(AbstractTimeInterpolator.InterpolationData interpolationData)
Interpolate instance from given interpolation data.
Methods inherited from class org.orekit.time.AbstractTimeInterpolator
addOptionalSubInterpolatorIfDefined, checkInterpolatorCompatibilityWithSampleSize, getCentralDate, getCentralDate, getExtrapolationThreshold, getNbInterpolationPoints, getSubInterpolators, getTimeParameter, interpolate, interpolate




Constructor Detail

TimeStampedAngularCoordinatesHermiteInterpolator
public TimeStampedAngularCoordinatesHermiteInterpolator()
Constructor with : Default number of interpolation points of
DEFAULT_INTERPOLATION_POINTS
 Default extrapolation threshold value (
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s)  Use of angular and first time derivative for attitude interpolation
 Default number of interpolation points of

TimeStampedAngularCoordinatesHermiteInterpolator
public TimeStampedAngularCoordinatesHermiteInterpolator(int interpolationPoints)
/** Constructor with : Default extrapolation threshold value (
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s)  Use of angular and first time derivative for attitude interpolation
 Parameters:
interpolationPoints
 number of interpolation points
 Default extrapolation threshold value (

TimeStampedAngularCoordinatesHermiteInterpolator
public TimeStampedAngularCoordinatesHermiteInterpolator(int interpolationPoints, AngularDerivativesFilter filter)
Constructor with : Default extrapolation threshold value (
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s)
 Parameters:
interpolationPoints
 number of interpolation pointsfilter
 filter for derivatives from the sample to use in interpolation
 Default extrapolation threshold value (

TimeStampedAngularCoordinatesHermiteInterpolator
public TimeStampedAngularCoordinatesHermiteInterpolator(int interpolationPoints, double extrapolationThreshold, AngularDerivativesFilter filter)
Constructor.As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 1020 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).
 Parameters:
interpolationPoints
 number of interpolation pointsextrapolationThreshold
 extrapolation threshold beyond which the propagation will failfilter
 filter for derivatives from the sample to use in interpolation


Method Detail

getFilter
public AngularDerivativesFilter getFilter()
Get filter for derivatives from the sample to use in interpolation. Returns:
 filter for derivatives from the sample to use in interpolation

interpolate
protected TimeStampedAngularCoordinates interpolate(AbstractTimeInterpolator.InterpolationData interpolationData)
Interpolate instance from given interpolation data.The interpolated instance is created by polynomial Hermite interpolation on Rodrigues vector ensuring rotation rate remains the exact derivative of rotation.
This method is based on Sergei Tanygin's paper Attitude Interpolation, changing the norm of the vector to match the modified Rodrigues vector as described in Malcolm D. Shuster's paper A Survey of Attitude Representations. This change avoids the singularity at π. There is still a singularity at 2π, which is handled by slightly offsetting all rotations when this singularity is detected. Another change is that the mean linear motion is first removed before interpolation and added back after interpolation. This allows to use interpolation even when the sample covers much more than one turn and even when sample points are separated by more than one turn.
Note that even if first and second time derivatives (rotation rates and acceleration) from sample can be ignored, the interpolated instance always includes interpolated derivatives. This feature can be used explicitly to compute these derivatives when it would be too complex to compute them from an analytical formula: just compute a few sample points from the explicit formula and set the derivatives to zero in these sample points, then use interpolation to add derivatives consistent with the rotations.
 Specified by:
interpolate
in classAbstractTimeInterpolator<TimeStampedAngularCoordinates>
 Parameters:
interpolationData
 interpolation data Returns:
 interpolated instance from given interpolation data.

