File failed to load: https://isis.astrogeology.usgs.gov/3.9.0/Object/assets/jax/output/NativeMML/config.js
Isis 3 Developer Reference
PhotometricFunction.h
Go to the documentation of this file.
1 #ifndef PhotometricFunction_h
2 #define PhotometricFunction_h
3 
4 #include "IString.h"
5 #include "Camera.h"
6 #include "DbProfile.h"
7 #include "SpecialPixel.h"
8 
9 #include <iostream>
10 #include <sstream>
11 #include <iomanip>
12 
13 namespace Isis {
14 
26  template<typename T> inline T MIN( const T &A, const T &B ) {
27  if (A < B) {
28  return (A);
29  }
30  else {
31  return (B);
32  }
33  }
34 
46  template<typename T> inline T MAX( const T &A, const T &B ) {
47  if (A > B) {
48  return (A);
49  }
50  else {
51  return (B);
52  }
53  }
54 
55  class PvlObject;
56  class Camera;
57 
71 
72  public:
73  PhotometricFunction(PvlObject &pvl, Cube &cube, bool useCamera);
74  virtual ~PhotometricFunction();
75 
76  void setCamera(Camera *cam);
77  static QString algorithmName( const PvlObject &pvl );
78  virtual double compute( const double &line, const double &sample, int band = 1, bool useDem = false);
79  virtual double photometry( double i, double e, double g, int band = 1 ) const = 0;
80  virtual void report( PvlContainer &pvl ) = 0;
81  virtual void setMinimumIncidenceAngle( double angle );
82  virtual void setMaximumIncidenceAngle( double angle );
83  virtual void setMinimumEmissionAngle( double angle );
84  virtual void setMaximumEmissionAngle( double angle );
85  virtual void setMinimumPhaseAngle( double angle );
86  virtual void setMaximumPhaseAngle( double angle );
87  virtual double minimumIncidenceAngle();
88  virtual double maximumIncidenceAngle();
89  virtual double minimumEmissionAngle();
90  virtual double maximumEmissionAngle();
91  virtual double minimumPhaseAngle();
92  virtual double maximumPhaseAngle();
93 
94 
95  protected:
96 
97  Camera *m_camera; //<! Camera used for calculating photmetric angles
98  double m_iRef; //<! Incidence refernce angle
99  double m_eRef; //<! Emission reference angle
100  double m_gRef; //<! Phase reference angle
101  double m_minimumIncidenceAngle; //<! The minimum incidence angle to perform computations
102  double m_maximumIncidenceAngle; //<! The maximum incidence angle to perform computations
103  double m_minimumEmissionAngle; //<! The minimum emission angle to perform computations
104  double m_maximumEmissionAngle; //<! The maximum emission angle to perform computations
105  double m_minimumPhaseAngle; //<! The minimum phase angle to perform computations
106  double m_maximumPhaseAngle; //<! The maximum phase angle to perform computations
107  DbProfile m_normProf; //<! Parameters for the normalization model
108 
124  template<typename T>
125  T ConfKey( const DbProfile &conf, const QString &keyname, const T &defval, int index = 0 ) const {
126  if (!conf.exists(keyname)) {
127  return (defval);
128  }
129  if (conf.count(keyname) < index) {
130  return (defval);
131  }
132  return conf.value(keyname, index);
133  }
134  };
135 };
136 #endif
virtual void report(PvlContainer &pvl)=0
T ConfKey(const DbProfile &conf, const QString &keyname, const T &defval, int index=0) const
Helper template to initialize parameters.
Definition: PhotometricFunction.h:125
Contains more than one keyword-value pair.
Definition: PvlContainer.h:63
virtual double maximumIncidenceAngle()
Accessor method to access maximum incidence angle.
Definition: PhotometricFunction.cpp:235
int count(const QString &key) const
Report number of values in keyword.
Definition: DbProfile.cpp:141
double m_minimumIncidenceAngle
Definition: PhotometricFunction.h:101
double m_minimumPhaseAngle
Definition: PhotometricFunction.h:105
virtual double minimumPhaseAngle()
Accessor method to access minimum phase angle.
Definition: PhotometricFunction.cpp:283
DbProfile m_normProf
Definition: PhotometricFunction.h:107
bool exists(const QString &key) const
Checks for the existance of a keyword.
Definition: DbProfile.h:129
A DbProfile is a container for access parameters to a database.
Definition: DbProfile.h:65
virtual ~PhotometricFunction()
Destructor.
Definition: PhotometricFunction.cpp:36
virtual double compute(const double &line, const double &sample, int band=1, bool useDem=false)
Computes Photometric function from cube attributes.
Definition: PhotometricFunction.cpp:77
double m_gRef
Definition: PhotometricFunction.h:100
Definition: Camera.h:249
virtual void setMinimumIncidenceAngle(double angle)
Mutator function to set minimum incidence angle.
Definition: PhotometricFunction.cpp:123
double m_eRef
Definition: PhotometricFunction.h:99
An abstract implementation of the photometric function.
Definition: PhotometricFunction.h:70
QString value(const QString &key, int nth=0) const
Returns the specified value for the given keyword.
Definition: DbProfile.cpp:160
virtual void setMaximumIncidenceAngle(double angle)
Mutator function to set maximum incidence angle.
Definition: PhotometricFunction.cpp:139
virtual void setMaximumEmissionAngle(double angle)
Mutator function to set maximum emission angle.
Definition: PhotometricFunction.cpp:171
double m_maximumPhaseAngle
Definition: PhotometricFunction.h:106
static QString algorithmName(const PvlObject &pvl)
Finds the name of the algorithm defined in a PVL object.
Definition: PhotometricFunction.cpp:56
double m_iRef
Definition: PhotometricFunction.h:98
virtual double minimumIncidenceAngle()
Accessor method to access minimum incidence angle.
Definition: PhotometricFunction.cpp:219
virtual void setMinimumEmissionAngle(double angle)
Mutator function to set minimum emission angle.
Definition: PhotometricFunction.cpp:155
double m_minimumEmissionAngle
Definition: PhotometricFunction.h:103
virtual double maximumEmissionAngle()
Accessor method to access maximum emission angle.
Definition: PhotometricFunction.cpp:267
virtual double maximumPhaseAngle()
Accessor method to access maximum phase angle.
Definition: PhotometricFunction.cpp:299
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
double m_maximumIncidenceAngle
Definition: PhotometricFunction.h:102
double m_maximumEmissionAngle
Definition: PhotometricFunction.h:104
Camera * m_camera
Definition: PhotometricFunction.h:97
void setCamera(Camera *cam)
Set the camera used to compute photometric angles.
Definition: PhotometricFunction.cpp:44
virtual double photometry(double i, double e, double g, int band=1) const =0
virtual void setMinimumPhaseAngle(double angle)
Mutator function to set minimum phase angle.
Definition: PhotometricFunction.cpp:187
PhotometricFunction(PvlObject &pvl, Cube &cube, bool useCamera)
Construct Photometric function from Pvl and Cube file.
Definition: PhotometricFunction.cpp:26
virtual void setMaximumPhaseAngle(double angle)
Mutator function to set maximum phase angle.
Definition: PhotometricFunction.cpp:203
Contains Pvl Groups and Pvl Objects.
Definition: PvlObject.h:74
virtual double minimumEmissionAngle()
Accessor method to access minimum emission angle.
Definition: PhotometricFunction.cpp:251
T MIN(const T &A, const T &B)
Implement templatized MIN fumnction.
Definition: PhotometricFunction.h:26
IO Handler for Isis Cubes.
Definition: Cube.h:170
T MAX(const T &A, const T &B)
Implement templatized MAX fumnction.
Definition: PhotometricFunction.h:46

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/12/2023 23:25:59