SCATMECH > Classes and Functions >
Surface Scattering Models
> Local_BRDF_Model
The abstract class Local_BRDF_Model handles the
generic operations associated with any scattering model
which is associated with a localized defect for which a
differential scattering cross-section (DSC) is a more
natural description of the scattering function. It adds to
the class BRDF_Model a
conversion from DSC to BRDF using a specified defect
density or inverse spot size. All classes which inherit
Local_BRDF_Model must define either jonesDSC or muellerDSC. The class also provides the
public functions JonesDSC and
MuellerDSC, defined in a similar
fashion as the similarly named functions in BRDF_Model.
The convention of Local_BRDF_Model is that the
function jonesDSC returns a
scattering matrix of type JonesMatrix, which, when converted to
a MuellerMatrix by
typecasting, becomes the differential scattering
cross-section (DSC). This function differs from that
defined for SphericalScatterer
by a factor of 1/k.
Parameters:
Parameter |
Data
Type |
Description |
Default |
lambda |
double |
Wavelength of the light
in vacuum [µm].
(Inherited from BRDF_Model.) |
0.532 |
type |
int |
Indicates whether the light is incident from above the
substrate or from within the substrate and whether the
scattering is evaluated in reflection or transmission.
The choices are:
0 : Light is incident from the above the substrate, and scattering is evaluated in reflection.
1 : Light is incident from the above the substrate, and scattering is evaluated in transmission.
2 : Light is incident from the within the substrate, and scattering is evaluated in reflection.
3 : Light is incident from the within the substrate, and scattering is evaluated in transmission.
For 1, 2, and 3, the substrate must be non-absorbing.
Not every model inheriting Local_BRDF_Model supports all modes.
(Inherited from BRDF_Model). |
0 |
substrate |
dielectric_function |
The
optical constants of the substrate, expressed as a
complex number (n,k) or, optionally, as a function of
wavelength.
(Inherited from BRDF_Model.) |
(4.05,0.05) |
density |
double |
The
surface number density of local scatterers
[µm-2]. |
1 |
See also:
SCATMECH Home, Conventions, SphericalScatterer
Include file:
#include "local.h"
Source code:
local.cpp
reg_local.cpp
Definition of public and protected elements:
class BRDF_Model {
public:
JonesMatrix JonesDSC(double thetai,
double thetas,
double phis,
Coordinate_System cs = psps);
MuellerMatrix MuellerDSC(double thetai,
double thetas,
double phis,
Coordinate_System cs = psps);
JonesMatrix JonesDSC(Vector& source,
Vector& viewer,
Vector& normal,
Coordinate_System cs = plane);
MuellerMatrix MuellerDSC(Vector& source,
Vector& viewer,
Vector& normal,
Coordinate_System cs = plane);
protected:
virtual JonesMatrix jonesDSC(double thetai,
double thetas,
double phis);
virtual MuellerMatrix muellerDSC(double thetai,
double thetas,
double phis);
};
typedef Model_Ptr<Local_BRDF_Model> Local_BRDF_Model_Ptr;
These functions
behave like their three-argument versions, but allow for
evaluation of models using different polarization
coordinate systems. They cannot be overloaded by
inherited classes. The value of cs defines the
coordinate system for which the scattering matrix will be
returned.
Example:
double ti,ts,ps;
JonesVector incidentlight;
BRDF_Model *model;
JonesVector jones = model->Jones(ti,ts,ps,BRDF_Model::plane)*incidentlight;
Top of Page
These function behave like the functions jones and mueller,
except that rather than specifying scattering angles,
directions to the source and viewer and the surface
normal are specified. source is a Vector pointing from the sample to the
light source. viewer is a Vector pointing in the scattering
direction. normal is a Vector pointing in the outward surface
normal. Neither source, viewer, or
normal need be normalized.
Note that the coordinate system defaults to
BRDF_Model::plane, which is most natural for
rendering applications.
Top of Page
This function returns the Jones scattering matrix. Its
parameters are the incident angle thetai, the
scattering polar angle thetas, and the scattering
azimuthal angle phis. If this function is not
defined for an inherited class, it defaults to a MuellerMatrix to JonesMatrix conversion. One of the
functions, mueller or jones, must be
defined by any inherited class.
Example:
double ti,ts,ps;
JonesVector incidentlight;
Some_BRDF_Model model; // Assume that Some_BRDF_Model is a BRDF_Model...
JonesVector jones = model.jones(ti,ts,ps)*incidentlight;
Top of Page
This function returns the Mueller scattering matrix. Its
parameters are the incident angle thetai, the
scattering polar angle thetas, and the scattering
azimuthal angle phis. If this function is not
defined for an inherited class, it defaults to a JonesMatrix to MuellerMatrix conversion. One of
the functions, mueller or jones, must be
defined by any inherited class.
The convention of the Local_BRDF_Model class is
that the 00 term of the Mueller matrix is the
differential scattering cross section (DSC).
Top of Page
The typedef Local_BRDF_Model_Ptr behaves like a
pointer to an instance of class Local_BRDF_Model.
The following statement will query the user for an
instance of class Local_BRDF_Model:
Local_BRDF_Model_Ptr model = Get_Model_Ptr();
The next
statement will also create an instance of class
Local_BRDF_Model:
Local_BRDF_Model_Ptr model = "Bobbert_Vlieger_BRDF_Model";
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)
|