public interface FieldOfView
视场是在以航天器为中心的单位球面上定义的区域。不同的实现可能根据形状使用特定的建模。
Modifier and Type | Method and Description |
---|---|
List<List<GeodeticPoint>> |
getFootprint(Transform fovToBody, OneAxisEllipsoid body, double angularStep)
获取视场在地面上的足迹。
|
double |
getMargin()
获取要应用的角边距(弧度)。
|
double |
offsetFromBoundary(org.hipparchus.geometry.euclidean.threed.Vector3D lineOfSight, double angularRadius, VisibilityTrigger trigger)
获取目标体相对于视场边界的偏移量。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
projectToBoundary(org.hipparchus.geometry.euclidean.threed.Vector3D lineOfSight)
找到视线最接近的视场边界上的方向。
|
double getMargin()
offsetFromBoundary(Vector3D, double, VisibilityTrigger)
double offsetFromBoundary(org.hipparchus.geometry.euclidean.threed.Vector3D lineOfSight, double angularRadius, VisibilityTrigger trigger)
偏移量是目标体与最近边界点之间的有符号角距离,考虑到 VisibilityTrigger
和 margin
。
由于视场可能具有可能需要长时间计算的复杂形状,当可以证明目标点在视场之外时,可以使用更快但是近似的计算。这种近似仅在视场外约0.01弧度处执行,该视场外加上由目标体半径和视场边距定义的死区。如果目标点靠近该区域(而且进一步地在该区域内),则执行完整准确的计算。这种设计允许将此偏移量用作可靠地检测视场边界穿越的方法(考虑到 VisibilityTrigger
和 margin
),这对应于偏移的符号更改。
lineOfSight
- 从视场支持单位球面中心到航天器上目标的视线
angularRadius
- 目标体角半径
trigger
- 球形体的可见性触发器
offsetFromBoundary(Vector3D, double, VisibilityTrigger)
org.hipparchus.geometry.euclidean.threed.Vector3D projectToBoundary(org.hipparchus.geometry.euclidean.threed.Vector3D lineOfSight)
lineOfSight
- 从视场支持单位球面中心到航天器上目标的视线
List<List<GeodeticPoint>> getFootprint(Transform fovToBody, OneAxisEllipsoid body, double angularStep)
此方法假定视场以某个载体为中心,这通常是航天器或地面站天线。足迹边界环中的点都相对于椭球面的海拔为零,它们对应于视场边缘的投影,或者对应于如果视场超过地平线则为身体边缘上的点。边缘上的点看到载体原点的海拔为零。如果视场非常大,完全包含身体,所有点将对应于边缘上的点。如果视场背对身体,边界环将是一个空列表。环内的点按三角顺序排序,从载体的角度看。这意味着从一个点到下一个点在地面上行进的人将看到从载体左手边可见的点,而看不到的点在他的右手边。
fovToBody
- 视场定义的参考系与身体参考系之间的变换。
body
- 视场将投影在其上的身体表面
angularStep
- 用于边界环采样的步长(弧度),请注意这通常不是单位球面上的角度,而是底层视场边界模型使用的相位角
Copyright © 2002-2023 CS GROUP. All rights reserved.