public class ExtremumApproachDetector extends AbstractDetector<ExtremumApproachDetector>
该类用于查找极值接近事件(即最接近或最远的接近)。
默认实现行为是在最远接近时继续
传播,在最接近时停止
传播。可以通过在构造后调用AbstractDetector.withHandler(EventHandler)
来更改这一行为(查看文档末尾的示例)。
由于此检测器需要两个对象(相对运动),因此它嵌入了一个用于次要对象的坐标提供者
,并将其注册为主要对象的传播器中的事件检测器。因此,次要对象的坐标提供者
将由此检测器驱动(因此也将由注册在此检测器中的传播器驱动)。
为避免无限递归,必须确保次要对象提供者与其他任何内容都是完全独立的。特别是,如果提供者是传播器,则不应该与注册在其中的传播器一起在传播器并行化器
中运行。但是,可以配置两个具有类似设置的传播器PsA和PsB用于次要对象,一个传播器Pm用于主要对象,然后在Pm中使用Psa注册此检测器,同时在传播器并行化器
的上下文中运行Pm和Psb。
为了在事件搜索循环期间提高效率,建议将次要提供者设置为解析传播器或星历。次要传播器作为次要传播器工作,但预计计算成本较高。
此外,可以使用事件斜率过滤器
仅检测一种事件类型。例如,为了仅检测最接近事件,应输入以下内容:
ExtremumApproachDetector extremumApproachDetector = new ExtremumApproachDetector(secondaryPVProvider);
EventDetector closeApproachDetector = new EventSlopeFilter<ExtremumApproachDetector>(extremumApproachDetector,FilterType.TRIGGER_ONLY_INCREASING_EVENTS);
Propagator.addEventDetector(EventDetector)
, EventSlopeFilter
, FilterType
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
Modifier | Constructor and Description |
---|---|
protected |
ExtremumApproachDetector(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, PVCoordinatesProvider secondaryPVProvider)
构造器。
|
|
ExtremumApproachDetector(PVCoordinatesProvider secondaryPVProvider)
具有默认值的构造器。
|
Modifier and Type | Method and Description |
---|---|
PVCoordinates |
computeDeltaPV(SpacecraftState s)
计算主要对象和次要对象之间的相对PV。
|
protected ExtremumApproachDetector |
create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
构建一个新实例。
|
double |
g(SpacecraftState s)
当主要对象远离次要对象时, g 为正,当主要对象接近次要对象时,g 为负。
|
PVCoordinatesProvider |
getSecondaryPVProvider()
获取存储在此实例中的次要位置-速度提供者。
|
getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, init, isForward, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
public ExtremumApproachDetector(PVCoordinatesProvider secondaryPVProvider)
默认情况下,实现的行为是在最远接近时继续
传播,在最接近时停止
传播。
secondaryPVProvider
- 要查找极值接近的另一个对象的PV坐标提供者。
protected ExtremumApproachDetector(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, PVCoordinatesProvider secondaryPVProvider)
如果用户想要更改检测器的默认行为,则应使用此构造器。
maxCheck
- 最大检查间隔。
threshold
- 收敛阈值(s)。
maxIter
- 事件时间搜索中的最大迭代次数。
handler
- 事件发生时要调用的事件处理程序。
secondaryPVProvider
- 要查找极值接近的另一个对象的PV坐标提供者。
EventHandler
public double g(SpacecraftState s)
g
为正,当主要对象接近次要对象时,g
为负。
g
在接口 EventDetector
中
g
在类 AbstractDetector<ExtremumApproachDetector>
中
s
- 当前状态信息:日期、运动学、姿态
public PVCoordinates computeDeltaPV(SpacecraftState s)
s
- 空间飞行器状态。
protected ExtremumApproachDetector create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
create
在类 AbstractDetector<ExtremumApproachDetector>
中
newMaxCheck
- 最大检查间隔(s)
newThreshold
- 收敛阈值(s)
newMaxIter
- 事件时间搜索中的最大迭代次数
newHandler
- 事件发生时要调用的事件处理程序
public PVCoordinatesProvider getSecondaryPVProvider()
Copyright © 2002-2023 CS GROUP. All rights reserved.