GOAT (Geometrical optics application tool) 0.1
Loading...
Searching...
No Matches
GOAT::raytracing::LightSrcLine Class Reference

This class provides a light source, which emitts along a straight line. More...

#include <lightsrc.h>

Inheritance diagram for GOAT::raytracing::LightSrcLine:
GOAT::raytracing::LightSrc

Public Member Functions

void binReadItem (std::ifstream &os)
 reads content of LightSrc from a binary file, represented by os (has to be specified by the derived classes)
void binWriteItem (std::ofstream &os)
 writes content of LightSrc in a binary file, represented by is (has to be specified by the derived classes)focuspos
 LightSrcLine ()
 LightSrcLine (maths::Vector< double > Pos, int N, double wvl, double size, maths::Vector< double > k=maths::ez, maths::Vector< double > direction=maths::ey)
 constructor
int next (IRay &S)
int next (Ray_pow &S)
int next (RayBase *ray)
int next (tubedRay &S)
Public Member Functions inherited from GOAT::raytracing::LightSrc
void addObject (ObjectShape *obj)
 add single object to the object list
void adjustDirection ()
void binRead (std::ifstream &is)
 writes content of LightSrc in a binary file, represented by is
void binWrite (std::ofstream &os)
 reads content of LightSrc from a binary file, represented by os
void clearObjects ()
 clear object list
double getDensity ()
 returns the ray density, i.e. the number of rays per unit length (=D/N)
maths::Vector< std::complex< double > > getInitPol ()
double getIsum1 ()
double getIsum2 ()
maths::Vector< double > getk ()
 returns the main direction of the light source
int getNumObjs ()
 returns the number of Objects (only needed, when used seperately outside scene)
int getNumRays ()
 returns the number of rays (per direction in space)
int getNumRaysRT ()
ObjectShapegetObject (int i)
 returns i-th item in the object list
maths::Vector< double > getPos ()
 returns the position of the light source. This is the center of the square area of the light source
double getWavelength ()
double getWavenumber ()
 LightSrc ()
 LightSrc (const LightSrc &)
 Copy constructor.
void ObjectList (int Anz, std::vector< ObjectShape * > Obj)
int rayType ()
 returns the current ray type
void removeObject (ObjectShape *obj)
 remove object from the object list
void reset ()
 Reset everything (counting starts from the beginning)
void setD (double D)
 sets the width of the light source (this resets also the ray counter)
void setD (double D1, double D2)
void setk (const maths::Vector< double > &k)
 sets the main direction of the light source
void setN0 (std::complex< double > n0)
 sets the complex valued refractive index of the intermediate medium
void setNumRays (int N)
void setNumRaysRT (int numRaysRT)
void setObject (ObjectShape *O, int i=-1)
 exchanges i-th object in the object list
void setPol (maths::Vector< std::complex< double > > pol)
 sets the polarisation
void setPos (maths::Vector< double > P)
 sets the position of the light source. This is the center of the square area of the light source
void setR0 (double r0)
 sets the radius of the calculation sphere
void setWavelength (double wvl)
void setWavenumber (double k0)
 ~LightSrc (void)
virtual double area ()

Public Attributes

maths::Vector< double > direction
double size
Public Attributes inherited from GOAT::raytracing::LightSrc
double D
 width of the square light source area
double D1
double D2
 width in the e1- and the e2-direction (used only for _mc versions of LightSrc)
double density
 ray density, i.e. distance between two neighboring rays
maths::Vector< double > e1
maths::Vector< double > e2
 unit vectors that span the light source area
int i1
 first index of the ray inside the starting area (for internal use, -1 if the calculation has not yet been started)
int i2
 second index of the ray inside the starting area (for internal use, -1 if the calculation has not yet been started)
maths::Vector< std::complex< double > > initPol
 Polarisation, if the k-Vector points in z-direction.
maths::Vector< double > k
 main direction of the light source
int N =10000
 number of rays (per direction)
std::complex< double > n0
 refractive index of the intermediate medium
int numObjs
 number of objects
std::vector< ObjectShape * > Obj
 list of all objects
double P0 =1.0
 power
double Pall
 overall Power
maths::Vector< std::complex< double > > Pol
 polarisation (default: (0.0, 1.0, 0.0)
maths::Vector< std::complex< double > > Pol2
 second polarisation (used by IRay)
int polType
 Polarisationsrichtung (s.o.)
maths::Vector< double > Pos
 position of the light source (center of the square area of the light source)
double r0 =1.0
 radius of the calculation sphere
int rayCounter =0
int raytype
 Strahltyp : ray oder ISTRAHL (=RAY oder IRAY)
bool suppress_phase_progress = false
 if set true, the phase won't be changed when calling a next method (needed for USP-calculations)
int type
 type of the light source

Additional Inherited Members

Protected Attributes inherited from GOAT::raytracing::LightSrc
double Isum1
double Isum2
double k0
 wavenumber (i.e. \( \frac{2\pi}{\lambda}\)
int numRaysRT =20
 used in GOATvis to determine number of rays for ray representation
maths::Vector< double > rotVec =maths::Vector<double>(1,0,0)
 Vector which holds the spherical coordinates \(r\), \(\vartheta\) and \(\varphi\) of the direction vector k.
double wvl =1
 wavelength

Detailed Description

This class provides a light source, which emitts along a straight line.

Definition at line 224 of file lightsrc.h.

Constructor & Destructor Documentation

◆ LightSrcLine() [1/2]

GOAT::raytracing::LightSrcLine::LightSrcLine ( )

◆ LightSrcLine() [2/2]

GOAT::raytracing::LightSrcLine::LightSrcLine ( maths::Vector< double > Pos,
int N,
double wvl,
double size,
maths::Vector< double > k = maths::ez,
maths::Vector< double > direction = maths::ey )

constructor

Parameters
PosPosition of the light source
Nnumber of rays along straight line
sizelength of the light source
directiondirection of light source (not the direction of emission !)

Member Function Documentation

◆ binReadItem()

void GOAT::raytracing::LightSrcLine::binReadItem ( std::ifstream & os)
inlinevirtual

reads content of LightSrc from a binary file, represented by os (has to be specified by the derived classes)

Implements GOAT::raytracing::LightSrc.

Definition at line 241 of file lightsrc.h.

◆ binWriteItem()

void GOAT::raytracing::LightSrcLine::binWriteItem ( std::ofstream & os)
inlinevirtual

writes content of LightSrc in a binary file, represented by is (has to be specified by the derived classes)focuspos

Implements GOAT::raytracing::LightSrc.

Definition at line 240 of file lightsrc.h.

◆ next() [1/4]

int GOAT::raytracing::LightSrcLine::next ( IRay & S)
virtual

◆ next() [2/4]

int GOAT::raytracing::LightSrcLine::next ( Ray_pow & S)
virtual

◆ next() [3/4]

int GOAT::raytracing::LightSrcLine::next ( RayBase * ray)
virtual

These functions return the next ray of the light source for further calculations

Parameters
raynext ray
Return values
LIGHTSRC_NOT_LAST_RAY,ifray is not the last ray, LIGHTSRC_IS_LAST_RAY, if the ray is the last ray or LIGHTSRC_ERROR if an error occured

Implements GOAT::raytracing::LightSrc.

◆ next() [4/4]

int GOAT::raytracing::LightSrcLine::next ( tubedRay & S)
virtual

Member Data Documentation

◆ direction

maths::Vector<double> GOAT::raytracing::LightSrcLine::direction

Definition at line 242 of file lightsrc.h.

◆ size

double GOAT::raytracing::LightSrcLine::size

Definition at line 243 of file lightsrc.h.


The documentation for this class was generated from the following file: