| 
         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) 
 
  |