Isis 3 Programmer Reference
Intercept.h
1#ifndef Intercept_h
2#define Intercept_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <QSharedPointer>
11
12#include "AbstractPlate.h"
13#include "NaifDskApi.h"
14
15namespace Isis {
16
17 class Angle;
18 class SurfacePoint;
19
36 class Intercept {
37 public:
38 Intercept();
39 Intercept(const NaifVertex &observer, const NaifVector &raydir,
41 virtual ~Intercept();
42
43 bool isValid() const;
44
45 const NaifVertex &observer() const;
46 const NaifVector &lookDirectionRay() const;
47 SurfacePoint location() const;
48
49 NaifVector normal() const;
50 Angle emission() const;
51
52 Angle separationAngle(const NaifVector &raydir) const;
53
54 const AbstractPlate *shape() const;
55
56 private:
57
63 NoThrow
64 }; // Error mode to employ
65
66 bool verify(const bool &test, const QString &errmsg,
67 const ErrAction &action = Throw) const;
68
71
72 QSharedPointer<SurfacePoint> m_point;
74 QSharedPointer<AbstractPlate> m_shape;
75
76 };
77
78}; // namespace Isis
79#endif
Abstract interface to a TIN plate.
Defines an angle and provides unit conversions.
Definition Angle.h:45
Container for a intercept condition.
Definition Intercept.h:36
bool verify(const bool &test, const QString &errmsg, const ErrAction &action=Throw) const
Convenient error handler.
bool isValid() const
This method tests the vailidty of the intercept point.
Definition Intercept.cpp:70
NaifVector normal() const
Gets the normal vector to the shape for this plate.
QSharedPointer< AbstractPlate > m_shape
Shape Model for the intercept point.
Definition Intercept.h:74
NaifVertex m_observer
Three dimensional coordinate position of the observer, in body fixed.
Definition Intercept.h:69
SurfacePoint location() const
Returns the location of the intercept location on the shape.
NaifVector m_raydir
Three dimensional ray representing the look direction.
Definition Intercept.h:70
Angle separationAngle(const NaifVector &raydir) const
Returns the separation angle of the observer and the plate normal.
QSharedPointer< SurfacePoint > m_point
Surface point of the intercept location on the body, in body fixed.
Definition Intercept.h:72
virtual ~Intercept()
Empty destructor.
Definition Intercept.cpp:59
const AbstractPlate * shape() const
Access the plate for this intercept.
const NaifVertex & observer() const
Accessor for the observer position of the intercept.
Definition Intercept.cpp:87
const NaifVector & lookDirectionRay() const
Accessor for the look direction of the intercept.
Definition Intercept.cpp:99
ErrAction
Enumeration to indicate whether to throw an exception if an error occurs.
Definition Intercept.h:62
@ NoThrow
Do not throw an exception if an error occurs.
Definition Intercept.h:63
@ Throw
Throw an exception if an error occurs.
Definition Intercept.h:62
Angle emission() const
Compute the emission of the intercept point from the observer.
Intercept()
Default empty constructor.
Definition Intercept.cpp:30
This class defines a body-fixed surface point.
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