|
GOAT (Geometrical optics application tool) 0.1
|
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>
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 |
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.
| Enumerator | |
|---|---|
| left | |
| right | |
| lateral | |
Definition at line 69 of file asphericLens.h.
| 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 ) |
| void GOAT::raytracing::asphericLens::binRead | ( | ) |
|
inlinevirtual |
not yet implemented
Implements GOAT::raytracing::ObjectShape.
Definition at line 59 of file asphericLens.h.
| void GOAT::raytracing::asphericLens::binWrite | ( | ) |
|
inlinevirtual |
not yet implemented
Implements GOAT::raytracing::ObjectShape.
Definition at line 58 of file asphericLens.h.
|
inlinevirtual |
not yet implemented
Implements GOAT::raytracing::ObjectShape.
Definition at line 64 of file asphericLens.h.
| double GOAT::raytracing::asphericLens::dzdrleft | ( | maths::Vector< double > | P, |
| double | lambda ) |
| double GOAT::raytracing::asphericLens::dzdrright | ( | maths::Vector< double > | P, |
| double | lambda ) |
|
inlinevirtual |
not yet implemented
Implements GOAT::raytracing::ObjectShape.
Definition at line 60 of file asphericLens.h.
|
virtual |
checks if point P is inside the object
Implements GOAT::raytracing::ObjectShape.
|
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.
|
virtual |
surface normal at the point P
Implements GOAT::raytracing::ObjectShape.
| void GOAT::raytracing::asphericLens::scale | ( | double | sf | ) |
|
inlinevirtual |
not yet implemented
Implements GOAT::raytracing::ObjectShape.
Definition at line 63 of file asphericLens.h.
|
inlinevirtual |
not yet implemented
Implements GOAT::raytracing::ObjectShape.
Definition at line 62 of file asphericLens.h.
|
inlinevirtual |
not yet implemented
Implements GOAT::raytracing::ObjectShape.
Definition at line 61 of file asphericLens.h.
|
virtual |
not yet implemented
Implements GOAT::raytracing::ObjectShape.
| double GOAT::raytracing::asphericLens::z | ( | double | r, |
| asphericLensSide | side ) |
| double GOAT::raytracing::asphericLens::zleft | ( | maths::Vector< double > | P, |
| double | lambda ) |
| double GOAT::raytracing::asphericLens::zright | ( | maths::Vector< double > | P, |
| double | lambda ) |
| maths::Vector<double> GOAT::raytracing::asphericLens::currentnorm |
Definition at line 84 of file asphericLens.h.
| double GOAT::raytracing::asphericLens::drdlambda |
Definition at line 82 of file asphericLens.h.
| maths::Vector<double> GOAT::raytracing::asphericLens::k |
Definition at line 83 of file asphericLens.h.
| asphericLensParms GOAT::raytracing::asphericLens::lensParms |
Definition at line 70 of file asphericLens.h.
| maths::Vector<double> GOAT::raytracing::asphericLens::P |
Definition at line 83 of file asphericLens.h.