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
15namespace Isis {
16
17 class Angle;
18 class Distance;
19 class Intercept;
20 class Latitude;
21 class Longitude;
22 class SurfacePoint;
23
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:
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
Abstract interface to a TIN plate.
Definition AbstractPlate.h:46
virtual Distance maxRadius() const =0
Gets the maximum radius.
virtual Angle separationAngle(const NaifVector &raydir) const =0
Gets the separation angle.
virtual NaifVector normal() const =0
Gets the normal.
virtual double area() const =0
Gets the area of the plate.
virtual Distance minRadius() const =0
Gets the minimum radius.
AbstractPlate()
Empty constructor for an AbstractPlate object.
Definition AbstractPlate.cpp:25
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
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.
Definition AbstractPlate.cpp:32
virtual bool hasPoint(const Latitude &lat, const Longitude &lon) const =0
Determines the give lat/lon point intercept the triangular plate.
virtual bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const =0
Determines if a look direction from a point intercepts the plate.
virtual SurfacePoint * point(const Latitude &lat, const Longitude &lon) const =0
Determine the intercept point of a lat/lon location for the plate.
virtual QString name() const =0
Gets the name of this Plate type.
Definition AbstractPlate.cpp:41
virtual AbstractPlate * clone() const =0
Returns a clone of the current plate.
Defines an angle and provides unit conversions.
Definition Angle.h:45
Distance measurement, usually in meters.
Definition Distance.h:34
Container for a intercept condition.
Definition Intercept.h:36
This class is designed to encapsulate the concept of a Latitude.
Definition Latitude.h:51
This class is designed to encapsulate the concept of a Longitude.
Definition Longitude.h:40
This class defines a body-fixed surface point.
Definition SurfacePoint.h:132
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals.
Definition NaifDskApi.h:46
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3]
Definition NaifDskApi.h:47