Elements
Elements or Vector{<:Elements}
can be also compare with ≈
.
ABCDMatrixOptics.FreeSpace
— TypeFreeSpace(dz)
Construct a free space propagation over distance dz
.
ABCDMatrixOptics.ThinLens
— TypeThinLens(f)
Creates a thin lens with focal length f
.
ThinLens(R1, R2, n_lens, n)
Creates a thin lens defined by the first radius of curvature R1
, the second R2
. The lens refractive index is n_lens
and the outer refractive index is n
.
ABCDMatrixOptics.ThickLens
— TypeThickLens(; R1, R2, t, n_lens=1.5 n1=1.0, n2=1.0)
Construct a thick lens with the keywords:
R1
radius of curvature of first surfaceR2
radius of curvature of second surfacet
: thickness of lensn_lens=1.5
refractive index of lensn1=1
: refractive index of the medium of the incoming siden2=1
: refractive index of the medium of the exiting side
ABCDMatrixOptics.Mirror
— TypeMirror(R=Inf)
Mirror with radius of curvature R
. Per default Inf
, so a flat mirror.
ABCDMatrixOptics.Interface
— TypeInterface(n1, n2)
Creates a flat interface with refractive index n1
on the entering side and n2
on the new medium.
Interface(; n1, n2, R=Inf)
Creates a curved interface with radius R
and with refractive index n1
on the entering side and n2
on the new medium.
ABCDMatrixOptics.dz
— Functiondz(element::Element)
Returns how much an element changes the optical distance z
.
Base.isapprox
— FunctionBase.isapprox(a::Vector{<:Element}, b::Vector{<:Element})
Compare two vectors of elements using Base.isapprox for each element's ray matrix (ABCD entries). Does consequently not consider one discretization of element FreeSpace different from another, or one realization of an imaging system from another as long as both achieve (within tolerances) the same imaging.
The atol
(absolute tolerance) parameter can be used but is typically nonsensical as it will be used for each of the ray matrix entries ABCD which usually differ vastly in magnitude.