SCATMECH > Classes and Functions >
Property Models
> Phase_Function
Abstract class Phase_Function
The abstract class Phase_Function is used by to store
information about the angular distribution of scattering in
bulk material, needed for example, by First_Diffuse_BRDF_Model. Five
specific classes inheriting its properties are provided.
The user may provide other phase functions by creating
classes inheriting the properties of Phase_Function.
The provided Phase_Functions are:
Instantiable Models and Their Parameters:
Parameter |
Data
Type |
Description |
Default |
Henyey_Greenstein_Phase_Function:
The Henyey-Greenstein phase function is parameterized by
g, which is the average of the cosine of the
scattering angle. The parameter g must be between
-1 and 1. For g=0, the scattering is isotropic.
For g positive, the scattering is peaked in the
forward scattering direction. For g negative, the
scattering is peaked in the backward scattering
direction.
|
g |
double |
The
asymmetry parameter given by the average of the cosine
of the scattering angle. |
0.01 |
Double_Henyey_Greenstein_Phase_Function:
The double Henyey-Greenstein phase function is the sum of
two Henyey-Greenstein phase functions, one being forward
scattering, and the other being backward scattering. It
is parameterized by two parameters, g, which is
the average of the cosine of the scattering angle, and
c, which indicates the amount of forward or
backward scattering. For c=1, the function
simplifies to the single Henyey-Greenstein phase
function, while for c=-1, the function simplifies
to the single Henyey-Greenstein phase function in the
backscattering direction. |
g |
double |
The
asymmetry parameter given by the average of the cosine
of the scattering angle. |
0.01 |
c |
double |
A
parameter which indicates the amount of forward or
backward scattering. For c=1, the function simplifies
to the single Henyey-Greenstein phase function, while
for c=-1, the function simplifies to the single
Henyey-Greenstein phase function in the backscattering
direction. |
0.1 |
Isotropic_Phase_Function:
The isotropic phase function corresponds to scattering
which is isotropic. It has no parameters.
|
Isotropic_Phase_Function
has no adjustable parameters. |
Rayleigh_Phase_Function:
The Rayleigh phase function corresponds to scattering
which follows that expected for unpolarized Rayleigh
scattering. It has no parameters.
|
Rayleigh_Phase_Function
has no adjustable parameters. |
Legendre_Phase_Function:
The Legendre phase function is parameterized by a sum of up to six Legendre
polynomials (orders l=0 to l=5).
|
c0 |
double |
The 0-coefficient of the Legendre polynomial expansion. |
1 |
c1 |
double |
The 1-coefficient of the Legendre polynomial expansion. |
0.65 |
c2 |
double |
The 2-coefficient of the Legendre polynomial expansion. |
0.42 |
c3 |
double |
The 3-coefficient of the Legendre polynomial expansion. |
0 |
c4 |
double |
The 4-coefficient of the Legendre polynomial expansion. |
0 |
c5 |
double |
The 5-coefficient of the Legendre polynomial expansion. |
0 |
Table_Phase_Function:
The class Table_Phase_Function allows the user to
provide a interpolation table of values for the phase
function. The ordinate is the angle in degrees, while the
absissa is the phase function, which is assumed to be
properly normalized. The parameter table is the
table of values (see Table).
|
table |
Table |
A look-up
table of phase function versus angle in
degrees. |
1 |
See also:
SCATMECH Home,
First_Diffuse_BRDF_Model
H.C. van de Hulst, Multiple Light Scattering: Tables,
Formulas, and Applications, (Academic Press, New York,
1980), Volume 2, Chap. 10.
L.C. Henyey and J.L. Greenstein, "Diffuse radiation in the galaxy," Astrophys. J. 93, 70-83 (1941).
Include file:
#include "firstdiffuse.h"
Source code:
firstdiffuse.cpp
Definition of public elements:
class Phase_Function : public Model {
public:
Phase_Function(int ask=0);
virtual double f(double theta)=0;
virtual Model* clone() const =0;
static Inheritance inheritance;
virtual void set_parameter(const std::string& name,const std::string& value);
};
typedef Model_Ptr<Phase_Function> Phase_Function_Ptr;
This
function evaluates the phase function for angle
theta. The angle theta is measured in
radians from the forward scattering direction. It should
be normalized so that the integral over the hemisphere is
one.
Top of Page
The typedef Phase_Function_Ptr behaves like a
pointer to an instance of class Phase_Function.
The following statement will query the user for an
instance of class Phase_Function:
Phase_Function_Ptr model = Get_Model_Ptr();
The
next statement will also create an instance of class
Phase_Function:
Phase_Function_Ptr model = "Henyey_Greenstein_Phase_Function";
See
Model_Ptr<model>.
Top of Page
For More Information
SCATMECH Technical Information and Questions
Sensor Science Division Home Page
Sensor Science Division Inquiries
Website Comments
Current SCATMECH version: 7.22 (April 2021)
|