Isis Developer Reference
NaifDskShape.h
Go to the documentation of this file.
1#ifndef NaifDskShape_h
2#define NaifDskShape_h
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
18namespace Isis {
19 class Intercept;
20
42 class NaifDskShape : public ShapeModel {
43 public:
44 // Constructors
46 NaifDskShape(Target *target, Pvl &pvl);
48
49 // Destructor
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 bool intersectSurface(const SurfacePoint &surfpt,
60 const std::vector<double> &observerPos,
61 const bool &backCheck=true);
62
63 // Calculate the default normal of the current intersection point
65
66 bool isDEM() const;
67
68 // Calculate the surface normal of the current intersection point
70 void calculateLocalNormal(QVector<double *> cornerNeighborPoints);
72
73 Distance localRadius(const Latitude &lat, const Longitude &lon);
74
75 QVector<double> ellipsoidNormal();
76
77 const NaifDskPlateModel &model() const;
78 const Intercept *intercept() const;
79
80
81 private:
82 // Disallow copying because ShapeModel is not copyable
84 NaifDskShape &operator=(const NaifDskShape &model);
85
86 NaifDskPlateModel m_model;
87 QScopedPointer<Intercept> m_intercept;
88
89
90 };
91}
92
93#endif
Distance measurement, usually in meters.
Definition Distance.h:34
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
Implementation interface API for NAIF's DSK plate model.
Definition NaifDskPlateModel.h:49
Provides support for NAIF's Digital Shape Kernel (DSK)
Definition NaifDskShape.h:42
void setLocalNormalFromIntercept()
Set the local normal vector to the intercept point normal.
Definition NaifDskShape.cpp:213
const Intercept * intercept() const
Returns a pointer to the current intercept.
Definition NaifDskShape.cpp:357
QVector< double > ellipsoidNormal()
Compute the true surface normal vector of an ellipsoid.
Definition NaifDskShape.cpp:306
NaifDskShape()
Generic constructor sets type to a TIN.
Definition NaifDskShape.cpp:35
bool intersectSurface(std::vector< double > observerPos, std::vector< double > lookDirection)
Compute a DEM intersection from and observer and look direction.
Definition NaifDskShape.cpp:135
void calculateDefaultNormal()
Return the surface normal of the ellipsoid as the default.
Definition NaifDskShape.cpp:278
Distance localRadius(const Latitude &lat, const Longitude &lon)
Determine DEM radius at a given lat/lon grid point.
Definition NaifDskShape.cpp:196
void calculateSurfaceNormal()
Return the surface normal of the ellipsoid.
Definition NaifDskShape.cpp:285
void calculateLocalNormal(QVector< double * > cornerNeighborPoints)
Compute the normal for a local region of surface points.
Definition NaifDskShape.cpp:265
bool isDEM() const
Indicates that this shape model is not from a DEM.
Definition NaifDskShape.cpp:235
~NaifDskShape()
Destructor - cleanup is handled automagically.
Definition NaifDskShape.cpp:114
const NaifDskPlateModel & model() const
Returns a direct reference to the DSK plate model file interface.
Definition NaifDskShape.cpp:340
Container for cube-like labels.
Definition Pvl.h:119
Define shapes and provide utilities for Isis targets.
Definition ShapeModel.h:66
virtual bool intersectSurface(std::vector< double > observerPos, std::vector< double > lookDirection)=0
This class defines a body-fixed surface point.
Definition SurfacePoint.h:132
This class is used to create and store valid Isis targets.
Definition Target.h:63
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16