|
Isis 3.0 Object Programmers' Reference |
Home |
00001 #ifndef PhotoModel_h 00002 #define PhotoModel_h 00003 00026 #include <string> 00027 #include <vector> 00028 #include "NumericalApproximation.h" 00029 #include "Pvl.h" 00030 00031 namespace Isis { 00055 class PhotoModel { 00056 public: 00057 PhotoModel(Pvl &pvl); 00058 virtual ~PhotoModel() {}; 00059 00061 inline QString AlgorithmName() const { 00062 return p_photoAlgorithmName; 00063 }; 00064 00065 virtual void SetStandardConditions(bool standard); 00067 bool StandardConditions() const { 00068 return p_standardConditions; 00069 } 00070 00071 // Obtain topographic derivative 00072 double PhtTopder(double phase, double incidence, double emission); 00073 00074 // Obtain arccosine 00075 static double PhtAcos(double cosang); 00076 00077 // Calculate the surface brightness 00078 double CalcSurfAlbedo(double pha, double inc, double ema); 00079 00080 virtual void SetPhotoL(const double l) {}; 00081 00083 inline double PhotoL() const { 00084 return p_photoL; 00085 }; 00086 00087 virtual void SetPhotoK(const double k) {}; 00088 00090 inline double PhotoK() const { 00091 return p_photoK; 00092 }; 00093 00094 virtual void SetPhotoHg1(const double hg1) {}; 00095 00097 inline double PhotoHg1() const { 00098 return p_photoHg1; 00099 }; 00100 00101 virtual void SetPhotoHg2(const double hg2) {}; 00102 00104 inline double PhotoHg2() const { 00105 return p_photoHg2; 00106 }; 00107 00108 virtual void SetPhotoBh(const double bh) {}; 00109 00111 inline double PhotoBh() const { 00112 return p_photoBh; 00113 }; 00114 00115 virtual void SetPhotoCh(const double ch) {}; 00116 00118 inline double PhotoCh() const { 00119 return p_photoCh; 00120 }; 00121 00122 virtual void SetPhotoWh(const double wh) {}; 00123 00125 inline double PhotoWh() const { 00126 return p_photoWh; 00127 }; 00128 00129 virtual void SetPhotoHh(const double hh) {}; 00130 00132 inline double PhotoHh() const { 00133 return p_photoHh; 00134 }; 00135 00136 virtual void SetPhotoB0(const double b0) {}; 00137 00139 inline double PhotoB0() const { 00140 return p_photoB0; 00141 }; 00142 00143 virtual void SetPhotoTheta(const double theta) {}; 00144 00146 inline double PhotoTheta() const { 00147 return p_photoTheta; 00148 }; 00149 00150 virtual void SetOldTheta(double theta) {}; 00151 00152 virtual void SetPhoto0B0Standard(const std::string &b0standard) {}; 00153 00155 inline std::string Photo0B0Standard() const { 00156 return p_photo0B0Standard; 00157 } 00158 00160 inline double Hfunc(double u, double gamma) { 00161 return (1.0 + 2.0 * u) / (1.0 + 2.0 * u * gamma); 00162 } 00163 00164 virtual void SetPhotoPhaseList(const std::string phasestrlist) {}; 00165 virtual void SetPhotoKList(const std::string kstrlist) {}; 00166 virtual void SetPhotoLList(const std::string kstrlist) {}; 00167 virtual void SetPhotoPhaseCurveList(const std::string phasecurvestrlist) {}; 00168 00170 inline std::vector<double> PhotoPhaseList() const { 00171 return p_photoPhaseList; 00172 }; 00173 00175 inline std::vector<double> PhotoKList() const { 00176 return p_photoKList; 00177 }; 00178 00180 inline std::vector<double> PhotoLList() const { 00181 return p_photoLList; 00182 }; 00183 00185 inline std::vector<double> PhotoPhaseCurveList() const { 00186 return p_photoPhaseCurveList; 00187 }; 00188 00189 protected: 00190 virtual double PhotoModelAlgorithm(double phase, 00191 double incidence, double emission) = 0; 00192 double p_photoL; 00193 double p_photoK; 00194 double p_photoHg1; 00195 double p_photoHg2; 00196 double p_photoBh; 00197 double p_photoCh; 00198 double p_photoCott; 00199 double p_photoCot2t; 00200 double p_photoTant; 00201 double p_photoSr; 00202 double p_photoOsr; 00203 QString p_algName; 00204 std::string p_photo0B0Standard; 00205 double p_photoWh; 00206 double p_photoHh; 00207 double p_photoB0; 00208 double p_photoB0save; 00209 double p_photoTheta; 00210 double p_photoThetaold; 00211 00212 std::vector<double> p_photoPhaseList; 00213 std::vector<double> p_photoKList; 00214 std::vector<double> p_photoLList; 00215 std::vector<double> p_photoPhaseCurveList; 00216 int p_photoPhaseAngleCount; 00217 NumericalApproximation p_photoKSpline; 00218 NumericalApproximation p_photoLSpline; 00219 NumericalApproximation p_photoBSpline; 00220 00221 private: 00223 QString p_photoAlgorithmName; 00225 bool p_standardConditions; 00226 }; 00227 }; 00228 00229 #endif