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

Representation of aspheric lens The left and the right side is described by a formula \( z(r)=\frac{r^2}{R\left( 1+\sqrt{1-(1+\kappa)\frac{r^2}{R^2}}\right)}+\sum_l \alpha_l r^l \) or the side can also be plano. More...

#include <asphericLens.h>

Inheritance diagram for GOAT::raytracing::asphericLens:
GOAT::raytracing::ObjectShape

Public Types

enum  Side { left , right , lateral }

Public Member Functions

 asphericLens (const maths::Vector< double > &P, std::complex< double > n, asphericLensParms lensParms, const maths::Matrix< std::complex< double > > alpha=maths::CUNITY, const maths::Vector< double > &Ex=maths::ex, const maths::Vector< double > &Ey=maths::ey, const maths::Vector< double > &Ez=maths::ez)
void binRead ()
void binRead (std::ifstream &os)
 not yet implemented
void binWrite ()
void binWrite (std::ofstream &os)
 not yet implemented
maths::Vector< double > calcCoM ()
 not yet implemented
double dzdrleft (maths::Vector< double > P, double lambda)
double dzdrright (maths::Vector< double > P, double lambda)
void initQuad ()
 not yet implemented
bool isInside (const maths::Vector< double > &p)
 checks if point P is inside the object
bool next (const maths::Vector< double > &p, const maths::Vector< double > &k, maths::Vector< double > &pout)
 searches for the next (nearest) intersection of a ray with the object, p: current position of the ray, k: direction of the ray, pout: position of the crossing point. Returns true, if a crossing point was found.
maths::Vector< double > norm (const maths::Vector< double > &P)
 surface normal at the point P
void scale (double sf)
void setPos (double x, double y, double z)
 not yet implemented
void setPos (maths::Vector< double > r)
 not yet implemented
void setr0 (double r0)
 not yet implemented
double volume ()
 not yet implemented
double z (double r, asphericLensSide side)
double zleft (maths::Vector< double > P, double lambda)
double zright (maths::Vector< double > P, double lambda)
Public Member Functions inherited from GOAT::raytracing::ObjectShape
std::complex< double > getn ()
 returns refractive index for inelastic (RRT) calculation
std::complex< double > getninel ()
 returns refractive index
bool getVisible ()
 show the visiblity state (used in GOATvis)
bool isActive ()
 returns true if the object should be considered for inelastic calculation
bool isOutsideWorld ()
 Test if bounding box is (partly) outside the calculation space.
 ObjectShape ()
 ObjectShape (const maths::Vector< double > &P, std::complex< double > n, GOAT::maths::Matrix< std::complex< double > > alpha, const maths::Vector< double > &Ex=maths::ex, const maths::Vector< double > &Ey=maths::ey, const maths::Vector< double > &Ez=maths::ez, const int type=-1)
 Constructor, as template for all derived classes.
 ObjectShape (const ObjectShape &F)
void rotate (maths::Vector< double > A, double phi)
 sets the matrix for the transformation between object's coordinate system and outer coordinate system, A: rotation axis, phi: angle for rotation around A
void scale (double sf)
 sets scaling of the shape by the factor sf
void setActive (bool active)
 sets flag if the object is inelastic active, i.e. it will be considered for inelastic calculation
void setAlpha (double Alpha)
 sets rotation angle around x-axis
void setBeta (double Beta)
 sets rotation angle around y-axis
void setCenter (maths::Vector< double > P)
 sets Center to P (check, if function is necessary)
void setCenter2CoM ()
 Calculates the center of mass (CoM) and sets the object's reference point to the CoM.
void setGamma (double Gamma)
 sets rotation angle around z-axis
void setMatrix (double alpha, double beta, double gamma)
 sets the matrix for the transformation between object's coordinate system and outer coordinate system, alpha, beta, gamma: angles (rotation around x-, y- and z-axis) to calculate transformation matrix
void setMatrix (maths::Matrix< double > H)
 sets the matrix for the transformation between object's coordinate system and outer coordinate system, H: transformation matrix
void setn (std::complex< double > n)
 sets refractive index
void setninel (std::complex< double > ninel)
 sets refractive index for inelastic (RRT) calculation
void setPolMatrix (maths::Matrix< std::complex< double > >alpha)
 sets polarisability matrix
void setVisible (bool visible)
 set visiblity (used in GOATvis)
int Type ()
 returns the object's type

Public Attributes

maths::Vector< double > currentnorm
double drdlambda
maths::Vector< double > k
asphericLensParms lensParms
maths::Vector< double > P
Public Attributes inherited from GOAT::raytracing::ObjectShape
bool Active
 should the object be considered for inelastic (RRT) calculations?
maths::Matrix< std::complex< double > > alpha
 polarisability matrix
maths::Vector< double > e [3]
 unity vectors, describing the directions of the local coordinate system
double Ealpha
double Ebeta
double Egamma
 angles through which the object was rotated (around the x- (Ealpha), then the y- (Ebeta) and finally the z-axis (Egamma))
maths::Matrix< double > H
std::complex< double > n
 refractive index of the object
std::function< std::complex< double >(double)> nfunc
NFUNCTYPE nfuncType =NFUNCTYPE::vacuum
std::complex< double > ninel
 refractive index of the object, used for inelastic (RRT) calculation
maths::Vector< double > P
 position of the object
maths::Vector< double > por
 corners of the circumferent cuboid (lower left corner and upper right corner)
maths::Vector< double > pul
maths::Matrix< double > R
 matrices for the transformation in the local coordinate system (H) and back to the calculation system (R)
double r0
 radius of the calculation sphere
double rho
 mass density in \( kg/m^3 \)
double sf =1
 scaling factor, it is used to scale the shape of the object
int type
 type of the object
bool visible =true

Detailed Description

Representation of aspheric lens The left and the right side is described by a formula \( z(r)=\frac{r^2}{R\left( 1+\sqrt{1-(1+\kappa)\frac{r^2}{R^2}}\right)}+\sum_l \alpha_l r^l \) or the side can also be plano.

Definition at line 40 of file asphericLens.h.

Member Enumeration Documentation

◆ Side

Enumerator
left 
right 
lateral 

Definition at line 69 of file asphericLens.h.

Constructor & Destructor Documentation

◆ asphericLens()

GOAT::raytracing::asphericLens::asphericLens ( const maths::Vector< double > & P,
std::complex< double > n,
asphericLensParms lensParms,
const maths::Matrix< std::complex< double > > alpha = maths::CUNITY,
const maths::Vector< double > & Ex = maths::ex,
const maths::Vector< double > & Ey = maths::ey,
const maths::Vector< double > & Ez = maths::ez )

Member Function Documentation

◆ binRead() [1/2]

void GOAT::raytracing::asphericLens::binRead ( )

◆ binRead() [2/2]

void GOAT::raytracing::asphericLens::binRead ( std::ifstream & os)
inlinevirtual

not yet implemented

Implements GOAT::raytracing::ObjectShape.

Definition at line 59 of file asphericLens.h.

◆ binWrite() [1/2]

void GOAT::raytracing::asphericLens::binWrite ( )

◆ binWrite() [2/2]

void GOAT::raytracing::asphericLens::binWrite ( std::ofstream & os)
inlinevirtual

not yet implemented

Implements GOAT::raytracing::ObjectShape.

Definition at line 58 of file asphericLens.h.

◆ calcCoM()

maths::Vector< double > GOAT::raytracing::asphericLens::calcCoM ( )
inlinevirtual

not yet implemented

Implements GOAT::raytracing::ObjectShape.

Definition at line 64 of file asphericLens.h.

◆ dzdrleft()

double GOAT::raytracing::asphericLens::dzdrleft ( maths::Vector< double > P,
double lambda )

◆ dzdrright()

double GOAT::raytracing::asphericLens::dzdrright ( maths::Vector< double > P,
double lambda )

◆ initQuad()

void GOAT::raytracing::asphericLens::initQuad ( )
inlinevirtual

not yet implemented

Implements GOAT::raytracing::ObjectShape.

Definition at line 60 of file asphericLens.h.

◆ isInside()

bool GOAT::raytracing::asphericLens::isInside ( const maths::Vector< double > & p)
virtual

checks if point P is inside the object

Implements GOAT::raytracing::ObjectShape.

◆ next()

bool GOAT::raytracing::asphericLens::next ( const maths::Vector< double > & p,
const maths::Vector< double > & k,
maths::Vector< double > & pout )
virtual

searches for the next (nearest) intersection of a ray with the object, p: current position of the ray, k: direction of the ray, pout: position of the crossing point. Returns true, if a crossing point was found.

Implements GOAT::raytracing::ObjectShape.

◆ norm()

maths::Vector< double > GOAT::raytracing::asphericLens::norm ( const maths::Vector< double > & P)
virtual

surface normal at the point P

Implements GOAT::raytracing::ObjectShape.

◆ scale()

void GOAT::raytracing::asphericLens::scale ( double sf)

◆ setPos() [1/2]

void GOAT::raytracing::asphericLens::setPos ( double x,
double y,
double z )
inlinevirtual

not yet implemented

Implements GOAT::raytracing::ObjectShape.

Definition at line 63 of file asphericLens.h.

◆ setPos() [2/2]

void GOAT::raytracing::asphericLens::setPos ( maths::Vector< double > r)
inlinevirtual

not yet implemented

Implements GOAT::raytracing::ObjectShape.

Definition at line 62 of file asphericLens.h.

◆ setr0()

void GOAT::raytracing::asphericLens::setr0 ( double r0)
inlinevirtual

not yet implemented

Implements GOAT::raytracing::ObjectShape.

Definition at line 61 of file asphericLens.h.

◆ volume()

double GOAT::raytracing::asphericLens::volume ( )
virtual

not yet implemented

Implements GOAT::raytracing::ObjectShape.

◆ z()

double GOAT::raytracing::asphericLens::z ( double r,
asphericLensSide side )

◆ zleft()

double GOAT::raytracing::asphericLens::zleft ( maths::Vector< double > P,
double lambda )

◆ zright()

double GOAT::raytracing::asphericLens::zright ( maths::Vector< double > P,
double lambda )

Member Data Documentation

◆ currentnorm

maths::Vector<double> GOAT::raytracing::asphericLens::currentnorm

Definition at line 84 of file asphericLens.h.

◆ drdlambda

double GOAT::raytracing::asphericLens::drdlambda

Definition at line 82 of file asphericLens.h.

◆ k

maths::Vector<double> GOAT::raytracing::asphericLens::k

Definition at line 83 of file asphericLens.h.

◆ lensParms

asphericLensParms GOAT::raytracing::asphericLens::lensParms

Definition at line 70 of file asphericLens.h.

◆ P

maths::Vector<double> GOAT::raytracing::asphericLens::P

Definition at line 83 of file asphericLens.h.


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