79 virtual bool intersectSurface(std::vector<double> observerPos,
80 std::vector<double> lookDirection)=0;
86 const std::vector<double> &observerPos,
87 const bool &backCheck =
true);
88 virtual bool intersectSurface(
const SurfacePoint &surfpt,
89 const std::vector<double> &observerPos,
90 const bool &backCheck =
true);
116 virtual double emissionAngle(
const std::vector<double> & sB);
122 virtual double phaseAngle(
const std::vector<double> &sB,
123 const std::vector<double> &uB);
139 QString
name()
const;
148 virtual std::vector<double>
normal();
154 virtual bool isVisibleFrom(
const std::vector<double> observerPos,
155 const std::vector<double> lookDirection);
160 void setNormal(
const std::vector<double>);
161 void setNormal(
const double a,
const double b,
const double c);
165 void setLocalNormal(
const double a,
const double b,
const double c);
174 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.
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.
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.
virtual void calculateSurfaceNormal()
Calculate surface normal.
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,...
virtual void calculateDefaultNormal()
Compute the true surface normal vector of an ellipsoid.
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.
Obtain SPICE information for a spacecraft.
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.