Isis 3 Programmer Reference
TriangularPlate.h
1 #ifndef TriangularPlate_h
2 #define TriangularPlate_h
3 
8 /* SPDX-License-Identifier: CC0-1.0 */
9 #include "AbstractPlate.h"
10 
11 #include "NaifDskApi.h"
12 
13 namespace Isis {
14 
15  class Angle;
16  class Distance;
17  class Intercept;
18  class Latitude;
19  class Longitude;
20  class SurfacePoint;
21 
34  class TriangularPlate : public AbstractPlate {
35  public:
36  TriangularPlate(const NaifTriangle &plate, const int &plateId = 0);
37  virtual ~TriangularPlate();
38 
39  int id() const;
40  QString name() const;
41 
42  Distance minRadius() const;
43  Distance maxRadius() const;
44 
45  double area() const;
46  NaifVector normal() const;
47  NaifVector center() const;
48 
49  Angle separationAngle(const NaifVector &raydir) const;
50 
51  bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const;
52  bool hasPoint(const Latitude &lat, const Longitude &lon) const;
53 
54  SurfacePoint *point(const Latitude &lat, const Longitude &lon) const;
55  Intercept *intercept(const NaifVertex &vertex, const NaifVector &raydir) const;
56 
57  NaifVertex vertex(int v) const;
58 
59  AbstractPlate *clone() const;
60 
61  protected:
62  bool findPlateIntercept(const NaifVertex &obs, const NaifVector &raydir,
63  NaifVertex &point) const;
64 
65  private:
66  TriangularPlate(); // Disallow an empty instantiation of the class
69  int m_plateId;
70 
71  };
72 };
73 
74 #endif
Isis::TriangularPlate::separationAngle
Angle separationAngle(const NaifVector &raydir) const
Computes the separation angle from the plate normal of a given vector.
Definition: TriangularPlate.cpp:153
Isis::NaifVertex
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3]
Definition: NaifDskApi.h:47
Isis::Latitude
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:51
Isis::TriangularPlate::vertex
NaifVertex vertex(int v) const
Returns the vth point of the triangle.
Definition: TriangularPlate.cpp:306
Isis::TriangularPlate::intercept
Intercept * intercept(const NaifVertex &vertex, const NaifVector &raydir) const
Conpute the intercept point on a triangular plate.
Definition: TriangularPlate.cpp:280
Isis::AbstractPlate
Abstract interface to a TIN plate.
Definition: AbstractPlate.h:46
Isis::TriangularPlate::point
SurfacePoint * point(const Latitude &lat, const Longitude &lon) const
Determine the intercept point of a lat/lon location for the plate.
Definition: TriangularPlate.cpp:237
Isis::Distance
Distance measurement, usually in meters.
Definition: Distance.h:34
Isis::Longitude
This class is designed to encapsulate the concept of a Longitude.
Definition: Longitude.h:40
Isis::TriangularPlate::maxRadius
Distance maxRadius() const
Determines the maximum radius from all the vertices of the plate.
Definition: TriangularPlate.cpp:64
Isis::TriangularPlate::hasPoint
bool hasPoint(const Latitude &lat, const Longitude &lon) const
Determines the give lat/lon point intercept the triangular plate.
Definition: TriangularPlate.cpp:198
Isis::TriangularPlate::clone
AbstractPlate * clone() const
Retrns a clone of the current plate.
Definition: TriangularPlate.cpp:333
Isis::NaifTriangle
TNT::Array2D< SpiceDouble > NaifTriangle
3-D triangle[3][3]
Definition: NaifDskApi.h:48
Isis::TriangularPlate::name
QString name() const
Gets the name of this Plate type.
Definition: TriangularPlate.cpp:46
Isis::TriangularPlate::m_plate
NaifTriangle m_plate
Tetrahedron, defined by the coordinate system origin and 3 vertices, used to represent the Triangular...
Definition: TriangularPlate.h:67
Isis::TriangularPlate::normal
NaifVector normal() const
Compute the surface normal of the plate.
Definition: TriangularPlate.cpp:115
Isis::Angle
Defines an angle and provides unit conversions.
Definition: Angle.h:45
Isis::TriangularPlate::findPlateIntercept
bool findPlateIntercept(const NaifVertex &obs, const NaifVector &raydir, NaifVertex &point) const
Determines of if given a vertex and look direction intercepts the plate.
Definition: TriangularPlate.cpp:357
Isis::TriangularPlate::area
double area() const
Returns the area of the plate in km.
Definition: TriangularPlate.cpp:85
Isis::Intercept
Container for a intercept condition.
Definition: Intercept.h:36
Isis::TriangularPlate::m_plateId
int m_plateId
ID for this plate on the ShapeModel.
Definition: TriangularPlate.h:69
Isis::TriangularPlate::minRadius
Distance minRadius() const
Gets the minimum radius.
Definition: TriangularPlate.cpp:70
Isis::NaifVector
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals.
Definition: NaifDskApi.h:46
Isis::SurfacePoint
This class defines a body-fixed surface point.
Definition: SurfacePoint.h:132
Isis::TriangularPlate
Specification for an abstract triangular plate.
Definition: TriangularPlate.h:34
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::TriangularPlate::hasIntercept
bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const
Determines if a look direction from a point intercepts the plate.
Definition: TriangularPlate.cpp:176