Isis 3 Programmer Reference
TriangularPlate.h
1#ifndef TriangularPlate_h
2#define TriangularPlate_h
8/* SPDX-License-Identifier: CC0-1.0 */
9#include "AbstractPlate.h"
10
11#include "NaifDskApi.h"
12
13namespace Isis {
14
15 class Angle;
16 class Distance;
17 class Intercept;
18 class Latitude;
19 class Longitude;
20 class SurfacePoint;
21
35 public:
36 TriangularPlate(const NaifTriangle &plate, const int &plateId = 0);
37 virtual ~TriangularPlate();
38
39 int id() const;
40 QString name() const;
41
42 Distance minRadius() const;
43 Distance maxRadius() const;
44
45 double area() const;
46 NaifVector normal() const;
47 NaifVector center() const;
48
49 Angle separationAngle(const NaifVector &raydir) const;
50
51 bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const;
52 bool hasPoint(const Latitude &lat, const Longitude &lon) const;
53
54 SurfacePoint *point(const Latitude &lat, const Longitude &lon) const;
55 Intercept *intercept(const NaifVertex &vertex, const NaifVector &raydir) const;
56
57 NaifVertex vertex(int v) const;
58
59 AbstractPlate *clone() const;
60
61 protected:
62 bool findPlateIntercept(const NaifVertex &obs, const NaifVector &raydir,
63 NaifVertex &point) const;
64
65 private:
66 TriangularPlate(); // Disallow an empty instantiation of the class
70
71 };
72};
73
74#endif
Abstract interface to a TIN 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.
Specification for an abstract triangular plate.
SurfacePoint * point(const Latitude &lat, const Longitude &lon) const
Determine the intercept point of a lat/lon location for the plate.
double area() const
Returns the area of the plate in km.
Distance minRadius() const
Gets the minimum radius.
QString name() const
Gets the name of this Plate type.
NaifTriangle m_plate
Tetrahedron, defined by the coordinate system origin and 3 vertices, used to represent the Triangular...
NaifVertex vertex(int v) const
Returns the vth point of the triangle.
AbstractPlate * clone() const
Retrns a clone of the current plate.
NaifVector normal() const
Compute the surface normal of the plate.
Intercept * intercept(const NaifVertex &vertex, const NaifVector &raydir) const
Conpute the intercept point on a triangular plate.
bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const
Determines if a look direction from a point intercepts the plate.
Distance maxRadius() const
Determines the maximum radius from all the vertices of the plate.
Angle separationAngle(const NaifVector &raydir) const
Computes the separation angle from the plate normal of a given vector.
bool hasPoint(const Latitude &lat, const Longitude &lon) const
Determines the give lat/lon point intercept the triangular plate.
bool findPlateIntercept(const NaifVertex &obs, const NaifVector &raydir, NaifVertex &point) const
Determines of if given a vertex and look direction intercepts the plate.
int m_plateId
ID for this plate on the ShapeModel.
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::Array2D< SpiceDouble > NaifTriangle
3-D triangle[3][3]
Definition NaifDskApi.h:48
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3]
Definition NaifDskApi.h:47