81 std::vector<double> lookDirection)=0;
87 const std::vector<double> &observerPos,
88 const bool &backCheck =
true);
90 const std::vector<double> &observerPos,
91 const bool &backCheck =
true);
117 virtual double emissionAngle(
const std::vector<double> & sB);
123 virtual double phaseAngle(
const std::vector<double> &sB,
124 const std::vector<double> &uB);
140 QString
name()
const;
149 virtual std::vector<double>
normal();
155 virtual bool isVisibleFrom(
const std::vector<double> observerPos,
156 const std::vector<double> lookDirection);
161 void setNormal(
const std::vector<double>);
162 void setNormal(
const double a,
const double b,
const double c);
166 void setLocalNormal(
const double a,
const double b,
const double c);
176 const std::vector<double> &observerLookVectorToTarget);
184 bool m_hasEllipsoidIntersection;
185 bool m_hasIntersection;
187 bool m_hasLocalNormal;
188 std::vector<double> m_normal;
189 std::vector<double> m_localNormal;
Distance measurement, usually in meters.
Definition Distance.h:34
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
Define shapes and provide utilities for Isis targets.
Definition ShapeModel.h:66
virtual bool isDEM() const =0
Indicates whether this shape model is from a DEM.
double resolution()
Convenience method to get pixel resolution (m/pix) at current intersection point.
Definition ShapeModel.cpp:681
virtual void clearSurfacePoint()
Clears or resets the current surface point.
Definition ShapeModel.cpp:398
void setHasNormal(bool status)
Sets the flag to indicate whether this ShapeModel has a surface normal.
Definition ShapeModel.cpp:660
bool hasIntersection()
Returns intersection status.
Definition ShapeModel.cpp:370
void Initialize()
Initializes the ShapeModel private variables.
Definition ShapeModel.cpp:65
virtual ~ShapeModel()=0
Virtual destructor to destroy the ShapeModel object.
Definition ShapeModel.cpp:78
bool hasLocalNormal() const
Returns surface point local normal status.
Definition ShapeModel.cpp:390
virtual void calculateSurfaceNormal()=0
void setHasIntersection(bool b)
Sets the flag to indicate whether this ShapeModel has an intersection.
Definition ShapeModel.cpp:631
void setNormal(const std::vector< double >)
Sets the surface normal for the currect intersection point.
Definition ShapeModel.cpp:517
void setLocalNormal(const std::vector< double >)
Sets the local normal for the currect intersection point.
Definition ShapeModel.cpp:539
virtual SurfacePoint * surfaceIntersection() const
Returns the surface intersection for this ShapeModel.
Definition ShapeModel.cpp:360
bool hasValidTarget() const
Returns the status of the target.
Definition ShapeModel.cpp:479
virtual double emissionAngle(const std::vector< double > &sB)
Computes and returns emission angle, in degrees, given the observer position.
Definition ShapeModel.cpp:187
QString name() const
Gets the shape name.
Definition ShapeModel.cpp:620
void calculateEllipsoidalSurfaceNormal()
Calculates the ellipsoidal surface normal.
Definition ShapeModel.cpp:142
virtual Distance localRadius(const Latitude &lat, const Longitude &lon)=0
virtual bool isVisibleFrom(const std::vector< double > observerPos, const std::vector< double > lookDirection)
Default occulsion implementation.
Definition ShapeModel.cpp:461
bool intersectEllipsoid(const std::vector< double > observerPosRelativeToTarget, const std::vector< double > &observerLookVectorToTarget)
Finds the intersection point on the ellipsoid model using the given position of the observer (spacecr...
Definition ShapeModel.cpp:269
virtual double incidenceAngle(const std::vector< double > &uB)
Computes and returns incidence angle, in degrees, given the illuminator position.
Definition ShapeModel.cpp:234
bool hasEllipsoidIntersection()
Returns the status of the ellipsoid model intersection.
Definition ShapeModel.cpp:215
virtual void setSurfacePoint(const SurfacePoint &surfacePoint)
Set surface intersection point.
Definition ShapeModel.cpp:643
virtual double phaseAngle(const std::vector< double > &sB, const std::vector< double > &uB)
Computes and returns phase angle, in degrees, given the positions of the observer and illuminator.
Definition ShapeModel.cpp:326
virtual std::vector< double > normal()
Returns the surface normal at the current intersection point.
Definition ShapeModel.cpp:413
virtual bool intersectSurface(std::vector< double > observerPos, std::vector< double > lookDirection)=0
virtual std::vector< double > localNormal()
Returns the local surface normal at the current intersection point.
Definition ShapeModel.cpp:432
std::vector< Distance > targetRadii() const
Returns the radii of the body in km.
Definition ShapeModel.cpp:495
void setHasLocalNormal(bool status)
Sets the flag to indicate whether this ShapeModel has a local normal.
Definition ShapeModel.cpp:670
ShapeModel()
Default constructor creates ShapeModel object, initializing name to an empty string,...
Definition ShapeModel.cpp:40
virtual void calculateLocalNormal(QVector< double * > neighborPoints)=0
virtual void calculateDefaultNormal()=0
bool hasNormal() const
Returns surface point normal status.
Definition ShapeModel.cpp:380
void setName(QString name)
Sets the shape name.
Definition ShapeModel.cpp:609
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 Calculator.h:18
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16