27 template<
class T>
class QVector;
92 virtual bool intersectSurface(std::vector<double> observerPos,
93 std::vector<double> lookDirection)=0;
99 const std::vector<double> &observerPos,
100 const bool &backCheck =
true);
101 virtual bool intersectSurface(
const SurfacePoint &surfpt,
102 const std::vector<double> &observerPos,
103 const bool &backCheck =
true);
114 virtual void calculateDefaultNormal() = 0;
122 virtual void calculateSurfaceNormal() = 0;
128 virtual double emissionAngle(
const std::vector<double> & sB);
134 virtual double phaseAngle(
const std::vector<double> &sB,
135 const std::vector<double> &uB);
148 virtual bool isDEM()
const = 0;
151 QString
name()
const;
160 std::vector<double>
normal();
163 virtual bool isVisibleFrom(
const std::vector<double> observerPos,
164 const std::vector<double> lookDirection);
169 void setNormal(
const std::vector<double>);
170 void setNormal(
const double a,
const double b,
const double c);
180 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.
bool hasValidTarget() const
Returns the status of the target.
void setNormal(const std::vector< double >)
Sets the normal for the currect intersection point.
bool hasIntersection()
Returns intersection status.
This class is designed to encapsulate the concept of a Latitude.
SurfacePoint * surfaceIntersection() const
Returns the surface intersection for this ShapeModel.
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. ...
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.
virtual 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.
QString name() const
Gets the shape name.
virtual bool isVisibleFrom(const std::vector< double > observerPos, const std::vector< double > lookDirection)
Default occulsion implementation.
bool m_hasEllipsoidIntersection
Indicates the ellipsoid was successfully intersected.
virtual void setSurfacePoint(const SurfacePoint &surfacePoint)
Set surface intersection point.
Namespace for ISIS/Bullet specific routines.
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.
void Initialize()
Initializes the ShapeModel private variables.
bool m_hasNormal
indicates normal has been computed
bool hasNormal() const
Returns surface point normal status.