public class InterSatDirectViewDetector extends AbstractDetector<InterSatDirectViewDetector>
由于此探测器需要两颗卫星,因此它嵌入了一个用于次要卫星的坐标提供者
,并在主卫星的传播器中注册为事件探测器。因此,次要卫星提供者将由此探测器驱动(因此也将由此探测器注册的传播器驱动)。
为了避免无限递归,必须确保次要卫星提供者与其他任何内容都是完全独立的。特别是,如果提供者是传播器,则不应该与此探测器注册的传播器一起在传播器并行器
中运行。但是,可以配置两个具有类似设置的传播器PsA和PsB用于次要卫星,以及一个用于主卫星的传播器Pm,然后在Pm中注册此探测器使用Psa,而在传播器并行器
的上下文中运行Pm和Psb。
为了在事件搜索循环期间提高效率,建议将次要提供者设置为解析传播器或星历。次要传播器作为次要传播器工作,但预计计算成本较高。
此探测器的g
函数在卫星可以直接看到彼此时为正,当中心天体边缘位于两者之间并阻挡直接视图时为负。
此探测器仅检查中心天体边缘的遮挡,不考虑卫星天线图案。如果必须考虑这些图案,则可以将此探测器与逻辑与
的逻辑非
的视场探测器
进行组合
。
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
Modifier | Constructor and Description |
---|---|
protected |
InterSatDirectViewDetector(OneAxisEllipsoid body, double skimmingAltitude, PVCoordinatesProvider secondary, AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler)
私有构造函数。
|
|
InterSatDirectViewDetector(OneAxisEllipsoid body, PVCoordinatesProvider secondary)
简单构造函数。
|
Modifier and Type | Method and Description |
---|---|
protected InterSatDirectViewDetector |
create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
构建一个新实例。
|
double |
g(SpacecraftState state)
计算切换函数的值。
|
OneAxisEllipsoid |
getCentralBody()
获取中心天体。
|
PVCoordinatesProvider |
getSecondary()
获取次要卫星的提供者。
|
double |
getSkimmingAltitude()
获取掠过高度。
|
InterSatDirectViewDetector |
withSkimmingAltitude(double newSkimmingAltitude)
设置掠过高度。
|
getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, init, isForward, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
public InterSatDirectViewDetector(OneAxisEllipsoid body, PVCoordinatesProvider secondary)
body
- 中心天体
secondary
- 次要卫星的提供者
protected InterSatDirectViewDetector(OneAxisEllipsoid body, double skimmingAltitude, PVCoordinatesProvider secondary, AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler)
body
- 中心天体
skimmingAltitude
- 触发事件的掠过高度
secondary
- 次要卫星的提供者
maxCheck
- 最大检查间隔
threshold
- 收敛阈值(s)
maxIter
- 事件时间搜索中的最大迭代次数
handler
- 事件发生时要调用的事件处理程序
public OneAxisEllipsoid getCentralBody()
public double getSkimmingAltitude()
public PVCoordinatesProvider getSecondary()
protected InterSatDirectViewDetector create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
create
在类 AbstractDetector<InterSatDirectViewDetector>
中
newMaxCheck
- 最大检查间隔(s)
newThreshold
- 收敛阈值(s)
newMaxIter
- 事件时间搜索中的最大迭代次数
newHandler
- 事件发生时要调用的事件处理程序
public InterSatDirectViewDetector withSkimmingAltitude(double newSkimmingAltitude)
掠过高度是卫星之间路径的最低高度,在该高度以下应触发事件。如果设置为0.0,则当路径刚好通过中心天体边缘时触发事件。
newSkimmingAltitude
- 掠过高度(m)
getSkimmingAltitude()
public double g(SpacecraftState state)
此探测器的g
函数是卫星之间直线上中间点的最低高度与掠过高度
之间的差值。因此,当所有中间点都在掠过高度以上时,表示卫星可以看到彼此,当一些中间点(可能是端点)下潜到此高度以下时,表示卫星无法看到彼此。
g
在接口 EventDetector
中
g
在类 AbstractDetector<InterSatDirectViewDetector>
中
state
- 当前状态信息:日期、运动学、姿态
Copyright © 2002-2023 CS GROUP. All rights reserved.