12#include "IException.h"
38 IString msg =
"Keyword [Name] or keyword [PhtName] must ";
39 msg +=
"exist in [Group = Algorithm]";
73 double inc1, inc2, inc3, inc4;
75 double ema1, ema2, ema3, ema4;
83 xi = sin((
Isis::PI / 180.0) * incidence);
84 zi = cos((
Isis::PI / 180.0) * incidence);
89 if((incidence == 0.0) || (emission == 0.0)) {
93 cphi = (cos((
Isis::PI / 180.0) * phase) -
94 cos((
Isis::PI / 180.0) * incidence) *
95 cos((
Isis::PI / 180.0) * emission)) /
96 (sin((
Isis::PI / 180.0) * incidence) *
102 xe = cphi * sin((
Isis::PI / 180.0) * emission);
104 ze = cos((
Isis::PI / 180.0) * emission);
108 xy = sin((
Isis::PI / 180.0) * epsh);
111 cinc = max(-1.0, min(xy * xi + z * zi, 1.0));
113 cema = max(-1.0, min(xy * xe + z * ze, 1.0));
116 cinc = max(-1.0, min(-xy * xi + z * zi, 1.0));
118 cema = max(-1.0, min(-xy * xe + z * ze, 1.0));
121 cinc = max(-1.0, min(z * zi, 1.0));
123 cema = max(-1.0, min(xy * ye + z * ze, 1.0));
126 cinc = max(-1.0, min(z * zi, 1.0));
128 cema = max(-1.0, min(-xy * ye + z * ze, 1.0));
135 result = sqrt(max(1.0e-30, d1 * d1 + d2 * d2));
153 if(fabs(cosang) <= 1.0) {
154 result = acos(cosang);
187 double albedo = PhotoModelAlgorithm(pha, inc, ema);
@ User
A type of error that could only have occurred due to a mistake on the user's part (e....
Adds specific functionality to C++ strings.
double CalcSurfAlbedo(double pha, double inc, double ema)
Calculate the surface brightness using photometric angle information.
QString p_photoAlgorithmName
Unique name of the photometric model.
bool p_standardConditions
Indicates whether standard conditions are used.
double PhtTopder(double phase, double incidence, double emission)
Obtain topographic derivative of an arbitrary photometric function.
virtual void SetStandardConditions(bool standard)
Sets whether standard conditions will be used.
PhotoModel(Pvl &pvl)
Create a PhotoModel object.
static double PhtAcos(double cosang)
Obtain arccosine of input value.
bool hasKeyword(const QString &name) const
Check to see if a keyword exists.
Contains multiple PvlContainers.
Container for cube-like labels.
@ Traverse
Search child objects.
This is free and unencumbered software released into the public domain.
const double PI
The mathematical constant PI.
Namespace for the standard library.