public abstract class SmoothFieldOfView extends AbstractFieldOfView
Modifier | Constructor and Description |
---|---|
protected |
SmoothFieldOfView(org.hipparchus.geometry.euclidean.threed.Vector3D center, org.hipparchus.geometry.euclidean.threed.Vector3D primaryMeridian, double margin)
构建一个新实例。
|
Modifier and Type | Method and Description |
---|---|
protected abstract org.hipparchus.geometry.euclidean.threed.Vector3D |
directionAt(double angle)
获取角度处的边界方向。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getCenter()
获取航天器坐标系中FOV中心的方向。
|
List<List<GeodeticPoint>> |
getFootprint(Transform fovToBody, OneAxisEllipsoid body, double angularStep)
获取地面上FOV的足迹。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getX()
获取定义FoV边界的X轴。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getY()
获取定义FoV边界的Y轴。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getZ()
获取定义FoV边界的Z轴。
|
getMargin
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
offsetFromBoundary, projectToBoundary
protected SmoothFieldOfView(org.hipparchus.geometry.euclidean.threed.Vector3D center, org.hipparchus.geometry.euclidean.threed.Vector3D primaryMeridian, double margin)
center
- FOV中心的方向(Zsmooth),在航天器坐标系中
primaryMeridian
- 定义(+Xsmooth,Zsmooth)半平面的向量(允许primaryMeridian
不垂直于center
,因为正交性将在内部修正)
margin
- 应用于区域的角度边界(如果为正,则FOV将考虑区域外略微的点仍然可见)
public org.hipparchus.geometry.euclidean.threed.Vector3D getCenter()
public org.hipparchus.geometry.euclidean.threed.Vector3D getX()
public org.hipparchus.geometry.euclidean.threed.Vector3D getY()
public org.hipparchus.geometry.euclidean.threed.Vector3D getZ()
public List<List<GeodeticPoint>> getFootprint(Transform fovToBody, OneAxisEllipsoid body, double angularStep)
此方法假定FOV居中于某个载体,这通常是航天器或地面站天线。足迹边界循环中的点都相对于椭球高度为零,它们对应于FOV边缘的地面投影,或者对应于如果FOV超过地平线,则为身体边缘上的点。边缘上的点将以零海拔看到载体原点。如果FOV非常大,完全包含身体,所有点将对应于边缘上的点。如果FOV背对身体,边界循环将是一个空列表。足迹循环内的点按照从载体看到的三角顺序排序。这意味着从一个点到下一个点在地面上行进的人将在他的左手边看到从载体可见的点,而在他的右手边看到从载体不可见的点。
在边缘处将FOV截断可能会对复杂的FOV产生奇怪的结果。例如,如果FOV是一个带孔的环,部分环超过地平线,那么方法仍将返回两个在边缘处截断的循环,一个顺时针一个逆时针,因此两次“关闭”C形状。这种行为被认为是可以接受的。
如果载体是航天器,则可以从SpacecraftState
计算fovToBody
变换如下:
Transform inertToBody = state.getFrame().getTransformTo(body.getBodyFrame(), state.getDate()); Transform fovToBody = new Transform(state.getDate(), state.toTransform().getInverse(), inertToBody);
如果载体是地面站,使用地心坐标系定位并使用在天线坐标系和地心坐标系之间的变换管理其指向方向,则可以如下计算fovToBody
变换:
Transform topoToBody = topocentricFrame.getTransformTo(body.getBodyFrame(), date); Transform topoToDish = ... Transform fovToBody = new Transform(date, topoToDish.getInverse(), topoToBody);
这里仅使用原始区域,角度边界在此处被忽略。
fovToBody
- FOV定义的坐标系和身体坐标系之间的变换。
body
- FOV将投影在其上的身体表面
angularStep
- 用于边界循环采样的步长(弧度),请注意这通常不是单位球上的角度,而是底层FOV边界模型使用的相位角
protected abstract org.hipparchus.geometry.euclidean.threed.Vector3D directionAt(double angle)
angle
- 边界方向的相位角
Copyright © 2002-2023 CS GROUP. All rights reserved.