7#include "NaifDskShape.h"
14#include "IException.h"
19#include "NaifDskApi.h"
20#include "NaifDskPlateModel.h"
21#include "NaifStatus.h"
23#include "ShapeModel.h"
24#include "SpecialPixel.h"
25#include "Statistics.h"
26#include "SurfacePoint.h"
73 PvlGroup &kernels = pvl.findGroup(
"Kernels", Pvl::Traverse);
76 if (kernels.hasKeyword(
"ElevationModel")) {
77 dskFile = (QString) kernels[
"ElevationModel"];
80 dskFile = (QString) kernels[
"ShapeModel"];
136 std::vector<double> lookDirection) {
167 const std::vector<double> &observerPos,
168 const bool &backCheck) {
170 std::vector<double> look(3);
171 look[0] = surfpt.GetX().
kilometers() - observerPos[0];
172 look[1] = surfpt.GetY().
kilometers() - observerPos[1];
173 look[2] = surfpt.GetZ().
kilometers() - observerPos[2];
198 QScopedPointer<SurfacePoint> pnt(
m_model.point(lat, lon));
199 if ( !pnt.isNull() )
return (pnt->GetLocalRadius());
217 QString mess =
"Intercept point does not exist - cannot provide normal vector";
218 throw IException(IException::Programmer, mess, _FILEINFO_);
268 QString mess =
"Intercept point does not exist - cannot provide normal vector";
269 throw IException(IException::Programmer, mess, _FILEINFO_);
double kilometers() const
Get the displacement in kilometers.
Distance measurement, usually in meters.
Container for a intercept condition.
This class is designed to encapsulate the concept of a Latitude.
This class is designed to encapsulate the concept of a Longitude.
Implementation interface API for NAIF's DSK plate model.
QScopedPointer< Intercept > m_intercept
Pointer to the shape's intercept.
void setLocalNormalFromIntercept()
Set the local normal vector to the intercept point normal.
const Intercept * intercept() const
Returns a pointer to the current intercept.
NaifDskShape()
Generic constructor sets type to a TIN.
NaifDskPlateModel m_model
Plate model to intersect.
bool intersectSurface(std::vector< double > observerPos, std::vector< double > lookDirection)
Compute a DEM intersection from and observer and look direction.
Distance localRadius(const Latitude &lat, const Longitude &lon)
Determine DEM radius at a given lat/lon grid point.
void calculateLocalNormal(QVector< double * > cornerNeighborPoints)
Compute the normal for a local region of surface points.
bool isDEM() const
Indicates that this shape model is not from a DEM.
~NaifDskShape()
Destructor - cleanup is handled automagically.
const NaifDskPlateModel & model() const
Returns a direct reference to the DSK plate model file interface.
bool hasIntersection()
Returns intersection status.
void setLocalNormal(const std::vector< double >)
Sets the local normal for the currect intersection point.
virtual void setSurfacePoint(const SurfacePoint &surfacePoint)
Set surface intersection point.
ShapeModel()
Default constructor creates ShapeModel object, initializing name to an empty string,...
void setName(QString name)
Sets the shape name.
This class defines a body-fixed surface point.
This class is used to create and store valid Isis targets.
This is free and unencumbered software released into the public domain.
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals.
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3]
Namespace for the standard library.