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 non-connected 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 © 2002-2019 CS Systèmes d'information. All rights reserved.