1 #ifndef rl_Ray_h_INCLUDED 2 #define rl_Ray_h_INCLUDED 31 #include <rl_basicray/rl_BasicRay.h> 32 #include <rl_raylib/rl_Polarization.h> 33 #include <dvm3/dvm3_vector.h> 82 rl_Ray( dvm3_Vector
const& pos, dvm3_Vector
const& dir,
83 double energy,
long int id,
95 void init_ray( dvm3_Vector
const& pos, dvm3_Vector
const& dir,
96 double energy,
long int id,
140 void reflect( dvm3_Vector
const& normal,
151 dvm3_RotMat
const& rotmat );
162 dvm3_RotMat
const& rotmat );
171 std::ostream&
print_on( std::ostream& os,
char const pre[] =
"",
172 char const pst[] =
"" )
const;
199 : rl_BasicRay( ray ), pol_( cspol, ray.direction() )
203 rl_Ray( dvm3_Vector
const& pos, dvm3_Vector
const& dir,
204 double energy,
long int id,
206 : rl_BasicRay( pos, dir, energy, id ),
211 init_ray( dvm3_Vector
const& pos, dvm3_Vector
const& dir,
212 double energy,
long int id,
215 rl_BasicRay::init( pos, dir, energy,
id );
216 pol_.
init( cspol, dir );
243 { pol_.
init( cspol, dir_ ); }
void translate_rotate(dvm3_Vector const &trans, dvm3_RotMat const &rotmat)
Translate to BCS origin and rotate from STD to BCS coordinates.
rl_Ray()
Default constructor.
void init_ray(dvm3_Vector const &pos, dvm3_Vector const &dir, double energy, long int id, rl_PolCSPOD const &cspol)
Initialize a ray.
double intensity() const
Returns this ray's normalized intensity (i.e., "weight")
std::ostream & print_on(std::ostream &os, char const pre[]="", char const pst[]="") const
Write the ray contents with optional pre and post comment strings.
virtual ~rl_Ray()
Destructor.
An rl_BasicRay with added polarization information.
void get_PolCSPOD(rl_PolCSPOD &cs) const
Evaluate rl_PolCSPOD corresponding to this ray's polarization state.
void reflect(dvm3_Vector const &normal, rl_ReflectionCoefPOD const &rflcoef)
Reflect this ray's direction vector and polarization state.
void attenuate(double by_how_much)
Attenuate this ray by by_how_much.
A Plain Ol' Data class representing complex reflection coefficients.
A Plain Ol' Data struct (POD) encapsulating the OSAC-style complex polarization amplitudes.
void attenuate(double factor)
Attenuate reflectivity by a factor.
void init(rl_PolCSPOD const &cs, dvm3_Vector const &dir)
Initialize the polarization state.
void get_PolCSPOD(rl_PolCSPOD &cs, dvm3_Vector const &dir) const
Evaluate rl_PolCSPOD corresponding to this polarization state.
Encapsulates the polarization state of a ray.
double intensity() const
Evaluate intensity.
void set_polarization(rl_PolCSPOD const &cspol)
Set the polarization state.
void derotate_detranslate(dvm3_Vector const &trans, dvm3_RotMat const &rotmat)
Derotate back to std coordinates; detranslate back to std origin.
rl_Polarization const & polarization() const
Return the polarization state.