27 template<
class T>
class QVector;
82 virtual bool intersectSurface(std::vector<double> observerPos,
83 std::vector<double> lookDirection)=0;
92 virtual void calculateDefaultNormal() = 0;
100 virtual void calculateSurfaceNormal() = 0;
106 virtual double emissionAngle(
const std::vector<double> & sB);
112 virtual double phaseAngle(
const std::vector<double> &sB,
113 const std::vector<double> &uB);
126 virtual bool isDEM()
const = 0;
129 QString
name()
const;
138 std::vector<double>
normal();
143 void setNormal(
const std::vector<double>);
144 void setNormal(
const double a,
const double b,
const double c);
154 const std::vector<double> &observerLookVectorToTarget);
This class defines a body-fixed surface point.
void calculateEllipsoidalSurfaceNormal()
Calculates the ellipsoidal surface normal.
std::vector< double > normal()
Returns the local surface normal at the current intersection point.
ShapeModel()
Default constructor creates ShapeModel object, initializing name to an empty string, surface point to an empty surface point, has intersection to FALSE, has normal to FALSE, has ellipsoid intersection to FALSE, normal vector size to 3, and target to NULL.
std::vector< double > m_normal
Local normal of current intersection point.
QString name() const
Gets the shape name.
void setNormal(const std::vector< double >)
Sets the normal for the currect intersection point.
bool hasValidTarget() const
Returns the status of the target.
bool hasIntersection()
Returns intersection status.
This class is designed to encapsulate the concept of a Latitude.
virtual double emissionAngle(const std::vector< double > &sB)
Computes and returns emission angle, in degrees, given the observer position.
Distance measurement, usually in meters.
std::vector< Distance > targetRadii() const
Returns the radii of the body in km.
void setHasIntersection(bool b)
Sets the flag to indicate whether this ShapeModel has an intersection.
This class is designed to encapsulate the concept of a Longitude.
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...
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...
bool m_hasIntersection
indicates good intersection exists
double resolution()
Convenience method to get pixel resolution (m/pix) at current intersection point. ...
bool hasNormal() const
Returns surface point normal status.
SurfacePoint * m_surfacePoint
< Name of the shape
virtual double incidenceAngle(const std::vector< double > &uB)
Computes and returns incidence angle, in degrees, given the illuminator position. ...
virtual bool isDEM() const =0
Indicates whether this shape model is from a DEM.
void clearSurfacePoint()
Clears or resets the current surface point.
This class is used to create and store valid Isis3 targets.
virtual ~ShapeModel()=0
Virtual destructor to destroy the ShapeModel object.
Define shapes and provide utilities for Isis3 targets.
bool m_hasEllipsoidIntersection
Indicates the ellipsoid was successfully intersected.
void setSurfacePoint(const SurfacePoint &surfacePoint)
Set surface intersection point.
void setName(QString name)
Sets the shape name.
void setHasNormal(bool status)
Sets the flag to indicate whether this ShapeModel has a surface normal.
bool hasEllipsoidIntersection()
Returns the status of the ellipsoid model intersection.
SurfacePoint * surfaceIntersection() const
Returns the surface intersection for this ShapeModel.
void Initialize()
Initializes the ShapeModel private variables.
bool m_hasNormal
indicates normal has been computed