Isis Developer Reference
PhotoModel.h
Go to the documentation of this file.
1#ifndef PhotoModel_h
2#define PhotoModel_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <string>
11#include <vector>
12
13#include <QString>
15#include "Pvl.h"
16
17namespace Isis {
41 class PhotoModel {
42 public:
43 PhotoModel(Pvl &pvl);
44 virtual ~PhotoModel() {};
45
47 inline QString AlgorithmName() const {
48 return p_photoAlgorithmName;
49 }
50
51 virtual void SetStandardConditions(bool standard);
53 bool StandardConditions() const {
54 return p_standardConditions;
55 }
56
57 // Obtain topographic derivative
58 double PhtTopder(double phase, double incidence, double emission);
59
60 // Obtain arccosine
61 static double PhtAcos(double cosang);
62
63 // Calculate the surface brightness
64 double CalcSurfAlbedo(double pha, double inc, double ema);
65
66 virtual void SetPhotoL(const double l) {
67 p_photoL = l;
68 }
69
71 inline double PhotoL() const {
72 return p_photoL;
73 }
74
75 virtual void SetPhotoK(const double k) {
76 p_photoK = k;
77 }
78
80 inline double PhotoK() const {
81 return p_photoK;
82 }
83
84 virtual void SetPhotoHg1(const double hg1) {
85 p_photoHg1 = hg1;
86 }
87
89 inline double PhotoHg1() const {
90 return p_photoHg1;
91 }
92
93 virtual void SetPhotoHg2(const double hg2) {
94 p_photoHg2 = hg2;
95 }
96
98 inline double PhotoHg2() const {
99 return p_photoHg2;
100 }
101
102 virtual void SetPhotoBh(const double bh) {
103 p_photoBh = bh;
104 }
105
107 inline double PhotoBh() const {
108 return p_photoBh;
109 }
110
111 virtual void SetPhotoCh(const double ch) {
112 p_photoCh = ch;
113 }
114
116 inline double PhotoCh() const {
117 return p_photoCh;
118 }
119
120 virtual void SetPhotoWh(const double wh) {
121 p_photoWh = wh;
122 }
123
125 inline double PhotoWh() const {
126 return p_photoWh;
127 }
128
129 virtual void SetPhotoHh(const double hh) {
130 p_photoHh = hh;
131 }
132
134 inline double PhotoHh() const {
135 return p_photoHh;
136 }
137
138 virtual void SetPhotoB0(const double b0) {
139 p_photoB0 = b0;
140 }
141
143 inline double PhotoB0() const {
144 return p_photoB0;
145 }
146
147 virtual void SetPhotoTheta(const double theta) {
148 p_photoTheta = theta;
149 }
150
152 inline double PhotoTheta() const {
153 return p_photoTheta;
154 }
155
156 // virtual void SetOldTheta(double theta) = 0;
157
158 virtual void SetPhoto0B0Standard(const QString &b0standard) {
159 p_photo0B0Standard = b0standard;
160 }
161
163 inline QString Photo0B0Standard() const {
164 return p_photo0B0Standard;
165 }
166
168 inline double Hfunc(double u, double gamma) {
169 return (1.0 + 2.0 * u) / (1.0 + 2.0 * u * gamma);
170 }
171
172 virtual void SetPhotoPhaseList(const QString) {}
173 virtual void SetPhotoKList(const QString) {}
174 virtual void SetPhotoLList(const QString) {}
175 virtual void SetPhotoPhaseCurveList(const QString) {}
176
178 inline std::vector<double> PhotoPhaseList() const {
179 return p_photoPhaseList;
180 }
181
183 inline std::vector<double> PhotoKList() const {
184 return p_photoKList;
185 }
186
188 inline std::vector<double> PhotoLList() const {
189 return p_photoLList;
190 }
191
193 inline std::vector<double> PhotoPhaseCurveList() const {
195 }
196
197 protected:
198 virtual double PhotoModelAlgorithm(double phase,
199 double incidence, double emission) = 0;
200
201 double p_photoL;
202 double p_photoK;
205 double p_photoBh;
206 double p_photoCh;
210 double p_photoSr;
212 QString p_algName;
214 double p_photoWh;
215 double p_photoHh;
216 double p_photoB0;
220
221 std::vector<double> p_photoPhaseList;
222 std::vector<double> p_photoKList;
223 std::vector<double> p_photoLList;
224 std::vector<double> p_photoPhaseCurveList;
229
230 private:
232 QString p_photoAlgorithmName;
234 bool p_standardConditions;
235 };
236};
237
238#endif
NumericalApproximation provides various numerical analysis methods of interpolation,...
Definition NumericalApproximation.h:726
Definition PhotoModel.h:41
virtual void SetPhotoLList(const QString)
Definition PhotoModel.h:174
std::vector< double > p_photoPhaseList
Definition PhotoModel.h:221
virtual void SetPhotoBh(const double bh)
Definition PhotoModel.h:102
double p_photoTheta
Definition PhotoModel.h:218
virtual void SetPhotoB0(const double b0)
Definition PhotoModel.h:138
double p_photoCh
Definition PhotoModel.h:206
double PhotoHg1() const
Return photometric Hg1 value.
Definition PhotoModel.h:89
virtual void SetPhotoKList(const QString)
Definition PhotoModel.h:173
double CalcSurfAlbedo(double pha, double inc, double ema)
Calculate the surface brightness using photometric angle information.
Definition PhotoModel.cpp:177
double PhotoL() const
Return photometric L value.
Definition PhotoModel.h:71
std::vector< double > PhotoPhaseCurveList() const
Return photometric phase curve value list.
Definition PhotoModel.h:193
double PhotoBh() const
Return photometric Bh value.
Definition PhotoModel.h:107
double PhotoHg2() const
Return photometric Hg2 value.
Definition PhotoModel.h:98
QString p_algName
Definition PhotoModel.h:212
std::vector< double > PhotoLList() const
Return photometric l value list.
Definition PhotoModel.h:188
std::vector< double > PhotoKList() const
Return photometric k value list.
Definition PhotoModel.h:183
double p_photoHh
Definition PhotoModel.h:215
bool StandardConditions() const
Returns true if standard conditions are used, i.e., if SetStandardConditions(true) has been called....
Definition PhotoModel.h:53
double p_photoL
Definition PhotoModel.h:201
NumericalApproximation p_photoKSpline
Definition PhotoModel.h:226
double PhotoB0() const
Return photometric B0 value.
Definition PhotoModel.h:143
virtual void SetPhotoTheta(const double theta)
Definition PhotoModel.h:147
double p_photoThetaold
Definition PhotoModel.h:219
std::vector< double > PhotoPhaseList() const
Return photometric phase angle list.
Definition PhotoModel.h:178
virtual void SetPhotoHg2(const double hg2)
Definition PhotoModel.h:93
double PhotoTheta() const
Return photometric Theta value.
Definition PhotoModel.h:152
std::vector< double > p_photoPhaseCurveList
Definition PhotoModel.h:224
virtual void SetPhotoCh(const double ch)
Definition PhotoModel.h:111
virtual void SetPhotoL(const double l)
Definition PhotoModel.h:66
double p_photoTant
Definition PhotoModel.h:209
double Hfunc(double u, double gamma)
Hapke's approximation to Chandra's H function.
Definition PhotoModel.h:168
double p_photoB0save
Definition PhotoModel.h:217
virtual void SetPhotoPhaseCurveList(const QString)
Definition PhotoModel.h:175
double p_photoBh
Definition PhotoModel.h:205
virtual void SetPhotoHh(const double hh)
Definition PhotoModel.h:129
double p_photoK
Definition PhotoModel.h:202
double PhotoCh() const
Return photometric Ch value.
Definition PhotoModel.h:116
virtual void SetPhotoHg1(const double hg1)
Definition PhotoModel.h:84
double p_photoWh
Definition PhotoModel.h:214
virtual void SetPhotoWh(const double wh)
Definition PhotoModel.h:120
double p_photoSr
Definition PhotoModel.h:210
virtual ~PhotoModel()
Definition PhotoModel.h:44
virtual void SetPhotoPhaseList(const QString)
Definition PhotoModel.h:172
std::vector< double > p_photoLList
Definition PhotoModel.h:223
double PhtTopder(double phase, double incidence, double emission)
Obtain topographic derivative of an arbitrary photometric function.
Definition PhotoModel.cpp:64
virtual void SetStandardConditions(bool standard)
Sets whether standard conditions will be used.
Definition PhotoModel.cpp:50
virtual void SetPhotoK(const double k)
Definition PhotoModel.h:75
double p_photoCott
Definition PhotoModel.h:207
double PhotoK() const
Return photometric K value.
Definition PhotoModel.h:80
double p_photoCot2t
Definition PhotoModel.h:208
NumericalApproximation p_photoLSpline
Definition PhotoModel.h:227
NumericalApproximation p_photoBSpline
Definition PhotoModel.h:228
int p_photoPhaseAngleCount
Definition PhotoModel.h:225
double p_photoOsr
Definition PhotoModel.h:211
std::vector< double > p_photoKList
Definition PhotoModel.h:222
QString p_photo0B0Standard
Definition PhotoModel.h:213
PhotoModel(Pvl &pvl)
Create a PhotoModel object.
Definition PhotoModel.cpp:26
QString AlgorithmName() const
Return algorithm name found in Pvl file from constructor.
Definition PhotoModel.h:47
QString Photo0B0Standard() const
Return photometric B0 standardization value.
Definition PhotoModel.h:163
double p_photoHg1
Definition PhotoModel.h:203
virtual double PhotoModelAlgorithm(double phase, double incidence, double emission)=0
double p_photoB0
Definition PhotoModel.h:216
double PhotoWh() const
Return photometric Wh value.
Definition PhotoModel.h:125
static double PhtAcos(double cosang)
Obtain arccosine of input value.
Definition PhotoModel.cpp:150
virtual void SetPhoto0B0Standard(const QString &b0standard)
Definition PhotoModel.h:158
double PhotoHh() const
Return photometric Hh value.
Definition PhotoModel.h:134
double p_photoHg2
Definition PhotoModel.h:204
Container for cube-like labels.
Definition Pvl.h:119
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16