1 #ifndef rl_MultilayerSurface_h_INCLUDED 2 #define rl_MultilayerSurface_h_INCLUDED 31 #include <dvm3/dvm3_vector.h> 32 #include <rl_raylib/rl_Multilayer.h> 33 #include <rl_raylib/rl_Ray.h> 34 #include <rl_raylib/rl_ReflectionCoefPOD.h> 158 std::ostream&
dump_on( std::ostream& os,
int layer_no,
159 char const pre[] =
"",
160 char const pst[] =
"" )
const;
180 inline rl_MultilayerSurface::
182 : ml_( ml ), normal_( norm )
216 dot( ray.direction(), normal_ ) );
219 ray.
reflect( normal_, rflcoef_ );
227 {
return ml_.
layer(layer_no); }
233 char const pst[] )
const 235 ml_.
dump_on( os, layer_no, pre, pst );
std::ostream & dump_on(std::ostream &os, int layer_no, char const pre[]="", char const pst[]="") const
Dump information about a layer.
std::ostream & dump_on(std::ostream &os, int layer_no, char const pre[]="", char const pst[]="") const
Dump information about layer layer_no to stream os.
A class encapsulating a multilayer surface, including surface normal.
An rl_BasicRay with added polarization information.
int reflect(rl_Ray &ray)
Mutator.
void reflect(dvm3_Vector const &normal, rl_ReflectionCoefPOD const &rflcoef)
Reflect this ray's direction vector and polarization state.
A Plain Ol' Data class representing complex reflection coefficients.
rl_ReflectionCoefPOD const & reflection_coefs() const
Accessor.
dvm3_Vector const & normal_vector() const
Accessor.
rl_DielectricLayer const & layer(int layer_no) const
Accessor.
void set_normal(dvm3_Vector const &norm)
Mutator.
int multilayer_reflect_coef(rl_ReflectionCoefPOD &rfl, double energy, double sg)
Evaluate the multilayer reflection coefficients.
virtual ~rl_MultilayerSurface()
Destructor.
A class encapsulating reflection of a ray from a multilayer surface.
rl_DielectricLayer const & layer(int layer_no) const
A class encapsulating the multilayer reflection of a ray.