Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Secure .gov websites use HTTPS
A lock ( ) or https:// means you’ve safely connected to the .gov website. Share sensitive information only on official, secure websites.

Isis 3 Programmer Reference
NaifDskPlateModel.h
1#ifndef NaifDskPlateModel_h
2#define NaifDskPlateModel_h
7
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <QMutex>
11#include <QSharedPointer>
12#include <QString>
13
14#include "NaifDskApi.h"
15
16namespace Isis {
17
18 class Intercept;
19 class Latitude;
20 class Longitude;
21 class SurfacePoint;
22
50
51 public:
53 NaifDskPlateModel(const QString &dskfile);
54 virtual ~NaifDskPlateModel();
55
56 bool isValid() const;
57 QString filename() const;
58
59 int size() const;
60 SpiceInt numberPlates() const;
61 SpiceInt numberVertices() const;
62
63 SurfacePoint *point(const Latitude &lat, const Longitude &lon) const;
64 Intercept *intercept(const NaifVertex &vertex, const NaifVector &raydir) const;
65 // Intercept *intercept(const SurfacePoint &pnt) const;
66
67 // Lower level I/O
68 bool isPlateIdValid(const SpiceInt plateid) const;
69 SpiceInt plateIdOfIntercept(const NaifVertex &vertex,
70 const NaifVector &raydir,
71 NaifVertex &xpoint) const;
72 NaifTriangle plate(SpiceInt plateid) const;
73
74 NaifDskPlateModel *clone() const;
75
76 private:
83 };
84
96 class NaifDskDescriptor {
97 public:
98 NaifDskDescriptor();
99 ~NaifDskDescriptor();
100
101 QString m_dskfile;
102 SpiceInt m_handle;
103 SpiceDLADescr m_dladsc;
105 SpiceDSKDescr m_dskdsc;
106 SpiceInt m_plates;
107 SpiceInt m_vertices;
108 QMutex m_mutex;
109 };
110
111 // Shared file descriptor supports copying of object
112 typedef QSharedPointer<NaifDskDescriptor> SharedNaifDskDescriptor;
113 SharedNaifDskDescriptor m_dsk;
114
115 NaifDskDescriptor *openDSK(const QString &dskfile);
116 bool verify(const bool &test, const QString &errmsg,
117 const ErrAction &action = Throw) const;
118 SurfacePoint *makePoint(const NaifVertex &v) const;
119 };
120
121} // namespace Isis
122
123#endif
Container for a intercept condition.
Definition Intercept.h:36
This class is designed to encapsulate the concept of a Latitude.
Definition Latitude.h:51
This class is designed to encapsulate the concept of a Longitude.
Definition Longitude.h:40
SpiceDLADescr m_dladsc
The DLA descriptor of the DSK segment representing the target surface.
SpiceInt m_plates
Number of Plates in the model.
SpiceInt m_vertices
Number of vertices defining the plate.
QString m_dskfile
The NAIF DSK file representing this plate's shape model.
SpiceInt m_handle
The DAS file handle of the DSK file.
SpiceDSKDescr m_dskdsc
The DSK descriptor.
bool isPlateIdValid(const SpiceInt plateid) const
Determines if the plate ID is valid.
ErrAction
Enumeration to indicate whether to throw an exception if an error occurs.
@ NoThrow
Do not throw an exception if an error occurs.
@ Throw
Throw an exception if an error occurs.
SpiceInt numberPlates() const
Returns the number of plates in the model.
SharedNaifDskDescriptor m_dsk
Shared pointer to the NaifDskDescriptor for this plate.
QString filename() const
Returns the nane of the NAIF DSK file.
Intercept * intercept(const NaifVertex &vertex, const NaifVector &raydir) const
Determine a target body intercept point from an observer and look direction.
int size() const
Returns the number of plates in the DSK file - mostly for conformity.
bool verify(const bool &test, const QString &errmsg, const ErrAction &action=Throw) const
Convenience method for generalized error reporting.
NaifTriangle plate(SpiceInt plateid) const
Retrieve the triangular plate identified by its ID.
NaifDskPlateModel()
Default empty constructor.
SurfacePoint * makePoint(const NaifVertex &v) const
Construct and return a SurfacePoint pointer.
SpiceInt plateIdOfIntercept(const NaifVertex &vertex, const NaifVector &raydir, NaifVertex &xpoint) const
Primary API to determine ray intercept from observer/look direction.
bool isValid() const
Checks validity of the object.
SpiceInt numberVertices() const
Returns the number of vertices in the plate model.
SurfacePoint * point(const Latitude &lat, const Longitude &lon) const
Get surface intersection for a lat/lon grid point.
NaifDskDescriptor * openDSK(const QString &dskfile)
Opens a valid NAIF DSK plate model file.
This class defines a body-fixed surface point.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals.
Definition NaifDskApi.h:46
TNT::Array2D< SpiceDouble > NaifTriangle
3-D triangle[3][3]
Definition NaifDskApi.h:48
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3]
Definition NaifDskApi.h:47