USGS

Isis 3.0 Developer's Reference (API)

Home

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 #include "NumericalApproximation.h"
29 #include "Pvl.h"
30 
31 namespace Isis {
55  class PhotoModel {
56  public:
57  PhotoModel(Pvl &pvl);
58  virtual ~PhotoModel() {};
59 
61  inline QString AlgorithmName() const {
62  return p_photoAlgorithmName;
63  };
64 
65  virtual void SetStandardConditions(bool standard);
67  bool StandardConditions() const {
68  return p_standardConditions;
69  }
70 
71  // Obtain topographic derivative
72  double PhtTopder(double phase, double incidence, double emission);
73 
74  // Obtain arccosine
75  static double PhtAcos(double cosang);
76 
77  // Calculate the surface brightness
78  double CalcSurfAlbedo(double pha, double inc, double ema);
79 
80  virtual void SetPhotoL(const double l) {};
81 
83  inline double PhotoL() const {
84  return p_photoL;
85  };
86 
87  virtual void SetPhotoK(const double k) {};
88 
90  inline double PhotoK() const {
91  return p_photoK;
92  };
93 
94  virtual void SetPhotoHg1(const double hg1) {};
95 
97  inline double PhotoHg1() const {
98  return p_photoHg1;
99  };
100 
101  virtual void SetPhotoHg2(const double hg2) {};
102 
104  inline double PhotoHg2() const {
105  return p_photoHg2;
106  };
107 
108  virtual void SetPhotoBh(const double bh) {};
109 
111  inline double PhotoBh() const {
112  return p_photoBh;
113  };
114 
115  virtual void SetPhotoCh(const double ch) {};
116 
118  inline double PhotoCh() const {
119  return p_photoCh;
120  };
121 
122  virtual void SetPhotoWh(const double wh) {};
123 
125  inline double PhotoWh() const {
126  return p_photoWh;
127  };
128 
129  virtual void SetPhotoHh(const double hh) {};
130 
132  inline double PhotoHh() const {
133  return p_photoHh;
134  };
135 
136  virtual void SetPhotoB0(const double b0) {};
137 
139  inline double PhotoB0() const {
140  return p_photoB0;
141  };
142 
143  virtual void SetPhotoTheta(const double theta) {};
144 
146  inline double PhotoTheta() const {
147  return p_photoTheta;
148  };
149 
150  virtual void SetOldTheta(double theta) {};
151 
152  virtual void SetPhoto0B0Standard(const std::string &b0standard) {};
153 
155  inline std::string Photo0B0Standard() const {
156  return p_photo0B0Standard;
157  }
158 
160  inline double Hfunc(double u, double gamma) {
161  return (1.0 + 2.0 * u) / (1.0 + 2.0 * u * gamma);
162  }
163 
164  virtual void SetPhotoPhaseList(const std::string phasestrlist) {};
165  virtual void SetPhotoKList(const std::string kstrlist) {};
166  virtual void SetPhotoLList(const std::string kstrlist) {};
167  virtual void SetPhotoPhaseCurveList(const std::string phasecurvestrlist) {};
168 
170  inline std::vector<double> PhotoPhaseList() const {
171  return p_photoPhaseList;
172  };
173 
175  inline std::vector<double> PhotoKList() const {
176  return p_photoKList;
177  };
178 
180  inline std::vector<double> PhotoLList() const {
181  return p_photoLList;
182  };
183 
185  inline std::vector<double> PhotoPhaseCurveList() const {
186  return p_photoPhaseCurveList;
187  };
188 
189  protected:
190  virtual double PhotoModelAlgorithm(double phase,
191  double incidence, double emission) = 0;
192  double p_photoL;
193  double p_photoK;
194  double p_photoHg1;
195  double p_photoHg2;
196  double p_photoBh;
197  double p_photoCh;
198  double p_photoCott;
199  double p_photoCot2t;
200  double p_photoTant;
201  double p_photoSr;
202  double p_photoOsr;
203  QString p_algName;
204  std::string p_photo0B0Standard;
205  double p_photoWh;
206  double p_photoHh;
207  double p_photoB0;
209  double p_photoTheta;
211 
212  std::vector<double> p_photoPhaseList;
213  std::vector<double> p_photoKList;
214  std::vector<double> p_photoLList;
215  std::vector<double> p_photoPhaseCurveList;
220 
221  private:
223  QString p_photoAlgorithmName;
225  bool p_standardConditions;
226  };
227 };
228 
229 #endif