visualization.system.mirror#

Mirror Visualization Module

This module contains the 2D and 3D mirror visualization classes.

Kramer Harrison, 2024

Classes

Mirror2D(surface, ray_extent, *[, backing_sign])

Draw a reflective surface and its optional mechanical backing in 2D.

Mirror3D(surface, extent, *[, backing_sign])

Render a reflective face and its optional mechanical substrate in 3D.

class Mirror2D(surface: Any, ray_extent: float, *, backing_sign: float = 1.0)[source]#

Draw a reflective surface and its optional mechanical backing in 2D.

plot(ax: Axes, theme: Any = None, projection: str = 'YZ') → dict[Artist, Mirror2D][source]#

Plot the mirror cross-section and a flat back at its center thickness.

Parameters:
  • ax – Matplotlib axes receiving the mirror artists.

  • theme – Optional visualization theme.

  • projection – Projection plane, either YZ, XZ, or XY.

Returns:

Mapping from artists to this mirror component.

class Mirror3D(surface: Any, extent: float, *, backing_sign: float = 1.0)[source]#

Render a reflective face and its optional mechanical substrate in 3D.

Parameters:
  • surface – Reflective optical surface.

  • extent – Local radial drawing extent in millimeters.

  • backing_sign – Sign of incoming travel along the local surface axis.

get_surface(theme=None)#

Retrieves the surface actor based on the symmetry of the surface geometry.

If the surface geometry is symmetric, it retrieves a symmetric surface actor. Otherwise, it retrieves an asymmetric surface actor.

Returns:

The surface actor, either symmetric or asymmetric, based on

the surface geometry.

Return type:

actor

plot(renderer: vtk.vtkRenderer, theme: Any = None, **kwargs: Any) → None[source]#

Add the optical face and, when requested, its back and side walls.

Parameters:
  • renderer – VTK renderer receiving the mirror actors.

  • theme – Optional visualization theme.

  • **kwargs – Ignored projection settings from the system plotter.

property supports_revolution#

Whether an uninterrupted circular contour represents this aperture.

Annular clipping creates discontinuous contours; a clipped grid retains the central opening without introducing NaN vertices into VTK.