Isis 3 Developer 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;
230  double p_photoWh;
231  double p_photoHh;
232  double p_photoB0;
234  double p_photoTheta;
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;
245 
246  private:
248  QString p_photoAlgorithmName;
250  bool p_standardConditions;
251  };
252 };
253 
254 #endif
double p_photoB0save
Definition: PhotoModel.h:233
double p_photoCott
Definition: PhotoModel.h:223
QString p_photo0B0Standard
Definition: PhotoModel.h:229
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
virtual void SetPhotoBh(const double bh)
Definition: PhotoModel.h:118
double p_photoK
Definition: PhotoModel.h:218
NumericalApproximation p_photoBSpline
Definition: PhotoModel.h:244
virtual void SetPhotoPhaseList(const QString)
Definition: PhotoModel.h:188
double PhotoL() const
Return photometric L value.
Definition: PhotoModel.h:87
Definition: PhotoModel.h:57
QString Photo0B0Standard() const
Return photometric B0 standardization value.
Definition: PhotoModel.h:179
double p_photoTant
Definition: PhotoModel.h:225
double PhotoHg1() const
Return photometric Hg1 value.
Definition: PhotoModel.h:105
virtual void SetPhotoK(const double k)
Definition: PhotoModel.h:91
double PhotoHg2() const
Return photometric Hg2 value.
Definition: PhotoModel.h:114
double PhotoB0() const
Return photometric B0 value.
Definition: PhotoModel.h:159
double p_photoHg2
Definition: PhotoModel.h:220
std::vector< double > p_photoLList
Definition: PhotoModel.h:239
NumericalApproximation provides various numerical analysis methods of interpolation, extrapolation and approximation of a tabulated set of x, y data.
Definition: NumericalApproximation.h:720
virtual void SetPhotoL(const double l)
Definition: PhotoModel.h:82
double p_photoOsr
Definition: PhotoModel.h:227
double PhtTopder(double phase, double incidence, double emission)
Obtain topographic derivative of an arbitrary photometric function.
Definition: PhotoModel.cpp:58
QString p_algName
Definition: PhotoModel.h:228
virtual void SetPhotoHh(const double hh)
Definition: PhotoModel.h:145
PhotoModel(Pvl &pvl)
Create a PhotoModel object.
Definition: PhotoModel.cpp:20
double p_photoThetaold
Definition: PhotoModel.h:235
virtual void SetPhotoKList(const QString)
Definition: PhotoModel.h:189
virtual void SetPhotoHg1(const double hg1)
Definition: PhotoModel.h:100
double PhotoK() const
Return photometric K value.
Definition: PhotoModel.h:96
std::vector< double > p_photoPhaseList
Definition: PhotoModel.h:237
virtual ~PhotoModel()
Definition: PhotoModel.h:60
double p_photoSr
Definition: PhotoModel.h:226
std::vector< double > p_photoKList
Definition: PhotoModel.h:238
double p_photoCh
Definition: PhotoModel.h:222
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
std::vector< double > p_photoPhaseCurveList
Definition: PhotoModel.h:240
double p_photoB0
Definition: PhotoModel.h:232
virtual void SetPhotoB0(const double b0)
Definition: PhotoModel.h:154
NumericalApproximation p_photoLSpline
Definition: PhotoModel.h:243
virtual void SetPhoto0B0Standard(const QString &b0standard)
Definition: PhotoModel.h:174
Container for cube-like labels.
Definition: Pvl.h:135
int p_photoPhaseAngleCount
Definition: PhotoModel.h:241
double PhotoCh() const
Return photometric Ch value.
Definition: PhotoModel.h:132
virtual void SetPhotoLList(const QString)
Definition: PhotoModel.h:190
double PhotoTheta() const
Return photometric Theta value.
Definition: PhotoModel.h:168
virtual void SetPhotoTheta(const double theta)
Definition: PhotoModel.h:163
virtual double PhotoModelAlgorithm(double phase, double incidence, double emission)=0
double p_photoCot2t
Definition: PhotoModel.h:224
NumericalApproximation p_photoKSpline
Definition: PhotoModel.h:242
virtual void SetPhotoHg2(const double hg2)
Definition: PhotoModel.h:109
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
virtual void SetPhotoCh(const double ch)
Definition: PhotoModel.h:127
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
double p_photoHg1
Definition: PhotoModel.h:219
double Hfunc(double u, double gamma)
Hapke&#39;s approximation to Chandra&#39;s H function.
Definition: PhotoModel.h:184
virtual void SetPhotoPhaseCurveList(const QString)
Definition: PhotoModel.h:191
std::vector< double > PhotoKList() const
Return photometric k value list.
Definition: PhotoModel.h:199
double p_photoTheta
Definition: PhotoModel.h:234
bool StandardConditions() const
Returns true if standard conditions are used, i.e., if SetStandardConditions(true) has been called...
Definition: PhotoModel.h:69
double p_photoWh
Definition: PhotoModel.h:230
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
double p_photoHh
Definition: PhotoModel.h:231
virtual void SetPhotoWh(const double wh)
Definition: PhotoModel.h:136
double p_photoL
Definition: PhotoModel.h:217
std::vector< double > PhotoLList() const
Return photometric l value list.
Definition: PhotoModel.h:204
double p_photoBh
Definition: PhotoModel.h:221