Class AbstractFieldTimeInterpolator<T extends FieldTimeStamped<KK>,​KK extends CalculusFieldElement<KK>>

    • Field Detail

      • DEFAULT_EXTRAPOLATION_THRESHOLD_SEC

        public static final double DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
        Default extrapolation time threshold: 1ms.
        See Also:
        Constant Field Values
      • DEFAULT_INTERPOLATION_POINTS

        public static final int DEFAULT_INTERPOLATION_POINTS
        Default number of interpolation points.
        See Also:
        Constant Field Values
    • Constructor Detail

      • AbstractFieldTimeInterpolator

        public AbstractFieldTimeInterpolator​(int interpolationPoints,
                                             double extrapolationThreshold)
        Constructor.
        Parameters:
        interpolationPoints - number of interpolation points
        extrapolationThreshold - extrapolation threshold beyond which the propagation will fail
    • Method Detail

      • checkInterpolatorCompatibilityWithSampleSize

        public static <T extends CalculusFieldElement<T>> void checkInterpolatorCompatibilityWithSampleSize​(FieldTimeInterpolator<? extends FieldTimeStamped<T>,​T> interpolator,
                                                                                                            int sampleSize)
        Method checking if given interpolator is compatible with given sample size.
        Type Parameters:
        T - type of the field elements
        Parameters:
        interpolator - interpolator
        sampleSize - sample size
      • getCentralDate

        public static <T extends FieldTimeStamped<KK>,​KK extends CalculusFieldElement<KK>> FieldAbsoluteDate<KK> getCentralDate​(FieldAbsoluteDate<KK> date,
                                                                                                                                      ImmutableFieldTimeStampedCache<T,​KK> cachedSamples,
                                                                                                                                      double threshold)
        Get the central date to use to find neighbors while taking into account extrapolation threshold.
        Type Parameters:
        T - type of time stamped element
        KK - type of calculus field element
        Parameters:
        date - interpolation date
        cachedSamples - cached samples
        threshold - extrapolation threshold
        Returns:
        central date to use to find neighbors
        Since:
        12.0.1
      • getCentralDate

        public static <KK extends CalculusFieldElement<KK>> FieldAbsoluteDate<KK> getCentralDate​(FieldAbsoluteDate<KK> date,
                                                                                                 FieldAbsoluteDate<KK> minDate,
                                                                                                 FieldAbsoluteDate<KK> maxDate,
                                                                                                 double threshold)
        Get the central date to use to find neighbors while taking into account extrapolation threshold.
        Type Parameters:
        KK - type of calculus field element
        Parameters:
        date - interpolation date
        minDate - earliest date in the sample.
        maxDate - latest date in the sample.
        threshold - extrapolation threshold
        Returns:
        central date to use to find neighbors
        Since:
        12.0.1
      • getSubInterpolators

        public List<FieldTimeInterpolator<? extends FieldTimeStamped<KK>,​KK>> getSubInterpolators()
        Get all lowest level interpolators implemented by this instance, otherwise return a list with this instance only.

        An example would be the spacecraft state interpolator which can use different interpolators for each of its attributes (orbit, absolute position-velocity-acceleration coordinates, mass...). In this case, it would return the list of all of these interpolators (or possibly all of their sub-interpolators if they were to use multiple interpolators themselves).

        Specified by:
        getSubInterpolators in interface FieldTimeInterpolator<T extends FieldTimeStamped<KK>,​KK extends CalculusFieldElement<KK>>
        Returns:
        list of interpolators
      • getNbInterpolationPoints

        public int getNbInterpolationPoints()
        Get the number of interpolation points. In the specific case where this interpolator contains multiple sub-interpolators, this method will return the maximum number of interpolation points required among all sub-interpolators.
        Specified by:
        getNbInterpolationPoints in interface FieldTimeInterpolator<T extends FieldTimeStamped<KK>,​KK extends CalculusFieldElement<KK>>
        Returns:
        the number of interpolation points
      • addOptionalSubInterpolatorIfDefined

        protected <S extends CalculusFieldElement<S>> void addOptionalSubInterpolatorIfDefined​(FieldTimeInterpolator<? extends FieldTimeStamped<S>,​S> subInterpolator,
                                                                                               List<FieldTimeInterpolator<? extends FieldTimeStamped<S>,​S>> subInterpolators)
        Add all lowest level sub interpolators to the sub interpolator list.
        Type Parameters:
        S - type of the field element
        Parameters:
        subInterpolator - optional sub interpolator to add
        subInterpolators - list of sub interpolators
      • interpolate

        protected abstract T interpolate​(AbstractFieldTimeInterpolator.InterpolationData interpolationData)
        Interpolate instance from given interpolation data.
        Parameters:
        interpolationData - interpolation data
        Returns:
        interpolated instance from given interpolation data.
      • getTimeParameter

        protected KK getTimeParameter​(FieldAbsoluteDate<KK> interpolatingTime,
                                      FieldAbsoluteDate<KK> previousDate,
                                      FieldAbsoluteDate<KK> nextDate)
        Get the time parameter which lies between [0:1] by normalizing the difference between interpolating time and previous date by the Δt between tabulated values.
        Parameters:
        interpolatingTime - time at which we want to interpolate a value (between previous and next tabulated dates)
        previousDate - previous tabulated value date
        nextDate - next tabulated value date
        Returns:
        time parameter which lies between [0:1]