Isis Developer Reference
AbstractPlate.h
Go to the documentation of this file.
1 #ifndef AbstractPlate_h
2 #define AbstractPlate_h
3 
9 /* SPDX-License-Identifier: CC0-1.0 */
10 
11 #include <QString>
12 
13 #include "NaifDskApi.h"
14 
15 namespace Isis {
16 
17  class Angle;
18  class Distance;
19  class Intercept;
20  class Latitude;
21  class Longitude;
22  class SurfacePoint;
23 
46  class AbstractPlate {
47  public:
51  virtual ~AbstractPlate();
52 
58  virtual QString name() const = 0;
59 
65  virtual Distance minRadius() const = 0;
66 
72  virtual Distance maxRadius() const = 0;
73 
79  virtual double area() const = 0;
80 
86  virtual NaifVector normal() const = 0;
87 
96  virtual Angle separationAngle(const NaifVector &raydir) const = 0;
97 
110  virtual bool hasIntercept(const NaifVertex &vertex,
111  const NaifVector &raydir) const = 0;
112 
125  virtual bool hasPoint(const Latitude &lat, const Longitude &lon) const = 0;
126 
141  virtual Intercept *intercept(const NaifVertex &vertex,
142  const NaifVector &raydir) const = 0;
143 
159  virtual SurfacePoint *point(const Latitude &lat,
160  const Longitude &lon) const = 0;
161 
171  virtual AbstractPlate *clone() const = 0;
172 
173  protected:
174  AbstractPlate();
175  Intercept *construct(const NaifVertex &vertex, const NaifVector &raydir,
176  SurfacePoint *ipoint) const;
177  private:
183  AbstractPlate(const AbstractPlate &plate);
184 
192  AbstractPlate &operator=(const AbstractPlate &plate);
193  };
194 
195 
196 } // namespace Isis
197 
198 #endif
Isis::AbstractPlate::minRadius
virtual Distance minRadius() const =0
Gets the minimum radius.
Isis::AbstractPlate::separationAngle
virtual Angle separationAngle(const NaifVector &raydir) const =0
Gets the separation angle.
Isis::NaifVertex
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3]
Definition: NaifDskApi.h:47
NaifDskApi.h
Isis::Latitude
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:51
Isis::AbstractPlate::hasIntercept
virtual bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const =0
Determines if a look direction from a point intercepts the plate.
Isis::AbstractPlate::AbstractPlate
AbstractPlate()
Empty constructor for an AbstractPlate object.
Definition: AbstractPlate.cpp:25
Isis::AbstractPlate::name
virtual QString name() const =0
Gets the name of this Plate type.
Definition: AbstractPlate.cpp:41
Longitude.h
Isis::AbstractPlate
Abstract interface to a TIN plate.
Definition: AbstractPlate.h:46
Isis::AbstractPlate::point
virtual SurfacePoint * point(const Latitude &lat, const Longitude &lon) const =0
Determine the intercept point of a lat/lon location for the plate.
Isis::Distance
Distance measurement, usually in meters.
Definition: Distance.h:34
Isis::Longitude
This class is designed to encapsulate the concept of a Longitude.
Definition: Longitude.h:40
Isis::AbstractPlate::hasPoint
virtual bool hasPoint(const Latitude &lat, const Longitude &lon) const =0
Determines the give lat/lon point intercept the triangular plate.
Isis::AbstractPlate::normal
virtual NaifVector normal() const =0
Gets the normal.
Latitude.h
Isis::AbstractPlate::maxRadius
virtual Distance maxRadius() const =0
Gets the maximum radius.
Isis::AbstractPlate::intercept
virtual Intercept * intercept(const NaifVertex &vertex, const NaifVector &raydir) const =0
Conpute the intercept point on a triangular plate.
SurfacePoint.h
Intercept.h
AbstractPlate.h
Isis::Angle
Defines an angle and provides unit conversions.
Definition: Angle.h:45
Isis::Intercept
Container for a intercept condition.
Definition: Intercept.h:36
Angle.h
Isis::AbstractPlate::area
virtual double area() const =0
Gets the area of the plate.
Isis::AbstractPlate::clone
virtual AbstractPlate * clone() const =0
Returns a clone of the current plate.
Distance.h
Isis::NaifVector
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals.
Definition: NaifDskApi.h:46
Isis::AbstractPlate::construct
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,...
Definition: AbstractPlate.cpp:57
Isis::AbstractPlate::~AbstractPlate
virtual ~AbstractPlate()
Empty destructor for an AbstractPlate object.
Definition: AbstractPlate.cpp:32
Isis::SurfacePoint
This class defines a body-fixed surface point.
Definition: SurfacePoint.h:132
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16