Propagates a segment to the time or independent variable specified in the dateToPropagateTo. This method is needed to assist the case when segments might overlap. If a later segment realizes that it needs to find a different final state from this SegmentPropagator, this method should be used to find that new final state.
Consider calling PropagateToAssumingTimeBasedStates(JulianDate, SegmentResults, SegmentListResults) instead of this method directly.
public override ITimeBasedState PropagateTo( SegmentResults results, JulianDate dateToPropagateTo )
Public Overrides Function PropagateTo ( results As SegmentResults, dateToPropagateTo As JulianDate ) As ITimeBasedState
public: virtual ITimeBasedState^ PropagateTo( SegmentResults^ results, JulianDate dateToPropagateTo ) override
abstract PropagateTo : results : SegmentResults * dateToPropagateTo : JulianDate -> ITimeBasedState override PropagateTo : results : SegmentResults * dateToPropagateTo : JulianDate -> ITimeBasedState
For segments that happen instantaneously then this should just return the state computed (although generally this method should never need to be called on such segments since there is no "when" to propagate to, you can pull the state from the results directly). For a segment that produces an ephemeris, this should find the state right before the offset's independent variable and take one step to that independent variable. If the segment returns two states at the same time, PropagationDirection should be checked, and if propagation is Increasing the final state should be returned, or the initial state if propagation is backwards.