Isis Developer Reference
NaifDskShape.h
Go to the documentation of this file.
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
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 
81  NaifDskPlateModel m_model;
82  QScopedPointer<Intercept> m_intercept;
83 
84 
85  };
86 }
87 
88 #endif
Isis::PvlObject::findGroup
PvlGroupIterator findGroup(const QString &name, PvlGroupIterator beg, PvlGroupIterator end)
Find a group with the specified name, within these indexes.
Definition: PvlObject.h:129
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::NaifVertex
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3]
Definition: NaifDskApi.h:47
NaifDskApi.h
Isis::Latitude
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:51
Isis::ShapeModel::surfaceIntersection
SurfacePoint * surfaceIntersection() const
Returns the surface intersection for this ShapeModel.
Definition: ShapeModel.cpp:358
Isis::ShapeModel::setSurfacePoint
virtual void setSurfacePoint(const SurfacePoint &surfacePoint)
Set surface intersection point.
Definition: ShapeModel.cpp:565
SpecialPixel.h
ShapeModel.h
Isis::ShapeModel::targetRadii
std::vector< Distance > targetRadii() const
Returns the radii of the body in km.
Definition: ShapeModel.cpp:465
Isis::NaifDskShape::calculateDefaultNormal
void calculateDefaultNormal()
Return the surface normal of the ellipsoid as the default.
Definition: NaifDskShape.cpp:245
Target.h
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
Longitude.h
NaifStatus.h
Isis::PvlContainer::hasKeyword
bool hasKeyword(const QString &name) const
Check to see if a keyword exists.
Definition: PvlContainer.cpp:159
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
NaifDskPlateModel.h
Isis::NaifStatus::CheckErrors
static void CheckErrors(bool resetNaif=true)
This method looks for any naif errors that might have occurred.
Definition: NaifStatus.cpp:28
Isis::ShapeModel::setNormal
void setNormal(const std::vector< double >)
Sets the normal for the currect intersection point.
Definition: ShapeModel.cpp:487
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::ShapeModel::intersectSurface
virtual bool intersectSurface(std::vector< double > observerPos, std::vector< double > lookDirection)=0
Isis::NaifDskShape::intercept
const Intercept * intercept() const
Returns a pointer to the current intercept.
Definition: NaifDskShape.cpp:320
IString.h
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::PvlObject::Traverse
@ Traverse
Search child objects.
Definition: PvlObject.h:158
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::ShapeModel::setName
void setName(QString name)
Sets the shape name.
Definition: ShapeModel.cpp:532
Latitude.h
Isis::NaifDskPlateModel::intercept
Intercept * intercept(const NaifVertex &vertex, const NaifVector &raydir) const
Determine a target body intercept point from an observer and look direction.
Definition: NaifDskPlateModel.cpp:179
Isis::PvlGroup
Contains multiple PvlContainers.
Definition: PvlGroup.h:41
Pvl.h
_FILEINFO_
#define _FILEINFO_
Macro for the filename and line number.
Definition: IException.h:24
SurfacePoint.h
Intercept.h
NaifDskShape.h
Isis::IException
Isis exception class.
Definition: IException.h:91
Statistics.h
IException.h
Isis::IException::Programmer
@ Programmer
This error is for when a programmer made an API call that was illegal.
Definition: IException.h:146
std
Namespace for the standard library.
Isis::ShapeModel::hasValidTarget
bool hasValidTarget() const
Returns the status of the target.
Definition: ShapeModel.cpp:449
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
Isis::SurfacePoint::ToNaifArray
void ToNaifArray(double naifOutput[3]) const
A naif array is a c-style array of size 3.
Definition: SurfacePoint.cpp:870
Isis::ShapeModel::hasIntersection
bool hasIntersection()
Returns intersection status.
Definition: ShapeModel.cpp:368
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::NaifVector
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals.
Definition: NaifDskApi.h:46
Isis::Target
This class is used to create and store valid Isis targets.
Definition: Target.h:63
Isis::NaifDskPlateModel::point
SurfacePoint * point(const Latitude &lat, const Longitude &lon) const
Get surface intersection for a lat/lon grid point.
Definition: NaifDskPlateModel.cpp:121
Isis::SurfacePoint
This class defines a body-fixed surface point.
Definition: SurfacePoint.h:132
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