Isis 3 Programmer Reference
AbstractPlate.h
Go to the documentation of this file.
1 #ifndef AbstractPlate_h
2 #define AbstractPlate_h
3 
25 #include <QString>
26 
27 #include "NaifDskApi.h"
28 
29 namespace Isis {
30 
31  class Angle;
32  class Distance;
33  class Intercept;
34  class Latitude;
35  class Longitude;
36  class SurfacePoint;
37 
60  class AbstractPlate {
61  public:
65  virtual ~AbstractPlate();
66 
72  virtual QString name() const = 0;
73 
79  virtual Distance minRadius() const = 0;
80 
86  virtual Distance maxRadius() const = 0;
87 
93  virtual double area() const = 0;
94 
100  virtual NaifVector normal() const = 0;
101 
110  virtual Angle separationAngle(const NaifVector &raydir) const = 0;
111 
124  virtual bool hasIntercept(const NaifVertex &vertex,
125  const NaifVector &raydir) const = 0;
126 
139  virtual bool hasPoint(const Latitude &lat, const Longitude &lon) const = 0;
140 
155  virtual Intercept *intercept(const NaifVertex &vertex,
156  const NaifVector &raydir) const = 0;
157 
173  virtual SurfacePoint *point(const Latitude &lat,
174  const Longitude &lon) const = 0;
175 
185  virtual AbstractPlate *clone() const = 0;
186 
187  protected:
188  AbstractPlate();
189  Intercept *construct(const NaifVertex &vertex, const NaifVector &raydir,
190  SurfacePoint *ipoint) const;
191  private:
197  AbstractPlate(const AbstractPlate &plate);
198 
206  AbstractPlate &operator=(const AbstractPlate &plate);
207  };
208 
209 
210 } // namespace Isis
211 
212 #endif
This class defines a body-fixed surface point.
Definition: SurfacePoint.h:148
virtual SurfacePoint * point(const Latitude &lat, const Longitude &lon) const =0
Determine the intercept point of a lat/lon location for the plate.
Abstract interface to a TIN plate.
Definition: AbstractPlate.h:60
virtual Angle separationAngle(const NaifVector &raydir) const =0
Gets the separation angle.
virtual QString name() const =0
Gets the name of this Plate type.
virtual Distance maxRadius() const =0
Gets the maximum radius.
virtual Intercept * intercept(const NaifVertex &vertex, const NaifVector &raydir) const =0
Conpute the intercept point on a triangular plate.
virtual ~AbstractPlate()
Empty destructor for an AbstractPlate object.
virtual Distance minRadius() const =0
Gets the minimum radius.
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:63
Distance measurement, usually in meters.
Definition: Distance.h:47
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals.
Definition: NaifDskApi.h:61
AbstractPlate()
Empty constructor for an AbstractPlate object.
This class is designed to encapsulate the concept of a Longitude.
Definition: Longitude.h:52
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3]
Definition: NaifDskApi.h:62
Container for a intercept condition.
Definition: Intercept.h:51
Intercept * construct(const NaifVertex &vertex, const NaifVector &raydir, SurfacePoint *ipoint) const
Construct an intercept from a clone of this plate as well as the given vertex, direction vector...
Defines an angle and provides unit conversions.
Definition: Angle.h:62
virtual NaifVector normal() const =0
Gets the normal.
AbstractPlate & operator=(const AbstractPlate &plate)
Assignment operator.
virtual bool hasPoint(const Latitude &lat, const Longitude &lon) const =0
Determines the give lat/lon point intercept the triangular plate.
virtual double area() const =0
Gets the area of the plate.
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
virtual bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const =0
Determines if a look direction from a point intercepts the plate.
virtual AbstractPlate * clone() const =0
Returns a clone of the current plate.