Isis 3 Programmer Reference
Isis::AbstractPlate Class Referenceabstract

Abstract interface to a TIN plate. More...

#include <AbstractPlate.h>

Inheritance diagram for Isis::AbstractPlate:
Inheritance graph
Collaboration diagram for Isis::AbstractPlate:
Collaboration graph

Public Member Functions

virtual ~AbstractPlate ()
 Empty destructor for an AbstractPlate object. More...
 
virtual QString name () const =0
 Gets the name of this Plate type. More...
 
virtual Distance minRadius () const =0
 Gets the minimum radius. More...
 
virtual Distance maxRadius () const =0
 Gets the maximum radius. More...
 
virtual double area () const =0
 Gets the area of the plate. More...
 
virtual NaifVector normal () const =0
 Gets the normal. More...
 
virtual Angle separationAngle (const NaifVector &raydir) const =0
 Gets the separation angle. More...
 
virtual bool hasIntercept (const NaifVertex &vertex, const NaifVector &raydir) const =0
 Determines if a look direction from a point intercepts the plate. More...
 
virtual bool hasPoint (const Latitude &lat, const Longitude &lon) const =0
 Determines the give lat/lon point intercept the triangular plate. More...
 
virtual Interceptintercept (const NaifVertex &vertex, const NaifVector &raydir) const =0
 Conpute the intercept point on a triangular plate. More...
 
virtual SurfacePointpoint (const Latitude &lat, const Longitude &lon) const =0
 Determine the intercept point of a lat/lon location for the plate. More...
 
virtual AbstractPlateclone () const =0
 Returns a clone of the current plate. More...
 

Protected Member Functions

 AbstractPlate ()
 Empty constructor for an AbstractPlate object. More...
 
Interceptconstruct (const NaifVertex &vertex, const NaifVector &raydir, SurfacePoint *ipoint) const
 Construct an intercept from a clone of this plate as well as the given vertex, direction vector, and surface point. More...
 

Private Member Functions

 AbstractPlate (const AbstractPlate &plate)
 Copy contructor. More...
 
AbstractPlateoperator= (const AbstractPlate &plate)
 Assignment operator. More...
 

Detailed Description

Abstract interface to a TIN plate.

This abstract class defines the interface for triangular plate. The plate is assumed to be a set of 3 body-fixed vertex points that describe a portion of the surface digital elevation model (DEM).

The interface allows for repeated queries (e.g., ray intersection, point containment) of the plate represented by the object containing the plate.

This class is not directly instantiable but is typically provided by a distinct plate model implementation (e.g., NAIF DSK).

This class can be cloned but not copied directly.

Author
2014-02-25 Kris Becker
History:

2014-02-15 Kris Becker - Original Version

2015-03-08 Jeannie Backer - Added documentation and test. Added class to ISIS trunk. References #2035

2017-06-28 Makayla Shepherd - Updated documentation. References #4807.

Definition at line 60 of file AbstractPlate.h.

Constructor & Destructor Documentation

◆ ~AbstractPlate()

Isis::AbstractPlate::~AbstractPlate ( )
virtual

Empty destructor for an AbstractPlate object.

Definition at line 50 of file AbstractPlate.cpp.

◆ AbstractPlate() [1/2]

Isis::AbstractPlate::AbstractPlate ( )
protected

Empty constructor for an AbstractPlate object.

This constructor is protected.

Definition at line 43 of file AbstractPlate.cpp.

◆ AbstractPlate() [2/2]

Isis::AbstractPlate::AbstractPlate ( const AbstractPlate plate)
private

Copy contructor.

Do not use, clone instead.

Parameters
plateAbstractPlate to copy

Member Function Documentation

◆ area()

virtual double Isis::AbstractPlate::area ( ) const
pure virtual

Gets the area of the plate.

This is a pure virtual function.

Returns
double The area of the plate.

Implemented in Isis::TriangularPlate.

◆ clone()

virtual AbstractPlate* Isis::AbstractPlate::clone ( ) const
pure virtual

Returns a clone of the current plate.

Provides replication of the current triangular plate. Note this implementation returns a shared copy of the triangular plate as long as the plate type is shared by copy (TNT library is). This is a pure virtual function.

Returns
AbstractPlate* Returns a copy of the plate

Implemented in Isis::TriangularPlate.

Referenced by construct().

◆ construct()

Intercept * Isis::AbstractPlate::construct ( const NaifVertex vertex,
const NaifVector raydir,
SurfacePoint ipoint 
) const
protected

Construct an intercept from a clone of this plate as well as the given vertex, direction vector, and surface point.

Parameters
vertexObserver position
raydirLook direction
ipointSurface point of the intercept location on the body
Returns
Intercept * A pointer to an intercept constructed with the vertex, raydir, ipoint and clone of this AbstractPlate.

Definition at line 75 of file AbstractPlate.cpp.

References clone().

◆ hasIntercept()

virtual bool Isis::AbstractPlate::hasIntercept ( const NaifVertex vertex,
const NaifVector raydir 
) const
pure virtual

Determines if a look direction from a point intercepts the plate.

Given a point in space in body fixed coordinates and a look direction, this method determines the point of intercept on the plate. This is a pure virtual function.

Parameters
vertexAn observer point in space in body fixed coordinates
raydirA look direction vector
Returns
bool Returns true if the look direction from the observer intercepts the plate, otherwise returns false

Implemented in Isis::TriangularPlate.

◆ hasPoint()

virtual bool Isis::AbstractPlate::hasPoint ( const Latitude lat,
const Longitude lon 
) const
pure virtual

Determines the give lat/lon point intercept the triangular plate.

Given a latitude/longitude point, this method determines if it intercepts the plate. This is a pure virtual function.

Parameters
latThe latitude of the given grid point
lonLongitude of the given point
Returns
bool Returns true if the lat/lon point intercepts the plate, false otherwise

Implemented in Isis::TriangularPlate.

◆ intercept()

virtual Intercept* Isis::AbstractPlate::intercept ( const NaifVertex vertex,
const NaifVector raydir 
) const
pure virtual

Conpute the intercept point on a triangular plate.

Given a point in space and a look direction, compute the intercept point on a triangular plate. If the intercept point does not exist, return a null pointer. This is a pure virtual function.

Parameters
vertexSpecifies a point in space of a body fixed coordinate
raydirSpecifies a look direction from the vertex in body fixed coordinates. It can be of any magnitude.
Returns
Intercept* Returns the intercept point if it exists on the triangular plate, otherwise returns a null pointer.

Implemented in Isis::TriangularPlate.

◆ maxRadius()

virtual Distance Isis::AbstractPlate::maxRadius ( ) const
pure virtual

Gets the maximum radius.

This is a pure virtual function.

Returns
Distance The maximum radius

Implemented in Isis::TriangularPlate.

◆ minRadius()

virtual Distance Isis::AbstractPlate::minRadius ( ) const
pure virtual

Gets the minimum radius.

This is a pure virtual function.

Returns
Distance The minimum radius

Implemented in Isis::TriangularPlate.

◆ name()

QString Isis::AbstractPlate::name ( ) const
pure virtual

Gets the name of this Plate type.

Returns
QString AbstractPlate
QString The name of this plate, "AbstractPlate"

Implemented in Isis::TriangularPlate.

Definition at line 59 of file AbstractPlate.cpp.

◆ normal()

virtual NaifVector Isis::AbstractPlate::normal ( ) const
pure virtual

Gets the normal.

This is a pure virtual function.

Returns
NaifVector The normal

Implemented in Isis::TriangularPlate.

◆ operator=()

AbstractPlate& Isis::AbstractPlate::operator= ( const AbstractPlate plate)
private

Assignment operator.

Parameters
plateAbstractPlate to copy
Returns
AbstractPlate

◆ point()

virtual SurfacePoint* Isis::AbstractPlate::point ( const Latitude lat,
const Longitude lon 
) const
pure virtual

Determine the intercept point of a lat/lon location for the plate.

Determines if a lat/lon point intercepts a plate. Given a latitude and longitude coordinate, this method converts the point to a body fixed X/Y/Z value and computes intercept point within the boundaries if the plate. If no intercept is found, a null pointer is returned. This is a pure virtual function.

Parameters
latLatitude of the point
lonLongitude of the point
Returns
SurfacePoint* Pointer to the intersection of the point on the triangle. If an intersection does not exist a null pointer is returned.

Implemented in Isis::TriangularPlate.

◆ separationAngle()

virtual Angle Isis::AbstractPlate::separationAngle ( const NaifVector raydir) const
pure virtual

Gets the separation angle.

This is a pure virtual function.

Parameters
raydirGiven a direction vector, compute the angle of separation between it and the plate normal vector
Returns
Angle The separation angle

Implemented in Isis::TriangularPlate.


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