28 #include <rl_basicray/rl_BasicRay.h> 55 double sg = dot( dir_, normal );
60 dir_.lincomb( 1.0, dir_, -2.0 * sg, normal );
70 print_on( ostream& os,
char const prefix[],
char const postfix[] )
const 72 os.setf( ios::scientific, ios::floatfield );
74 if ( ::strlen(prefix) ) { os << prefix; }
75 os << id_ <<
": " << energy_ <<
" " << pos_ <<
" " << dir_;
76 if ( ::strlen(postfix) ) { os << postfix; }
84 return r.
print_on( os,
"ray[",
"]" );
std::ostream & print_on(std::ostream &os, char const prefix[]="", char const postfix[]="") const
Print the ray properties to an output stream.
A basic ray: encapsulates position and direction vectors, energy, and ray id.
double reflect_direction_vector(dvm3_Vector const &normal)
Reflect this ray's direction vector about a (surface) normal.
virtual ~rl_BasicRay()
A virtual do-nothing destructor.