Isis 3 Programmer Reference
TriangularPlate.h
Go to the documentation of this file.
1 #ifndef TriangularPlate_h
2 #define TriangularPlate_h
3 
25 #include "AbstractPlate.h"
26 
27 #include "NaifDskApi.h"
28 
29 namespace Isis {
30 
31  class Angle;
32  class Distance;
33  class Intercept;
34  class Latitude;
35  class Longitude;
36  class SurfacePoint;
37 
50  class TriangularPlate : public AbstractPlate {
51  public:
52  TriangularPlate(const NaifTriangle &plate, const int &plateId = 0);
53  virtual ~TriangularPlate();
54 
55  int id() const;
56  QString name() const;
57 
58  Distance minRadius() const;
59  Distance maxRadius() const;
60 
61  double area() const;
62  NaifVector normal() const;
63  NaifVector center() const;
64 
65  Angle separationAngle(const NaifVector &raydir) const;
66 
67  bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const;
68  bool hasPoint(const Latitude &lat, const Longitude &lon) const;
69 
70  SurfacePoint *point(const Latitude &lat, const Longitude &lon) const;
71  Intercept *intercept(const NaifVertex &vertex, const NaifVector &raydir) const;
72 
73  NaifVertex vertex(int v) const;
74 
75  AbstractPlate *clone() const;
76 
77  protected:
78  bool findPlateIntercept(const NaifVertex &obs, const NaifVector &raydir,
79  NaifVertex &point) const;
80 
81  private:
82  TriangularPlate(); // Disallow an empty instantiation of the class
85  int m_plateId;
86 
87  };
88 };
89 
90 #endif
This class defines a body-fixed surface point.
Definition: SurfacePoint.h:148
NaifVertex vertex(int v) const
Returns the vth point of the triangle.
SurfacePoint * point(const Latitude &lat, const Longitude &lon) const
Determine the intercept point of a lat/lon location for the plate.
Abstract interface to a TIN plate.
Definition: AbstractPlate.h:60
NaifVector normal() const
Compute the surface normal of the plate.
AbstractPlate * clone() const
Retrns a clone of the current plate.
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:63
Distance minRadius() const
Gets the minimum radius.
int m_plateId
ID for this plate on the ShapeModel.
Distance measurement, usually in meters.
Definition: Distance.h:47
Angle separationAngle(const NaifVector &raydir) const
Computes the separation angle from the plate normal of a given vector.
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals.
Definition: NaifDskApi.h:61
double area() const
Returns the area of the plate in km.
This class is designed to encapsulate the concept of a Longitude.
Definition: Longitude.h:52
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3]
Definition: NaifDskApi.h:62
Distance maxRadius() const
Determines the maximum radius from all the vertices of the plate.
QString name() const
Gets the name of this Plate type.
Container for a intercept condition.
Definition: Intercept.h:51
Intercept * intercept(const NaifVertex &vertex, const NaifVector &raydir) const
Conpute the intercept point on a triangular plate.
bool hasPoint(const Latitude &lat, const Longitude &lon) const
Determines the give lat/lon point intercept the triangular plate.
bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const
Determines if a look direction from a point intercepts the plate.
Defines an angle and provides unit conversions.
Definition: Angle.h:62
Specification for an abstract triangular plate.
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
bool findPlateIntercept(const NaifVertex &obs, const NaifVector &raydir, NaifVertex &point) const
Determines of if given a vertex and look direction intercepts the plate.
NaifTriangle m_plate
Tetrahedron, defined by the coordinate system origin and 3 vertices, used to represent the Triangular...
TNT::Array2D< SpiceDouble > NaifTriangle
3-D triangle[3][3]
Definition: NaifDskApi.h:63