Mirrors
A common optical element with a straight-forward optical interaction. This kind of component is in general defined as a BeamletOptics.AbstractReflectiveOptic. For a basic Ray the interaction is simply defined by the BeamletOptics.reflection3d function. A more complex algorithm is required when when a PolarizedRay interacts with a reflecting surface. The polarization calculus that is performed is explained in the Polarized rays section. Below, some of the concrete implemented mirror types are shown. In general, the Mirror is used as a concrete type to represent an arbitrary reflecting shape.
BeamletOptics.Mirror Type
Mirror{S <: AbstractShape} <: AbstractReflectiveOpticConcrete implementation of a perfect mirror (R = 1) with arbitrary shape.
Reflecting surfaces
It is important to consider that all surfaces of this mirror type are reflecting!
The following constructors can be used to generate flat reflecting shapes. Additional types are explained below.
Plano Mirrors
A category of mirrors with a flat reflecting surface. A round version of this mirror can be easily generated using the RoundPlanoMirror or RightAnglePrismMirror constructors, which return a Mirror. An optional central through-hole can be added to RoundPlanoMirror via the hole_diameter keyword argument:
BeamletOptics.RoundPlanoMirror Method
RoundPlanoMirror(diameter, thickness; hole_diameter=nothing)Constructs a round plano Mirror with a flat reflecting surface and perfect reflectivity (R = 1). The reflecting surface is modeled using a BeamletOptics.PlanoSurfaceSDF.
Inputs
diameter: mirror diameter [m]thickness: mirror substrate thickness [m]hole_diameter: diameter of the central through-hole [m], no hole ifnothing(default)
Below, a trivial example of a beam path propagating through a system of Ø1"-mirrors mounted in KM100CP/M kinematic mounts is shown (e.g. PF10-03-P01). Note that the mounts are modeled as NonInteractableObjects.

Spherical Mirrors
The SphericalMirror represents an ideal optical element with a spherical concave reflective surface, commonly used for non-dispersive focusing applications. Its geometry is modeled using a combination of a concave spherical surface and a plano substrate, represented internally by a BeamletOptics.UnionSDF (refer also to the SDF-based spherical lenses section). An optional central through-hole can be added via the hole_diameter keyword argument.

The following constructor allows the spawning of spherical mirrors.
BeamletOptics.SphericalMirror Method
SphericalMirror(radius, thickness, diameter; hole_diameter=nothing)Constructs a concave spherical Mirror with perfect reflectivity (R = 1). The reflecting surface is modeled as a BeamletOptics.UnionSDF of a concave spherical surface and a plano substrate, combining BeamletOptics.ConcaveSphericalSurfaceSDF and BeamletOptics.PlanoSurfaceSDF.
Inputs
radius: spherical surface radius of curvature [m]thickness: substrate thickness [m]diameter: mirror outer diameter [m]hole_diameter: diameter of the central through-hole [m], no hole ifnothing(default)
Conic Mirrors
All rotationally-symmetric conic mirrors (paraboloids, ellipsoids and hyperboloids) share the same underlying surface of revolution, i.e. the BeamletOptics.ConicSDF which is defined by the governing equation
where the surface is concave for
| surface family | |
|---|---|
| hyperboloid | |
| paraboloid | |
| prolate ellipsoid | |
| sphere | |
| oblate ellipsoid |
For

Ellipsoidal and hyperbolic mirrors are parameterized by the object/image conjugate distances
Same-sign
The following constructors allow the spawning of on-axis and off-axis conic, ellipsoidal and hyperbolic mirrors. All conic-family constructors (on- and off-axis) accept an optional hole_diameter keyword argument to subtract an axial cylindrical through-hole from the substrate (e.g. for Cassegrain, Gregorian, Ritchey-Chrétien, or Dall-Kirkham telescope primaries). Additionally, OffAxisParabolicMirror accepts the hole_axis keyword to specify bore orientation. Parabolic mirrors are covered in the Parabolic Mirrors section below.
BeamletOptics.ConicMirror Method
ConicMirror(R, k, diameter; thickness=nothing, hole_diameter=nothing)Constructs an on-axis segment of a general conic-of-revolution Mirror (sphere, paraboloid, ellipsoid or hyperboloid). The vertex lies at the origin and the mirror opens towards the negative y-axis for R > 0. See OffAxisConicMirror for the off-axis case and the full sign/domain conventions.
If hole_diameter is given, a cylindrical bore centred on the optical axis (the local +y-axis) is subtracted from the substrate, piercing it completely (e.g. Cassegrain, Ritchey-Chrétien, or Dall-Kirkham primary).
Inputs
R: Radius of curvature at the vertex [m];R > 0concave,R < 0convexk: Conic constant;k = -1is a paraboloid (seeParabolicMirror),k = 0a sphere (seeSphericalMirror)diameter: Mirror aperture diameter [m]thickness: Substrate thickness [m], calculated automatically to ensure solid backing ifnothing(default)hole_diameter: Diameter of the central through-hole [m], no hole ifnothing(default). Must satisfy0 < hole_diameter < diameter.
BeamletOptics.OffAxisConicMirror Method
OffAxisConicMirror(R, k, x_off, diameter; thickness=nothing, hole_diameter=nothing)Constructs an off-axis segment of a general conic-of-revolution Mirror (sphere, paraboloid, ellipsoid or hyperboloid), offset by x_off from the parent vertex. See ConicSDF for the frame convention (origin, parent axis, opening direction, vertex location).
Inputs
R: Radius of curvature at the parent vertex [m];R > 0is concave (opens towards-y),R < 0is convex (opens towards+y). Must be non-zero.k: Conic constant.k = -1is a paraboloid,k = 0a sphere,-1 < k <= 0a prolate ellipsoid,k > 0an oblate ellipsoid,k < -1a hyperboloid.x_off: Off-axis distance from the parent vertex to the aperture center [m]diameter: Mirror aperture diameter [m]thickness: Substrate thickness [m], calculated automatically to ensure solid backing ifnothing(default)hole_diameter: Diameter of the central through-hole [m], no hole ifnothing(default). Must satisfy0 < hole_diameter < diameter. The bore is parallel to the local +y axis through the aperture centre.
For k > -1 the aperture must stay within the domain of the parent conic (abs(x_off) + diameter/2 < abs(R)/sqrt(1+k)), otherwise an ArgumentError is thrown; for k <= -1 there is no such limit. See also ConicMirror for the on-axis case.
Note that hole_axis (collimated/focused bore) exists only for OffAxisParabolicMirror.
Parabolic Mirrors
Parabolic mirrors are the SphericalMirror, a paraboloid focuses a collimated beam that is parallel to its optical axis into a single point without spherical aberration. BMO provides an on-axis and an off-axis variant.
On-axis parabolic mirrors
The ParabolicMirror represents an on-axis parabolic mirror. Its surface hole_diameter, e.g. to model a Cassegrain primary.

BeamletOptics.ParabolicMirror Method
ParabolicMirror(f, diameter; thickness=nothing, hole_diameter=nothing)Constructs an on-axis parabolic Mirror with focal length f. The vertex of the concave reflecting surface lies at the origin, the mirror opens towards the negative y-axis and its focus lies at (0, -f, 0). The shape is an OffAxisParaboloidSDF without off-axis offset.
If hole_diameter is given, a cylindrical bore centred on the optical axis (the local +y-axis) is subtracted from the substrate, piercing it completely (a Cassegrain primary).
Reflective bore wall
Rays that graze into the hole will reflect off its wall rather than being absorbed.
Inputs
f: Focal length [m]diameter: Mirror aperture diameter [m]thickness: Substrate thickness [m], rim sag + 10 mm ifnothing(default)hole_diameter: Diameter of the central through-hole [m], no hole ifnothing(default). Must satisfy0 < hole_diameter < diameter.
Off-axis parabolic mirrors
The OffAxisParabolicMirror represents an off-axis parabolic (OAP) mirror used for achromatic focusing and beam deflection without introducing spherical aberration.
Its geometry is constructed from a parent paraboloid with focal length
Through-holes (Thorlabs POH style)
An optional through-hole can be specified via the hole_diameter keyword argument. The orientation of the bore is controlled by hole_axis:
:collimated(default): A cylindrical bore parallel to the incident collimated beam (local-axis / substrate normal). :focused: A cylindrical bore oriented towards the focal point , enabling collinear pump-probe or THz transmission through the mirror substrate directly onto the focus.

BeamletOptics.OffAxisParabolicMirror Method
OffAxisParabolicMirror(rfl, diameter; angle=90, thickness=nothing, hole_diameter=nothing, hole_axis=:collimated)Constructs an Off-Axis Parabolic (OAP) Mirror from:
Inputs
rfl: Reflected Focal Length (distance from aperture center to focus) [m]diameter: Mirror aperture diameter [m]angle: Deflection angle in degrees (default: 90°)thickness: Substrate thickness [m], calculated automatically to ensure solid backing ifnothing(default)hole_diameter: Diameter of the through-hole [m], no hole ifnothing(default). Must satisfy0 < hole_diameter < diameter.hole_axis: Orientation of the through-hole. Options: -:collimated(default): parallel to the collimated beam (local y-axis / substrate normal), centered at the aperture center(0, 0, 0). -:focused: angled towards the parent paraboloid focus(-x_off, x_off^2/(4f) - f, 0)in the segment frame, equivalently(-rfl*sind(angle), -rfl*cosd(angle), 0)withanglein degrees, passing through the aperture center(0, 0, 0)(e.g. for collinear pump-probe beams).
Ellipsoidal mirrors
Ellipsoidal mirrors cover the EllipsoidalMirror places both foci on its optical axis, while the OffAxisEllipsoidalMirror uses an off-axis segment of the parent ellipsoid in order to separate the reflected from the incoming beam.
Below, a fan of rays is emitted from the far focus of an EllipsoidalMirror (left). After the reflection, all rays are focused into the near focus of the mirror.

BeamletOptics.EllipsoidalMirror Method
EllipsoidalMirror(s, s′, diameter; thickness=nothing, hole_diameter=nothing)Constructs an on-axis segment of an ellipsoidal Mirror whose two real conjugate foci lie at (0, -s, 0) and (0, -s′, 0); the vertex lies at the origin. See OffAxisEllipsoidalMirror for the off-axis case and the sign convention for s, s′.
If hole_diameter is given, a cylindrical bore centred on the optical axis (the local +y-axis) is subtracted from the substrate, piercing it completely (e.g. Dall-Kirkham primary).
Inputs
s,s′: Conjugate object/image distances from the vertex [m], same signdiameter: Mirror aperture diameter [m]thickness: Substrate thickness [m], calculated automatically to ensure solid backing ifnothing(default)hole_diameter: Diameter of the central through-hole [m], no hole ifnothing(default). Must satisfy0 < hole_diameter < diameter.
BeamletOptics.OffAxisEllipsoidalMirror Method
OffAxisEllipsoidalMirror(s, s′, x_off, diameter; thickness=nothing, hole_diameter=nothing)Constructs an off-axis segment of an ellipsoidal Mirror whose two real conjugate foci lie at object/image distances s, s′ from the parent vertex, offset by x_off. Both foci lie on the same side (the -y, i.e. reflecting, side) of the parent vertex for positive s, s′.
Inputs
s,s′: Conjugate object/image distances from the parent vertex [m], measured positive towards-y(in front of the mirror). Must have the same sign.x_off: Off-axis distance from the parent vertex to the aperture center [m]diameter: Mirror aperture diameter [m]thickness: Substrate thickness [m], calculated automatically to ensure solid backing ifnothing(default)hole_diameter: Diameter of the central through-hole [m], no hole ifnothing(default). Must satisfy0 < hole_diameter < diameter. The bore is parallel to the local +y axis through the aperture centre.
The vertex radius of curvature and conic constant are derived via R = 2ss′/(s+s′), k = -((s′-s)/(s′+s))^2. See also EllipsoidalMirror for the on-axis case.
Note that hole_axis (collimated/focused bore) exists only for OffAxisParabolicMirror.
Hyperbolic mirrors
Hyperbolic mirrors cover the HyperbolicMirror is the on-axis variant and the OffAxisHyperbolicMirror the off-axis segment of the parent hyperboloid.
Below, a classical Cassegrain telescope is shown. A collimated beam (left) is focused by a ParabolicMirror with a central bore towards its prime focus. Before reaching it, the rays are intercepted by a convex HyperbolicMirror, which reimages the prime focus through the bore into the final focus behind the primary (black).

BeamletOptics.HyperbolicMirror Method
HyperbolicMirror(s, s′, diameter; thickness=nothing, hole_diameter=nothing)Constructs an on-axis segment of a hyperboloidal Mirror (e.g. a Cassegrain/Gregory secondary, or a Ritchey-Chrétien primary) whose conjugate foci lie at (0, -s, 0) and (0, -s′, 0); the vertex lies at the origin. See OffAxisHyperbolicMirror for the off-axis case and the sign convention.
If hole_diameter is given, a cylindrical bore centred on the optical axis (the local +y-axis) is subtracted from the substrate, piercing it completely (e.g. Ritchey-Chrétien primary).
Cassegrain secondary
The secondary of a Cassegrain/Gregory telescope sees the prime focus behind itself, so pass it as a negative s.
Inputs
s,s′: Conjugate object/image distances from the vertex [m], opposite signsdiameter: Mirror aperture diameter [m]thickness: Substrate thickness [m], calculated automatically to ensure solid backing ifnothing(default)hole_diameter: Diameter of the central through-hole [m], no hole ifnothing(default). Must satisfy0 < hole_diameter < diameter.
BeamletOptics.OffAxisHyperbolicMirror Method
OffAxisHyperbolicMirror(s, s′, x_off, diameter; thickness=nothing, hole_diameter=nothing)Constructs an off-axis segment of a hyperboloidal Mirror whose conjugate foci lie at object/image distances s, s′ from the parent vertex, offset by x_off. Exactly one focus is virtual, i.e. s and s′ have opposite signs.
Inputs
s,s′: Conjugate object/image distances from the parent vertex [m], measured positive towards-y(real focus, in front of the mirror) and negative towards+y(virtual focus, behind the mirror). Must have opposite signs.x_off: Off-axis distance from the parent vertex to the aperture center [m]diameter: Mirror aperture diameter [m]thickness: Substrate thickness [m], calculated automatically to ensure solid backing ifnothing(default)hole_diameter: Diameter of the central through-hole [m], no hole ifnothing(default). Must satisfy0 < hole_diameter < diameter. The bore is parallel to the local +y axis through the aperture centre.
Cassegrain secondary
The secondary of a Cassegrain/Gregory telescope sees the prime focus behind itself, so pass it as a negative s.
The vertex radius of curvature and conic constant are derived via R = 2ss′/(s+s′), k = -((s′-s)/(s′+s))^2. See also HyperbolicMirror for the on-axis case.
Note that hole_axis (collimated/focused bore) exists only for OffAxisParabolicMirror.