public class FieldOfView extends Object
Fields Of View are zones defined on the unit sphere centered on the spacecraft. They can have any shape, they can be split in several nonconnected patches and can have holes.
FootprintOverlapDetector
Constructor and Description 

FieldOfView(SphericalPolygonsSet zone,
double margin)
Build a new instance.

FieldOfView(Vector3D center,
Vector3D meridian,
double insideRadius,
int n,
double margin)
Build Field Of View with a regular polygon shape.

FieldOfView(Vector3D center,
Vector3D axis1,
double halfAperture1,
Vector3D axis2,
double halfAperture2,
double margin)
Build a Field Of View with dihedral shape (i.e.

Modifier and Type  Method and Description 

double 
getMargin()
Get the angular margin to apply (radians).

SphericalPolygonsSet 
getZone()
Get the interior zone.

double 
offsetFromBoundary(Vector3D lineOfSight)
Get the angular offset of target point with respect to the Field Of View Boundary.

public FieldOfView(SphericalPolygonsSet zone, double margin)
zone
 interior of the Field Of View, in spacecraft framemargin
 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 FieldOfView(Vector3D center, Vector3D axis1, double halfAperture1, Vector3D axis2, double halfAperture2, double margin)
center
 Direction of the FOV center, in spacecraft frameaxis1
 FOV dihedral axis 1, in spacecraft framehalfAperture1
 FOV dihedral half aperture angle 1,
must be less than π/2, i.e. full dihedra must be smaller then
an hemisphereaxis2
 FOV dihedral axis 2, in spacecraft framehalfAperture2
 FOV dihedral half aperture angle 2,
must be less than π/2, i.e. full dihedra must be smaller then
an hemispheremargin
 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 FieldOfView(Vector3D center, Vector3D meridian, double insideRadius, int n, double margin)
center
 center of the polygon (the center is in the inside part)meridian
 point defining the reference meridian for middle of first edgeinsideRadius
 distance of the edges middle points to the center
(the polygon vertices will therefore be farther away from the center)n
 number of sides of the polygonmargin
 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 SphericalPolygonsSet getZone()
public double getMargin()
public double offsetFromBoundary(Vector3D lineOfSight)
The offset is roughly an angle with respect to the closest boundary point, corrected by the margin and using some approximation far from the Field Of View. It is positive if the target is outside of the Field Of view, negative inside, and zero if the point is exactly on the boundary (always taking the margin into account).
As Field Of View can have complex shapes that may require long computation, when the target point can be proven to be outside of the Field Of View, a faster but approximate computation is done, that underestimate the offset. This approximation is only performed about 0.01 radians outside of the zone and is designed to still return a positive value if the full accurate computation would return a positive value. When target point is close to the zone (and furthermore when it is inside the zone), the full accurate computation is performed. This setup allows this offset to be used as a reliable way to detect Field Of View boundary crossings, which correspond to sign changes of the offset.
lineOfSight
 line of sight from the center of the Field Of View support
unit sphere to the target in Field Of View canonical frameCopyright © 20022019 CS Systèmes d'information. All rights reserved.