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.