USGS

Isis 3.0 Object Programmers' Reference

Home

PhotoModel.h

Go to the documentation of this file.
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