Isis 3 Programmer Reference
Isis::PixelFOV Class Reference

This class defines a field of view. More...

#include <PixelFOV.h>

Collaboration diagram for Isis::PixelFOV:
Collaboration graph

Public Member Functions

 PixelFOV ()
 Constructs an empty PixelFOV object.
 
 PixelFOV (const PixelFOV &other)
 
 ~PixelFOV ()
 Destroys a PixelFOV object/.
 
QList< QList< QPointF > > latLonVertices (Camera &camera, const double sample, const double line, const int numIfovs=1) const
 Produces an fov for the given line sample.
 

Private Member Functions

QList< QPointF > instantaneousFov (Camera &camera) const
 Compute the instantaneous fov for the pixel and time that the input camera is set to.
 
QList< QPointF > envelope (QList< QPointF > vertices) const
 Produces a list of boundary points for the convex hull containing the input vertices.
 
QList< QList< QPointF > > splitIfov (QList< QPointF > vertices) const
 Split an instantaneous field of view across the 360/0 boundary.
 

Detailed Description

This class defines a field of view.

This class defines a field of view for a given camera. Field of views are returned as point clouds defining the boundary of the field of view. The number of vertices is instrment dependent. The default Camera::PixelIfovOffsets assumes a square pixel and simply returns the offsets of the four corner vertices in microns from the current pixel center. If the instruments pixels are not square, the Camera::PixelIfov will need to be implemented in the the instrument's camera model. For an example, see VimsCamera::PixelIfov().

Author
2013-02-15 Tracie Sucharski
History

2013-02-15 Tracie Sucharski - Original version of PixelIfov class.

2016-10-24 Jesse Mapel - Renamed and expanded functionality of PixelIfov to allow for both instantaneous and full field of views. References #4476.

2016-10-24 Jeannie Backer - Improved coding standards. References #4476.

Definition at line 36 of file PixelFOV.h.

Constructor & Destructor Documentation

◆ PixelFOV()

Isis::PixelFOV::PixelFOV ( )

Constructs an empty PixelFOV object.

Definition at line 33 of file PixelFOV.cpp.

◆ ~PixelFOV()

Isis::PixelFOV::~PixelFOV ( )

Destroys a PixelFOV object/.

Definition at line 41 of file PixelFOV.cpp.

Member Function Documentation

◆ envelope()

QList< QPointF > Isis::PixelFOV::envelope ( QList< QPointF > vertices) const
private

Produces a list of boundary points for the convex hull containing the input vertices.

Parameters
verticesThe list of points to be enveloped.
Returns
QList<QPointF> A List of points defining the enveloping polygon.

Definition at line 231 of file PixelFOV.cpp.

Referenced by latLonVertices().

◆ instantaneousFov()

QList< QPointF > Isis::PixelFOV::instantaneousFov ( Camera & camera) const
private

Compute the instantaneous fov for the pixel and time that the input camera is set to.

By default the fov will be defined by the four corner points of the pixel, but individual camera models may override this in Camera::PixelIfovOffsets(). The longitude coordinates will always been in 0-360 domain.

Parameters
cameraThe camera used to compute the fov.
Returns
QList<QPointF> The lat, lon points defining the boundary of the fov.
See also
Camera::PixelIfovOffsets

Definition at line 188 of file PixelFOV.cpp.

References Isis::Camera::DistortionMap(), Isis::Camera::FocalLength(), Isis::Sensor::LookDirection(), Isis::Camera::PixelIfovOffsets(), Isis::Sensor::SetLookDirection(), Isis::CameraDistortionMap::UndistortedFocalPlaneZ(), Isis::Sensor::UniversalLatitude(), and Isis::Sensor::UniversalLongitude().

Referenced by latLonVertices().

◆ latLonVertices()

QList< QList< QPointF > > Isis::PixelFOV::latLonVertices ( Camera & camera,
const double sample,
const double line,
const int numIfovs = 1 ) const

Produces an fov for the given line sample.

This produces instantaneous fovs at several times during a pixel's exposure. Then, it combines those instantaneous fovs into a full fov for the entire duration of the pixel. By default produces an instantaneous fov. A full fov can be produced by using numIfovs > 1.

Parameters
cameraA pointer to the cube's camera.
sampleThe sample of the pixel.
lineThe line of the pixel.
numIfovsThe number of instantaneous fovs that will be combined. Defaults to 1, ie. an instantaneous fov.
Returns
QList<QList<QPointF>> A list of points defining the boundary of the full fov. If the pixel crosses the 360/0 boundary, this will contain 2 lists of points, one on each side of the boundary.
Exceptions
IException::Programmer"The number of instantaneous field of views must be a positive integer."

Definition at line 67 of file PixelFOV.cpp.

References envelope(), Isis::Camera::exposureDuration(), instantaneousFov(), Isis::IException::Programmer, Isis::Camera::SetImage(), splitIfov(), and Isis::IException::Unknown.

◆ splitIfov()

QList< QList< QPointF > > Isis::PixelFOV::splitIfov ( QList< QPointF > vertices) const
private

Split an instantaneous field of view across the 360/0 boundary.

Parameters
verticesA list of points defining the boundary of the unsplit IFOV
Returns
QList<QList<QPointF>> A list of point clouds defining the boundaries of the pieces of the split IFOV. Each point cloud represents a component of the IFOV.
See also
PolygonTools::SplitPolygonOn360

Definition at line 268 of file PixelFOV.cpp.

References Isis::PolygonTools::SplitPolygonOn360().

Referenced by latLonVertices().


The documentation for this class was generated from the following files: