Isis 3 Developer Reference
NaifDskPlateModel.h
Go to the documentation of this file.
1 #ifndef NaifDskPlateModel_h
2 #define NaifDskPlateModel_h
3 
26 #include <QMutex>
27 #include <QSharedPointer>
28 #include <QString>
29 
30 #include "NaifDskApi.h"
31 
32 namespace Isis {
33 
34  class Intercept;
35  class Latitude;
36  class Longitude;
37  class SurfacePoint;
38 
66 
67  public:
69  NaifDskPlateModel(const QString &dskfile);
70  virtual ~NaifDskPlateModel();
71 
72  bool isValid() const;
73  QString filename() const;
74 
75  int size() const;
76  SpiceInt numberPlates() const;
77  SpiceInt numberVertices() const;
78 
79  SurfacePoint *point(const Latitude &lat, const Longitude &lon) const;
80  Intercept *intercept(const NaifVertex &vertex, const NaifVector &raydir) const;
81  // Intercept *intercept(const SurfacePoint &pnt) const;
82 
83  // Lower level I/O
84  bool isPlateIdValid(const SpiceInt plateid) const;
85  SpiceInt plateIdOfIntercept(const NaifVertex &vertex,
86  const NaifVector &raydir,
87  NaifVertex &xpoint) const;
88  NaifTriangle plate(SpiceInt plateid) const;
89 
90  NaifDskPlateModel *clone() const;
91 
92  private:
97  enum ErrAction { Throw,
98  NoThrow
99  };
100 
112  class NaifDskDescriptor {
113  public:
114  NaifDskDescriptor();
115  ~NaifDskDescriptor();
116 
117  QString m_dskfile;
118  SpiceInt m_handle;
119  SpiceDLADescr m_dladsc;
121  SpiceDSKDescr m_dskdsc;
122  SpiceInt m_plates;
123  SpiceInt m_vertices;
124  QMutex m_mutex;
125  };
126 
127  // Shared file descriptor supports copying of object
130 
131  NaifDskDescriptor *openDSK(const QString &dskfile);
132  bool verify(const bool &test, const QString &errmsg,
133  const ErrAction &action = Throw) const;
134  SurfacePoint *makePoint(const NaifVertex &v) const;
135  };
136 
137 } // namespace Isis
138 
139 #endif
This class defines a body-fixed surface point.
Definition: SurfacePoint.h:148
virtual ~NaifDskPlateModel()
Definition: NaifDskPlateModel.cpp:76
SpiceInt numberPlates() const
Returns the number of plates in the model.
Definition: NaifDskPlateModel.cpp:103
NaifDskPlateModel * clone() const
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:63
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals.
Definition: NaifDskApi.h:61
Intercept * intercept(const NaifVertex &vertex, const NaifVector &raydir) const
Determine a target body intercept point from an observer and look direction.
Definition: NaifDskPlateModel.cpp:196
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
SpiceInt numberVertices() const
Returns the number of vertices in the plate model.
Definition: NaifDskPlateModel.cpp:111
SurfacePoint * point(const Latitude &lat, const Longitude &lon) const
Get surface intersection for a lat/lon grid point.
Definition: NaifDskPlateModel.cpp:138
NaifTriangle plate(SpiceInt plateid) const
Retrieve the triangular plate identified by its ID.
Definition: NaifDskPlateModel.cpp:307
bool isValid() const
Checks validity of the object.
Definition: NaifDskPlateModel.cpp:81
Container for a intercept condition.
Definition: Intercept.h:51
NaifDskPlateModel()
Default empty constructor.
Definition: NaifDskPlateModel.cpp:61
int size() const
Returns the number of plates in the DSK file - mostly for conformity.
Definition: NaifDskPlateModel.cpp:96
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
QString filename() const
Returns the nane of the NAIF DSK file.
Definition: NaifDskPlateModel.cpp:88
Implementation interface API for NAIF&#39;s DSK plate model.
Definition: NaifDskPlateModel.h:65
bool isPlateIdValid(const SpiceInt plateid) const
Determines if the plate ID is valid.
Definition: NaifDskPlateModel.cpp:230
TNT::Array2D< SpiceDouble > NaifTriangle
3-D triangle[3][3]
Definition: NaifDskApi.h:63
SpiceInt plateIdOfIntercept(const NaifVertex &vertex, const NaifVector &raydir, NaifVertex &xpoint) const
Primary API to determine ray intercept from observer/look direction.
Definition: NaifDskPlateModel.cpp:253