public class EclipseDetector extends AbstractDetector<EclipseDetector>
此类查找日食事件,即卫星在本影(全食)或半影(偏食)中。
被遮蔽的天体通过PVCoordinatesProvider
给出,其半径以米为单位。它被建模为一个球体。
自v10.0以来,遮蔽天体是一个OneAxisEllipsoid
,之前被建模为一个球体。
它被更改为精确地模拟地球的日食,特别是对于近地轨道。
如果您想要通过球形遮蔽天体的日食,请在定义其OneAxisEllipsoid模型时将其扁率设置为0。
withUmbra()
或withPenumbra()
方法将告诉您事件是否在完全本影/光照达到时触发,或者在进入/离开半影区域时触发。
默认行为是检测完全本影/光照事件。
如果您想同时拥有两者,您需要设置两个不同的探测器。
默认实现行为是在进入日食时继续
传播,在退出日食时停止
传播。
这可以通过在构造后调用AbstractDetector.withHandler(EventHandler)
来更改。
Propagator.addEventDetector(EventDetector)
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
Modifier | Constructor and Description |
---|---|
protected |
EclipseDetector(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, OccultationEngine occultationEngine, double margin, boolean totalEclipse)
具有完整参数的受保护构造函数。
|
|
EclipseDetector(ExtendedPVCoordinatesProvider occulted, double occultedRadius, OneAxisEllipsoid occulting)
构建一个新的日食探测器。
|
|
EclipseDetector(OccultationEngine occultationEngine)
构建一个新的日食探测器。
|
Modifier and Type | Method and Description |
---|---|
protected EclipseDetector |
create(AdaptableInterval newMaxCheck, double newThreshold, int nawMaxIter, EventHandler newHandler)
构建一个新实例。
|
double |
g(SpacecraftState s)
计算切换函数的值。
|
double |
getMargin()
获取用于日食检测的角度边距。
|
OccultationEngine |
getOccultationEngine()
获取遮蔽引擎。
|
boolean |
getTotalEclipse()
获取完全日食检测标志。
|
EclipseDetector |
withMargin(double newMargin)
设置角度检测的边距。
|
EclipseDetector |
withPenumbra()
设置探测器以检测半影。
|
EclipseDetector |
withUmbra()
设置探测器以检测完全本影。
|
getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, init, isForward, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
public EclipseDetector(ExtendedPVCoordinatesProvider occulted, double occultedRadius, OneAxisEllipsoid occulting)
新实例是一个具有默认最大检查间隔(AbstractDetector.DEFAULT_MAXCHECK
)和收敛阈值(AbstractDetector.DEFAULT_THRESHOLD
)的全食(本影)探测器。
occulted
- 被遮蔽的天体
occultedRadius
- 被遮蔽的天体的半径(米)
occulting
- 遮蔽天体
public EclipseDetector(OccultationEngine occultationEngine)
新实例是一个具有默认最大检查间隔(AbstractDetector.DEFAULT_MAXCHECK
)和收敛阈值(AbstractDetector.DEFAULT_THRESHOLD
)的全食(本影)探测器。
occultationEngine
- 遮蔽引擎
protected EclipseDetector(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, OccultationEngine occultationEngine, double margin, boolean totalEclipse)
此构造函数不是公共的,因为用户应该使用建造者API与各种withXxx()
方法来设置实例,以便以可读的方式设置实例,而不使用大量参数。
maxCheck
- 最大检查间隔
threshold
- 收敛阈值(秒)
maxIter
- 事件时间搜索中的最大迭代次数
handler
- 事件处理程序,在事件发生时调用
occultationEngine
- 遮蔽引擎
margin
- 应用于日食角度的边距(弧度)
totalEclipse
- 本影(true)或半影(false)检测标志
protected EclipseDetector create(AdaptableInterval newMaxCheck, double newThreshold, int nawMaxIter, EventHandler newHandler)
create
在类 AbstractDetector<EclipseDetector>
newMaxCheck
- 最大检查间隔(秒)
newThreshold
- 收敛阈值(秒)
nawMaxIter
- 事件时间搜索中的最大迭代次数
newHandler
- 事件处理程序,在事件发生时调用
public EclipseDetector withUmbra()
如果之前已配置了半影/本影标志,则这将覆盖它。
withPenumbra()
public EclipseDetector withPenumbra()
如果之前已配置了半影/本影标志,则这将覆盖它。
withUmbra()
public EclipseDetector withMargin(double newMargin)
正边距意味着日食“更大”,因此进入比较早,退出比较晚,而具有0边距的探测器。
newMargin
- 应用于日食检测的角度边距(弧度)
public double getMargin()
public OccultationEngine getOccultationEngine()
public boolean getTotalEclipse()
public double g(SpacecraftState s)
g
在接口 EventDetector
g
在类 AbstractDetector<EclipseDetector>
s
- 当前状态信息:日期、运动学、姿态
Copyright © 2002-2023 CS GROUP. All rights reserved.