9#define RAYBASE_STATUS_NONE 0
10#define RAYBASE_STATUS_FIRST_STEP 1
11#define RAYBASE_STATUS_TIR 2
27 std::vector<ObjectShape*>
Obj;
30 std::complex<double>
n,
n0;
Template class for threedimensional vectors.
Abstract base class for all rays used for the raytracing process. This abstract base class for all ra...
int objIndex
index of the current object
virtual maths::Vector< double > getk()=0
gives back direction Vector
std::complex< double > n0
current refractive index and refractive index of the host material
bool inObject
is in an object
virtual void reflectRay(RayBase *&tray, maths::Vector< double > n, std::complex< double > n1, std::complex< double > n2)=0
reflects ray
virtual bool isInObject()=0
true if ray is in an object otherwise false
virtual bool next()=0
make the next step (has to include phase progress)
int numObj
number of objects
std::vector< ObjectShape * > Obj
list of all objects
bool suppress_phase_progress
suppress phase change in next(), needed for short pulse consideration
virtual int objectIndex()=0
index of the current object or -1
virtual maths::Vector< double > getP()=0
gives back position
virtual maths::Vector< std::complex< double > > getE()=0
gives back electric field strength
RayBase * tray
transmitted ray (used by the raytracer, for internal use only)
double rc
radius of the calculation sphere
int iR
number of reflections already done
Raytracer used for ultrashort pulse calculation with raytracing only.
This class is used for the iray class. This class is intended for internal use only....
#define RAYBASE_STATUS_NONE
This file contains the Vector template class and some useful functions around this class.