public class EventShifter extends AbstractDetector<EventShifter>
此类将事件探测器
包装为略微移动事件发生时间。典型用例是处理某些物理事件发生之前或之后的操作延迟。
例如,卫星姿态模式可能会在日食进入几分钟前从指向太阳转换为自旋稳定,并在日食退出几分钟后再转换为指向太阳。通过将日食探测器
包装到此类的实例中,可以处理这种行为,其中对于增加事件(日食退出),时间移位为正,对于减少事件(日食进入),时间移位为负。
Propagator.addEventDetector(EventDetector)
, EventDetector
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
Modifier | Constructor and Description |
---|---|
protected |
EventShifter(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, EventDetector detector, boolean useShiftedStates, double increasingTimeShift, double decreasingTimeShift)
有完整参数的受保护构造函数。
|
|
EventShifter(EventDetector detector, boolean useShiftedStates, double increasingTimeShift, double decreasingTimeShift)
构建一个新实例。
|
Modifier and Type | Method and Description |
---|---|
protected EventShifter |
create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
构建一个新实例。
|
double |
g(SpacecraftState s)
计算切换函数的值。
|
double |
getDecreasingTimeShift()
获取减少事件的时间移位。
|
EventDetector |
getDetector()
获取原始未移位事件的探测器。
|
double |
getIncreasingTimeShift()
获取增加事件的时间移位。
|
void |
init(SpacecraftState s0, AbsoluteDate t)
在传播开始时初始化事件处理程序。
|
getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, isForward, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
public EventShifter(EventDetector detector, boolean useShiftedStates, double increasingTimeShift, double decreasingTimeShift)
将使用原始未移位事件的最大检查间隔
和收敛阈值
来处理移位事件。当事件发生时,将调用原始未移位事件的eventOccurred
方法(根据useShiftedStates
参数,将使用移位或未移位事件日期的航天器状态)。
detector
- 原始未移位事件的事件探测器
useShiftedStates
- 如果为true,则提供给相关handler
的eventOccurred
方法的状态将保持移位,否则将未移位以对应于基础原始事件。
increasingTimeShift
- 增加事件的时间移位。
decreasingTimeShift
- 减少事件的时间移位。
protected EventShifter(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, EventDetector detector, boolean useShiftedStates, double increasingTimeShift, double decreasingTimeShift)
此构造函数不是公共的,因为预期用户将使用建造者API,通过各种withXxx()
方法设置实例,以可读的方式设置实例,而不使用大量参数。
maxCheck
- 最大检查间隔
threshold
- 收敛阈值(s)
maxIter
- 事件时间搜索中的最大迭代次数
handler
- 事件发生时要调用的事件处理程序
detector
- 原始未移位事件的事件探测器
useShiftedStates
- 如果为true,则提供给detector
的eventOccurred
方法的状态将保持移位,否则将未移位以对应于基础原始事件。
increasingTimeShift
- 增加事件的时间移位。
decreasingTimeShift
- 减少事件的时间移位。
protected EventShifter create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
create
在类中 AbstractDetector<EventShifter>
newMaxCheck
- 最大检查间隔(s)
newThreshold
- 收敛阈值(s)
newMaxIter
- 事件时间搜索中的最大迭代次数
newHandler
- 事件发生时要调用的事件处理程序
public EventDetector getDetector()
public double getIncreasingTimeShift()
public double getDecreasingTimeShift()
public void init(SpacecraftState s0, AbsoluteDate t)
此方法在传播开始时调用一次。如果需要,事件处理程序可以用于初始化一些内部数据。
默认实现不执行任何操作
此实现设置传播方向并初始化事件处理程序。如果子类重写此方法,则应调用super.init(s0, t)
。
init
在接口中 EventDetector
init
在类中 AbstractDetector<EventShifter>
s0
- 初始状态
t
- 集成的目标时间
public double g(SpacecraftState s)
g
在接口中 EventDetector
g
在类中 AbstractDetector<EventShifter>
s
- 当前状态信息:日期、运动学、姿态
Copyright © 2002-2023 CS GROUP. All rights reserved.