Isis 3 Programmer Reference
PhotoModel.h
Go to the documentation of this file.
1 #ifndef PhotoModel_h
2 #define PhotoModel_h
3 
26 #include <string>
27 #include <vector>
28 
29 #include <QString>
30 #include "NumericalApproximation.h"
31 #include "Pvl.h"
32 
33 namespace Isis {
57  class PhotoModel {
58  public:
59  PhotoModel(Pvl &pvl);
60  virtual ~PhotoModel() {};
61 
63  inline QString AlgorithmName() const {
64  return p_photoAlgorithmName;
65  }
66 
67  virtual void SetStandardConditions(bool standard);
69  bool StandardConditions() const {
70  return p_standardConditions;
71  }
72 
73  // Obtain topographic derivative
74  double PhtTopder(double phase, double incidence, double emission);
75 
76  // Obtain arccosine
77  static double PhtAcos(double cosang);
78 
79  // Calculate the surface brightness
80  double CalcSurfAlbedo(double pha, double inc, double ema);
81 
82  virtual void SetPhotoL(const double l) {
83  p_photoL = l;
84  }
85 
87  inline double PhotoL() const {
88  return p_photoL;
89  }
90 
91  virtual void SetPhotoK(const double k) {
92  p_photoK = k;
93  }
94 
96  inline double PhotoK() const {
97  return p_photoK;
98  }
99 
100  virtual void SetPhotoHg1(const double hg1) {
101  p_photoHg1 = hg1;
102  }
103 
105  inline double PhotoHg1() const {
106  return p_photoHg1;
107  }
108 
109  virtual void SetPhotoHg2(const double hg2) {
110  p_photoHg2 = hg2;
111  }
112 
114  inline double PhotoHg2() const {
115  return p_photoHg2;
116  }
117 
118  virtual void SetPhotoBh(const double bh) {
119  p_photoBh = bh;
120  }
121 
123  inline double PhotoBh() const {
124  return p_photoBh;
125  }
126 
127  virtual void SetPhotoCh(const double ch) {
128  p_photoCh = ch;
129  }
130 
132  inline double PhotoCh() const {
133  return p_photoCh;
134  }
135 
136  virtual void SetPhotoWh(const double wh) {
137  p_photoWh = wh;
138  }
139 
141  inline double PhotoWh() const {
142  return p_photoWh;
143  }
144 
145  virtual void SetPhotoHh(const double hh) {
146  p_photoHh = hh;
147  }
148 
150  inline double PhotoHh() const {
151  return p_photoHh;
152  }
153 
154  virtual void SetPhotoB0(const double b0) {
155  p_photoB0 = b0;
156  }
157 
159  inline double PhotoB0() const {
160  return p_photoB0;
161  }
162 
163  virtual void SetPhotoTheta(const double theta) {
164  p_photoTheta = theta;
165  }
166 
168  inline double PhotoTheta() const {
169  return p_photoTheta;
170  }
171 
172  // virtual void SetOldTheta(double theta) = 0;
173 
174  virtual void SetPhoto0B0Standard(const QString &b0standard) {
175  p_photo0B0Standard = b0standard;
176  }
177 
179  inline QString Photo0B0Standard() const {
180  return p_photo0B0Standard;
181  }
182 
184  inline double Hfunc(double u, double gamma) {
185  return (1.0 + 2.0 * u) / (1.0 + 2.0 * u * gamma);
186  }
187 
188  virtual void SetPhotoPhaseList(const QString) {}
189  virtual void SetPhotoKList(const QString) {}
190  virtual void SetPhotoLList(const QString) {}
191  virtual void SetPhotoPhaseCurveList(const QString) {}
192 
194  inline std::vector<double> PhotoPhaseList() const {
195  return p_photoPhaseList;
196  }
197 
199  inline std::vector<double> PhotoKList() const {
200  return p_photoKList;
201  }
202 
204  inline std::vector<double> PhotoLList() const {
205  return p_photoLList;
206  }
207 
209  inline std::vector<double> PhotoPhaseCurveList() const {
210  return p_photoPhaseCurveList;
211  }
212 
213  protected:
214  virtual double PhotoModelAlgorithm(double phase,
215  double incidence, double emission) = 0;
216 
217  double p_photoL;
218  double p_photoK;
219  double p_photoHg1;
220  double p_photoHg2;
221  double p_photoBh;
222  double p_photoCh;
223  double p_photoCott;
224  double p_photoCot2t;
225  double p_photoTant;
226  double p_photoSr;
227  double p_photoOsr;
228  QString p_algName;
229  QString p_photo0B0Standard;
230  double p_photoWh;
231  double p_photoHh;
232  double p_photoB0;
233  double p_photoB0save;
234  double p_photoTheta;
235  double p_photoThetaold;
236 
237  std::vector<double> p_photoPhaseList;
238  std::vector<double> p_photoKList;
239  std::vector<double> p_photoLList;
240  std::vector<double> p_photoPhaseCurveList;
241  int p_photoPhaseAngleCount;
242  NumericalApproximation p_photoKSpline;
243  NumericalApproximation p_photoLSpline;
244  NumericalApproximation p_photoBSpline;
245 
246  private:
251  };
252 };
253 
254 #endif
QString AlgorithmName() const
Return algorithm name found in Pvl file from constructor.
Definition: PhotoModel.h:63
double PhotoBh() const
Return photometric Bh value.
Definition: PhotoModel.h:123
double CalcSurfAlbedo(double pha, double inc, double ema)
Calculate the surface brightness using photometric angle information.
Definition: PhotoModel.cpp:171
double PhotoL() const
Return photometric L value.
Definition: PhotoModel.h:87
QString Photo0B0Standard() const
Return photometric B0 standardization value.
Definition: PhotoModel.h:179
double PhotoHg1() const
Return photometric Hg1 value.
Definition: PhotoModel.h:105
double PhotoHg2() const
Return photometric Hg2 value.
Definition: PhotoModel.h:114
double PhotoB0() const
Return photometric B0 value.
Definition: PhotoModel.h:159
NumericalApproximation provides various numerical analysis methods of interpolation, extrapolation and approximation of a tabulated set of x, y data.
double PhtTopder(double phase, double incidence, double emission)
Obtain topographic derivative of an arbitrary photometric function.
Definition: PhotoModel.cpp:58
PhotoModel(Pvl &pvl)
Create a PhotoModel object.
Definition: PhotoModel.cpp:20
double PhotoK() const
Return photometric K value.
Definition: PhotoModel.h:96
double PhotoHh() const
Return photometric Hh value.
Definition: PhotoModel.h:150
std::vector< double > PhotoPhaseList() const
Return photometric phase angle list.
Definition: PhotoModel.h:194
bool p_standardConditions
Indicates whether standard conditions are used.
Definition: PhotoModel.h:250
Container for cube-like labels.
Definition: Pvl.h:135
QString p_photoAlgorithmName
Unique name of the photometric model.
Definition: PhotoModel.h:248
double PhotoCh() const
Return photometric Ch value.
Definition: PhotoModel.h:132
double PhotoTheta() const
Return photometric Theta value.
Definition: PhotoModel.h:168
std::vector< double > PhotoPhaseCurveList() const
Return photometric phase curve value list.
Definition: PhotoModel.h:209
static double PhtAcos(double cosang)
Obtain arccosine of input value.
Definition: PhotoModel.cpp:144
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
double Hfunc(double u, double gamma)
Hapke&#39;s approximation to Chandra&#39;s H function.
Definition: PhotoModel.h:184
std::vector< double > PhotoKList() const
Return photometric k value list.
Definition: PhotoModel.h:199
bool StandardConditions() const
Returns true if standard conditions are used, i.e., if SetStandardConditions(true) has been called...
Definition: PhotoModel.h:69
double PhotoWh() const
Return photometric Wh value.
Definition: PhotoModel.h:141
virtual void SetStandardConditions(bool standard)
Sets whether standard conditions will be used.
Definition: PhotoModel.cpp:44
std::vector< double > PhotoLList() const
Return photometric l value list.
Definition: PhotoModel.h:204