public abstract class SmoothFieldOfView extends AbstractFieldOfView
Modifier | Constructor and Description |
---|---|
protected |
SmoothFieldOfView(Vector3D center,
Vector3D primaryMeridian,
double margin)
Build a new instance.
|
Modifier and Type | Method and Description |
---|---|
protected abstract Vector3D |
directionAt(double angle)
Get boundary direction at angle.
|
Vector3D |
getCenter()
Get the direction of the FOV center, in spacecraft frame.
|
List<List<GeodeticPoint>> |
getFootprint(Transform fovToBody,
OneAxisEllipsoid body,
double angularStep)
Get the footprint of the Field Of View on ground.
|
Vector3D |
getX()
Get the X axis defining FoV boundary.
|
Vector3D |
getY()
Get the Y axis defining FoV boundary.
|
Vector3D |
getZ()
Get the Z axis defining FoV boundary.
|
getMargin
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
offsetFromBoundary, projectToBoundary
protected SmoothFieldOfView(Vector3D center, Vector3D primaryMeridian, double margin)
center
- direction of the FOV center (Zsmooth), in spacecraft frameprimaryMeridian
- vector defining the (+Xsmooth, Zsmooth)
half-plane (it is allowed to have primaryMeridian
not orthogonal to
center
as orthogonality will be fixed internally)margin
- angular margin to apply to the zone (if positive,
the Field Of View will consider points slightly outside of the
zone are still visible)public Vector3D getCenter()
public Vector3D getX()
public Vector3D getY()
public Vector3D getZ()
public List<List<GeodeticPoint>> getFootprint(Transform fovToBody, OneAxisEllipsoid body, double angularStep)
This method assumes the Field Of View is centered on some carrier, which will typically be a spacecraft or a ground station antenna. The points in the footprint boundary loops are all at altitude zero with respect to the ellipsoid, they correspond either to projection on ground of the edges of the Field Of View, or to points on the body limb if the Field Of View goes past horizon. The points on the limb see the carrier origin at zero elevation. If the Field Of View is so large it contains entirely the body, all points will correspond to points at limb. If the Field Of View looks away from body, the boundary loops will be an empty list. The points within footprint loops are sorted in trigonometric order as seen from the carrier. This implies that someone traveling on ground from one point to the next one will have the points visible from the carrier on his left hand side, and the points not visible from the carrier on his right hand side.
The truncation of Field Of View at limb can induce strange results for complex Fields Of View. If for example a Field Of View is a ring with a hole and part of the ring goes past horizon, then instead of having a single loop with a C-shaped boundary, the method will still return two loops truncated at the limb, one clockwise and one counterclockwise, hence "closing" the C-shape twice. This behavior is considered acceptable.
If the carrier is a spacecraft, then the fovToBody
transform
can be computed from a SpacecraftState
as follows:
Transform inertToBody = state.getFrame().getTransformTo(body.getBodyFrame(), state.getDate()); Transform fovToBody = new Transform(state.getDate(), state.toTransform().getInverse(), inertToBody);
If the carrier is a ground station, located using a topocentric frame
and managing its pointing direction using a transform between the
dish frame and the topocentric frame, then the fovToBody
transform
can be computed as follows:
Transform topoToBody = topocentricFrame.getTransformTo(body.getBodyFrame(), date); Transform topoToDish = ... Transform fovToBody = new Transform(date, topoToDish.getInverse(), topoToBody);
Only the raw zone is used, the angular margin is ignored here.
fovToBody
- transform between the frame in which the Field Of View
is defined and body frame.body
- body surface the Field Of View will be projected onangularStep
- step used for boundary loops sampling (radians),
beware this is generally not an angle on the unit sphere, but rather a
phase angle used by the underlying Field Of View boundary modelprotected abstract Vector3D directionAt(double angle)
angle
- phase angle of the boundary directionCopyright © 2002-2020 CS Group. All rights reserved.