Basic Functions
ABCDMatrixOptics.propagate — Functionpropagate(e::Union{Element, Vector{<:Element}}, b)Propagate a beam b either by a single element e::Element or Vector{<:Element}.
Return is the final beam. Also available as e * b.
Example
julia> beam = FreeSpace(10) * GeometricBeam(w=10.0, k=1.0)
GeometricBeam{Float64}(20.0, 1.0, 10.0)
julia> beam = [ThinLens(10), FreeSpace(10)] * GeometricBeam(w=10.0, k=0.0)
GeometricBeam{Float64}(0.0, -1.0, 10.0)
julia> beam.w ≈ 0
trueABCDMatrixOptics.trace — Functiontrace(elems::Vector{<:Element}, b0::AbstractBeam)Trace a beam b0 through a vector of elements elems. All intermediate states of the beam will be recorded.
Return is a Vector of states where the last entry is the final beam. Final beam is equivalent to propagate(elems, b0).
Example
julia> trace([ThinLens(10), FreeSpace(10)], GeometricBeam(w=10.0, k=0.0))
3-element Vector{GeometricBeam{Float64}}:
GeometricBeam{Float64}(10.0, 0.0, 0.0)
GeometricBeam{Float64}(10.0, -1.0, 0.0)
GeometricBeam{Float64}(0.0, -1.0, 10.0)ABCDMatrixOptics.transfer_matrix — Functiontransfer_matrix(element::Element)Returns the Ray Transfer (ABCD) matrix associated with the given, optical element.
transfer_matrix(elements)Returns the Ray Transfer (ABCD) matrix associated with an optical system described by a collection (e.g. a vector or iteration) of optical elements.