Isis 3 Programmer Reference
NaifDskShape.h
1 #ifndef NaifDskShape_h
2 #define NaifDskShape_h
3 
8 /* SPDX-License-Identifier: CC0-1.0 */
9 #include "ShapeModel.h"
10 
11 #include <vector>
12 
13 #include <QVector>
14 
15 #include "Intercept.h"
16 #include "NaifDskPlateModel.h"
17 
18 namespace Isis {
19  class Intercept;
20 
42  class NaifDskShape : public ShapeModel {
43  public:
44  // Constructors
45  NaifDskShape();
46  NaifDskShape(Target *target, Pvl &pvl);
48 
49  // Destructor
50  ~NaifDskShape();
51 
52  // Make parent functions visible
53  using Isis::ShapeModel::intersectSurface;
54 
55  // Intersect the shape model
56  bool intersectSurface(std::vector<double> observerPos,
57  std::vector<double> lookDirection);
58 
59  // Calculate the default normal of the current intersection point
61 
62  bool isDEM() const;
63 
64  // Calculate the surface normal of the current intersection point
66  void calculateLocalNormal(QVector<double *> cornerNeighborPoints);
68 
69  Distance localRadius(const Latitude &lat, const Longitude &lon);
70 
72 
73  const NaifDskPlateModel &model() const;
74  const Intercept *intercept() const;
75 
76  private:
77  // Disallow copying because ShapeModel is not copyable
79  NaifDskShape &operator=(const NaifDskShape &model);
80 
82  QScopedPointer<Intercept> m_intercept;
83 
84 
85  };
86 }
87 
88 #endif
Isis::NaifDskShape::ellipsoidNormal
QVector< double > ellipsoidNormal()
Compute the true surface normal vector of an ellipsoid.
Definition: NaifDskShape.cpp:271
Isis::NaifDskShape
Provides support for NAIF's Digital Shape Kernel (DSK)
Definition: NaifDskShape.h:42
Isis::Latitude
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:51
Isis::NaifDskShape::calculateDefaultNormal
void calculateDefaultNormal()
Return the surface normal of the ellipsoid as the default.
Definition: NaifDskShape.cpp:245
Isis::NaifDskShape::model
const NaifDskPlateModel & model() const
Returns a direct reference to the DSK plate model file interface.
Definition: NaifDskShape.cpp:304
Isis::NaifDskShape::isDEM
bool isDEM() const
Indicates that this shape model is not from a DEM.
Definition: NaifDskShape.cpp:201
Isis::Pvl
Container for cube-like labels.
Definition: Pvl.h:119
Isis::NaifDskShape::NaifDskShape
NaifDskShape()
Generic constructor sets type to a TIN.
Definition: NaifDskShape.cpp:35
Isis::NaifDskShape::intersectSurface
bool intersectSurface(std::vector< double > observerPos, std::vector< double > lookDirection)
Compute a DEM intersection from and observer and look direction.
Definition: NaifDskShape.cpp:133
Isis::NaifDskShape::calculateSurfaceNormal
void calculateSurfaceNormal()
Return the surface normal of the ellipsi=oud.
Definition: NaifDskShape.cpp:251
Isis::NaifDskShape::intercept
const Intercept * intercept() const
Returns a pointer to the current intercept.
Definition: NaifDskShape.cpp:320
Isis::NaifDskShape::setLocalNormalFromIntercept
void setLocalNormalFromIntercept()
Set the normal vector to the intercept point normal.
Definition: NaifDskShape.cpp:179
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::NaifDskShape::localRadius
Distance localRadius(const Latitude &lat, const Longitude &lon)
Determine DEM radius at a given lat/lon grid point.
Definition: NaifDskShape.cpp:163
Isis::NaifDskShape::m_intercept
QScopedPointer< Intercept > m_intercept
Pointer to the shape's intercept.
Definition: NaifDskShape.h:82
Isis::ShapeModel
Define shapes and provide utilities for Isis targets.
Definition: ShapeModel.h:62
Isis::Intercept
Container for a intercept condition.
Definition: Intercept.h:36
QVector
This is free and unencumbered software released into the public domain.
Definition: Calculator.h:18
Isis::NaifDskPlateModel
Implementation interface API for NAIF's DSK plate model.
Definition: NaifDskPlateModel.h:49
Isis::NaifDskShape::m_model
NaifDskPlateModel m_model
Plate model to intersect.
Definition: NaifDskShape.h:81
Isis::Target
This class is used to create and store valid Isis targets.
Definition: Target.h:63
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::NaifDskShape::~NaifDskShape
~NaifDskShape()
Destructor - cleanup is handled automagically.
Definition: NaifDskShape.cpp:112
Isis::NaifDskShape::calculateLocalNormal
void calculateLocalNormal(QVector< double * > cornerNeighborPoints)
Compute the normal for a local region of surface points.
Definition: NaifDskShape.cpp:231