80      virtual bool intersectSurface(std::vector<double> observerPos,
 
   81                                    std::vector<double> lookDirection)=0;
 
   87                                    const std::vector<double> &observerPos,
 
   88                                    const bool &backCheck = 
true);
 
   89      virtual bool intersectSurface(
const SurfacePoint &surfpt,
 
   90                                    const std::vector<double> &observerPos,
 
   91                                    const bool &backCheck = 
true);
 
  103      virtual void calculateDefaultNormal() = 0;
 
  107      virtual void calculateLocalNormal(QVector<double *> neighborPoints) = 0;
 
  111      virtual void calculateSurfaceNormal() = 0;
 
  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);
 
 
Distance measurement, usually in meters.
 
This class is designed to encapsulate the concept of a Latitude.
 
This class is designed to encapsulate the concept of a Longitude.
 
Define shapes and provide utilities for Isis targets.
 
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.
 
virtual void clearSurfacePoint()
Clears or resets the current surface point.
 
void setHasNormal(bool status)
Sets the flag to indicate whether this ShapeModel has a surface normal.
 
bool hasIntersection()
Returns intersection status.
 
void Initialize()
Initializes the ShapeModel private variables.
 
bool m_hasNormal
indicates normal has been computed
 
virtual ~ShapeModel()=0
Virtual destructor to destroy the ShapeModel object.
 
bool hasLocalNormal() const
Returns surface point local normal status.
 
void setHasIntersection(bool b)
Sets the flag to indicate whether this ShapeModel has an intersection.
 
void setNormal(const std::vector< double >)
Sets the surface normal for the currect intersection point.
 
void setLocalNormal(const std::vector< double >)
Sets the local normal for the currect intersection point.
 
virtual SurfacePoint * surfaceIntersection() const
Returns the surface intersection for this ShapeModel.
 
SurfacePoint * m_surfacePoint
< Name of the shape
 
bool m_hasEllipsoidIntersection
Indicates the ellipsoid was successfully intersected.
 
bool hasValidTarget() const
Returns the status of the target.
 
virtual double emissionAngle(const std::vector< double > &sB)
Computes and returns emission angle, in degrees, given the observer position.
 
QString name() const
Gets the shape name.
 
void calculateEllipsoidalSurfaceNormal()
Calculates the ellipsoidal surface normal.
 
virtual bool isVisibleFrom(const std::vector< double > observerPos, const std::vector< double > lookDirection)
Default occulsion implementation.
 
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
 
virtual double incidenceAngle(const std::vector< double > &uB)
Computes and returns incidence angle, in degrees, given the illuminator position.
 
bool hasEllipsoidIntersection()
Returns the status of the ellipsoid model intersection.
 
virtual void setSurfacePoint(const SurfacePoint &surfacePoint)
Set surface intersection point.
 
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.
 
virtual std::vector< double > normal()
Returns the surface normal at the current intersection point.
 
virtual std::vector< double > localNormal()
Returns the local surface normal at the current intersection point.
 
std::vector< Distance > targetRadii() const
Returns the radii of the body in km.
 
void setHasLocalNormal(bool status)
Sets the flag to indicate whether this ShapeModel has a local normal.
 
ShapeModel()
Default constructor creates ShapeModel object, initializing name to an empty string,...
 
bool m_hasLocalNormal
indicates local normal has been computed
 
std::vector< double > m_normal
Surface normal of current intersection point.
 
std::vector< double > m_localNormal
Local normal of current intersection point.
 
bool hasNormal() const
Returns surface point normal status.
 
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.
 
This is free and unencumbered software released into the public domain.