Elements

Elements or Vector{<:Elements} can be also compare with ≈.

ABCDMatrixOptics.ThinLensType
ThinLens(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.ThickLensType
ThickLens(;  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 surface
• R2 radius of curvature of second surface
• t: thickness of lens
• n_lens=1.5 refractive index of lens
• n1=1: refractive index of the medium of the incoming side
• n2=1: refractive index of the medium of the exiting side
ABCDMatrixOptics.InterfaceType
Interface(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.dzFunction
dz(element::Element)

Returns how much an element changes the optical distance z.

Base.isapproxFunction
Base.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.

Note

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.