Skip to content

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

Concrete 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!

source

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
julia
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 if nothing (default)

source

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
julia
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 if nothing (default)

source

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   (i.e. opens towards ) and convex for  . This equation is the ISO 10110-12 aspheric surface description without the power series [23, 24] and also used for the description of aspherical lenses within this package (albeit in a different form, see Aspherical lenses). The -factor determines the surface shape. Depending on its value, the surface type will be either one of the ones listed in the table below.

surface family
  hyperboloid
  paraboloid
  prolate ellipsoid
 sphere
 oblate ellipsoid

For    the parent conic is only defined for  ; for    every aperture is admissible.

Ellipsoidal and hyperbolic mirrors are parameterized by the object/image conjugate distances (measured from the parent vertex, positive towards ) rather than directly:

Same-sign give a real second focus (ellipsoid,   ); opposite signs give a virtual second focus (hyperboloid,   ).

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
julia
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 > 0 concave, R < 0 convex

  • k: Conic constant; k = -1 is a paraboloid (see ParabolicMirror), k = 0 a sphere (see SphericalMirror)

  • diameter: Mirror aperture diameter [m]

  • thickness: Substrate thickness [m], calculated automatically to ensure solid backing if nothing (default)

  • hole_diameter: Diameter of the central through-hole [m], no hole if nothing (default). Must satisfy 0 < hole_diameter < diameter.

source
BeamletOptics.OffAxisConicMirror Method
julia
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 > 0 is concave (opens towards -y), R < 0 is convex (opens towards +y). Must be non-zero.

  • k: Conic constant. k = -1 is a paraboloid, k = 0 a sphere, -1 < k <= 0 a prolate ellipsoid, k > 0 an oblate ellipsoid, k < -1 a 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 if nothing (default)

  • hole_diameter: Diameter of the central through-hole [m], no hole if nothing (default). Must satisfy 0 < 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.

source

Parabolic Mirrors ​

Parabolic mirrors are the    special case of the conic mirrors above, with  . In contrast to 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    opens towards , such that the focus lies at  . Optionally, a central through-hole can be added via hole_diameter, e.g. to model a Cassegrain primary.

BeamletOptics.ParabolicMirror Method
julia
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 if nothing (default)

  • hole_diameter: Diameter of the central through-hole [m], no hole if nothing (default). Must satisfy 0 < hole_diameter < diameter.

source

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 and off-axis distance , parameterized by the Reflected Focal Length () and deflection angle (default 90°):

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
julia
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 if nothing (default)

  • hole_diameter: Diameter of the through-hole [m], no hole if nothing (default). Must satisfy 0 < 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) with angle in degrees, passing through the aperture center (0, 0, 0) (e.g. for collinear pump-probe beams).

source

Ellipsoidal mirrors ​

Ellipsoidal mirrors cover the    range of the conic mirrors above, i.e. prolate ellipsoids with the sphere ( ) as limiting case. Both conjugate foci are real and lie in front of the mirror, such that a point source placed in one focus is imaged into the other one without spherical aberration. Typical applications are refocusing/relay mirrors, e.g. to couple a source into a fiber, or the concave secondary of a Gregorian telescope. 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
julia
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 sign

  • diameter: Mirror aperture diameter [m]

  • thickness: Substrate thickness [m], calculated automatically to ensure solid backing if nothing (default)

  • hole_diameter: Diameter of the central through-hole [m], no hole if nothing (default). Must satisfy 0 < hole_diameter < diameter.

source
BeamletOptics.OffAxisEllipsoidalMirror Method
julia
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 if nothing (default)

  • hole_diameter: Diameter of the central through-hole [m], no hole if nothing (default). Must satisfy 0 < 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.

source

Hyperbolic mirrors ​

Hyperbolic mirrors cover the    range of the conic mirrors above. Exactly one of the two conjugate foci is real, the other one is virtual and lies behind the mirror, i.e. and have opposite signs. A beam converging towards the virtual focus is therefore reflected into the real focus without spherical aberration. The classic application is the convex secondary of a Cassegrain telescope, which reimages the prime focus of a parabolic primary (see Parabolic Mirrors). Since this prime focus lies behind the secondary, it is passed as a negative . As before, 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
julia
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 signs

  • diameter: Mirror aperture diameter [m]

  • thickness: Substrate thickness [m], calculated automatically to ensure solid backing if nothing (default)

  • hole_diameter: Diameter of the central through-hole [m], no hole if nothing (default). Must satisfy 0 < hole_diameter < diameter.

source
BeamletOptics.OffAxisHyperbolicMirror Method
julia
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 if nothing (default)

  • hole_diameter: Diameter of the central through-hole [m], no hole if nothing (default). Must satisfy 0 < 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.

source