pyoptics.sketch¶
Schematic drawings of optical layouts with matplotlib: thin lenses, stops, prisms, mirrors, detectors and paraxial rays, and ready-made sketches of microscopes, interferometers, wavefront sensors and other setups of the example notebooks.
The drawings are 2D meridional sections with the optical axis along the horizontal coordinate z and the height y vertical, in arbitrary layout units. Rays are traced paraxially through thin lenses (paraxial_ray()), so conjugate planes, foci and parallel beams in the sketches are where they belong; the proportions are chosen for clarity, not taken from real instruments.
Primitives (all draw onto a given matplotlib Axes):
lens(), stop(), plane(), prism(), mirror(), detector(), point_source(), polarizer(), label(): optical elements and annotations.
paraxial_ray(), draw_ray(): trace a ray through a sequence of thin lenses (in either direction along z) and draw it.
Microscope sketches used by the example notebooks 52 to 55:
koehler_microscope(): a transmitted light microscope with Köhler illumination, the illumination and image forming ray paths and the two sets of conjugate planes.
abbe_4f(): Abbe’s picture of image formation, diffraction orders of a grating focused in the back focal plane, optionally filtered.
phase_contrast_microscope(): condenser annulus and phase ring, direct and diffracted light.
dic_microscope(): polarizer, Nomarski prisms, sheared beams, analyzer.
confocal_microscope(): laser scanning confocal microscope with dichroic mirror and pinhole, in-focus and out-of-focus emission.
fpm_microscope(): LED array microscope for Fourier ptychography with a bright field and a dark field LED.
Primitives for folded layouts: rotated_lens(), rotated_detector(), beam_splitter(), laser(), sphere(), lenslet_array(), band() (a beam between two edge rays), arrow(), wavefront().
Setup sketches for the other example notebooks:
fold_mirror(): coated 45° fold mirror with s and p (notebook 14).
twyman_green(): Twyman-Green interferometer with a PZT phase shifter (notebook 23).
fizeau_interferometer(): Fizeau interferometer with a transmission sphere, confocal and cat’s eye positions (notebook 24).
shack_hartmann_sensor(), phase_diversity_setup(): two ways to measure a lens (notebook 25).
holography_setup(): off-axis digital holography, lensless or with a microscope (notebooks 26 and 27).
krf_illuminator(): the KrF illuminator with its pupil and field planes (notebook 42).
spatial_filter(): beam expander with a pinhole that removes a ghost (notebook 56).
Importing this module does not change matplotlib’s settings; matplotlib is imported when a function is called.
References¶
A. Köhler, “Ein neues Beleuchtungsverfahren für mikrophotographische Zwecke”, Z. wiss. Mikrosk. 10, 433-440 (1893).
M. Born and E. Wolf, “Principles of Optics”, 7th ed., Cambridge University Press (1999), section 8.6 (phase contrast).
D. Malacara (ed.), “Optical Shop Testing”, 3rd ed., Wiley (2007), chapters 2 (Fizeau) and 14 (phase shifting).
J. Mertz, “Introduction to Optical Microscopy”, 2nd ed., Cambridge University Press (2019).
D. B. Murphy and M. W. Davidson, “Fundamentals of Light Microscopy and Electronic Imaging”, 2nd ed., Wiley-Blackwell (2012).
Functions
Abbe's picture: a grating diffracts a plane wave into orders that the objective focuses into points of its back focal plane; the image is the interference of the orders that pass. |
|
Draw an arrow from (z0, y0) to (z1, y1) with an optional label at text_pos (default: the middle). |
|
Fill a beam between two edge rays (polylines). |
|
Draw a 50/50 beam splitter at (z, y), a plate or a cube, at 45°. |
|
Sketch of a laser scanning confocal fluorescence microscope. |
|
Draw a detector (camera or photomultiplier) face at z. |
|
Sketch of a Nomarski DIC microscope. |
|
Trace a paraxial ray with paraxial_ray() and draw it. |
|
Sketch of a Fizeau interferometer with a transmission sphere measuring the radius of a lens surface. |
|
Sketch of a coated 45° fold mirror in a laser head, with the s and p directions. |
|
Sketch of an LED array microscope for Fourier ptychography. |
|
Sketch of an off-axis digital holography setup (Mach-Zehnder). |
|
Sketch of a transmitted light microscope with Köhler illumination. |
|
Sketch of the KrF illuminator of notebook 42, unfolded and not to scale. |
|
Write a label at (z, y). |
|
Draw a laser head as a box whose output end is at (z, y). |
|
Draw a thin biconvex lens of half height h at the position z. |
|
Draw a lenslet array of n lenslets between -h and h at z. |
|
Draw a flat (or dichroic) mirror centred at (z, y), tilted by angle (radians against the y axis). |
|
Trace a paraxial ray through thin lenses. |
|
Sketch of a Zernike phase contrast microscope. |
|
Sketch of a phase diversity measurement of a lens: the same lens and beam as in shack_hartmann_sensor(), with a camera on a focus stage that records the PSF in a few planes around the focus. |
|
Draw a plane (e.g. a focal or conjugate plane) as a dotted line. |
|
Draw a point source (lamp filament, LED, fluorophore) at (z, y). |
|
Draw a linear polarizer (a thin plate with its transmission direction). |
|
Draw a Wollaston/Nomarski prism: a rectangle split along its diagonal. |
|
Draw a detector face centred at (z, y), rotated by rotate degrees (90: facing a beam that travels along -y or +y). |
|
Draw a thin biconvex lens centred at (z, y) with its axis rotated by rotate degrees against z (90: the lens sits across a vertical beam). |
|
Sketch of a Shack-Hartmann measurement of a lens. |
|
Sketch of a spatial filter: a 3x beam expander with a pinhole in the common focus (the setup of notebook 56). |
|
Draw a spherical surface (a mirror or a lens surface) in section. |
|
Draw an aperture stop (diaphragm) at z between -h and h. |
|
Sketch of a Twyman-Green interferometer for phase shifting and Fourier fringe analysis. |
|
Draw a wavefront across a beam: a straight line (amplitude 0) or a wavy one. |
- pyoptics.sketch.lens(ax, z, h, thickness=None, color='#cfe3f3', edgecolor='#4a6f8a', text=None, text_y=None, fontsize=9, zorder=3)[source]¶
Draw a thin biconvex lens of half height h at the position z.
- Parameters:
- axmatplotlib Axes
- znumber
Axial position.
- hnumber
Half height (semi diameter).
- thicknessnumber, optional
Centre thickness of the drawn shape. Defaults to 0.18*h.
- color, edgecolorcolors, optional
- textstr, optional
Label below the lens.
- text_ynumber, optional
Height of the label. Defaults to -1.15*h.
- fontsizenumber, optional
- zordernumber, optional
- Returns:
- patchmatplotlib Polygon
- pyoptics.sketch.stop(ax, z, h, openings=((0.0, 0.5),), width=None, color='0.25', text=None, text_y=None, fontsize=9, zorder=4)[source]¶
Draw an aperture stop (diaphragm) at z between -h and h.
- Parameters:
- axmatplotlib Axes
- znumber
Axial position.
- hnumber
Half height of the stop.
- openingssequence of (r_inner, r_outer), optional
Transparent zones as radii (abs(y) between r_inner and r_outer, on both sides of the axis). ((0, r),) is an iris of radius r, ((r1, r2),) an annulus. Defaults to ((0, 0.5),).
- widthnumber, optional
Drawn thickness. Defaults to 0.04*h.
- colorcolor, optional
- textstr, optional
Label below the stop.
- text_ynumber, optional
- fontsizenumber, optional
- zordernumber, optional
- pyoptics.sketch.plane(ax, z, h, text=None, color='0.55', ls=':', text_y=None, fontsize=9, **kwargs)[source]¶
Draw a plane (e.g. a focal or conjugate plane) as a dotted line.
- Parameters:
- axmatplotlib Axes
- znumber
- hnumber
Half height.
- textstr, optional
Label above the line.
- color, lsoptional
- text_ynumber, optional
Label height. Defaults to 1.08*h.
- fontsizenumber, optional
- **kwargs
Passed to ax.plot().
- pyoptics.sketch.prism(ax, z, h, width=None, text=None, text_y=None, fontsize=9, zorder=3)[source]¶
Draw a Wollaston/Nomarski prism: a rectangle split along its diagonal.
- Parameters:
- axmatplotlib Axes
- znumber
- hnumber
Half height.
- widthnumber, optional
Defaults to 0.3*h.
- textstr, optional
- text_ynumber, optional
- fontsizenumber, optional
- zordernumber, optional
- pyoptics.sketch.mirror(ax, z, y, length, angle, color='0.3', lw=3, text=None, text_dy=None, fontsize=9, dichroic=False)[source]¶
Draw a flat (or dichroic) mirror centred at (z, y), tilted by angle (radians against the y axis).
- Parameters:
- axmatplotlib Axes
- z, ynumbers
Centre.
- lengthnumber
- anglenumber
Tilt against the vertical, radians (pi/4: a 45° fold).
- colorcolor, optional
- lwnumber, optional
- textstr, optional
- text_dynumber, optional
Vertical offset of the label. Defaults to -0.7*length.
- fontsizenumber, optional
- dichroicbool, optional
Draw a coated beam splitter (light blue) instead of a mirror.
- pyoptics.sketch.detector(ax, z, h, text=None, width=None, color='0.35', text_y=None, fontsize=9)[source]¶
Draw a detector (camera or photomultiplier) face at z.
- Parameters:
- axmatplotlib Axes
- znumber
- hnumber
Half height of the sensitive area.
- textstr, optional
- widthnumber, optional
Defaults to 0.12*h.
- colorcolor, optional
- text_ynumber, optional
- fontsizenumber, optional
- pyoptics.sketch.point_source(ax, z, y, color='#e0a000', size=60, text=None, text_dy=-0.25, fontsize=9, marker='*')[source]¶
Draw a point source (lamp filament, LED, fluorophore) at (z, y).
- Parameters:
- axmatplotlib Axes
- z, ynumbers
- colorcolor, optional
- sizenumber, optional
Marker size.
- textstr, optional
- text_dynumber, optional
- fontsizenumber, optional
- markerstr, optional
- pyoptics.sketch.polarizer(ax, z, h, direction='vertical', text=None, text_y=None, fontsize=9)[source]¶
Draw a linear polarizer (a thin plate with its transmission direction).
- Parameters:
- axmatplotlib Axes
- znumber
- hnumber
Half height.
- direction{“vertical”, “out of plane”, “45”}, optional
Transmission direction symbol: a double arrow in the plane of the drawing, a dot (normal to it) or a cross for 45°.
- textstr, optional
- text_ynumber, optional
- fontsizenumber, optional
- pyoptics.sketch.label(ax, z, y, text, fontsize=9, ha='center', va='center', color='0.15', **kwargs)[source]¶
Write a label at (z, y).
- pyoptics.sketch.paraxial_ray(lenses, z0, y0, u0, z_end)[source]¶
Trace a paraxial ray through thin lenses.
The ray starts at (z0, y0) with the slope u0 = dy/dz and runs towards z_end (in +z or -z direction); it is refracted by every lens (z_L, f) between z0 and z_end, in the order met. A converging lens (f > 0) bends the ray towards the axis in either direction of travel.
- Parameters:
- lensessequence of (z_L, f)
Positions and focal lengths of thin lenses.
- z0, y0numbers
Start point.
- u0number
Start slope dy/dz.
- z_endnumber
End position.
- Returns:
- z, y1d arrays
Vertices of the ray (start, lenses, end).
- pyoptics.sketch.draw_ray(ax, lenses, z0, y0, u0, z_end, color='#2a7ab9', lw=1.2, ls='-', alpha=0.9, arrow=True, zorder=2)[source]¶
Trace a paraxial ray with paraxial_ray() and draw it.
- Parameters:
- axmatplotlib Axes
- lenses, z0, y0, u0, z_end
See paraxial_ray().
- color, lw, ls, alphaoptional
Line style.
- arrowbool, optional
Draw a small arrow head on the first segment to show the direction.
- zordernumber, optional
- Returns:
- z, y1d arrays
Vertices of the ray.
- pyoptics.sketch.koehler_microscope(ax, rays='both', title=None)[source]¶
Sketch of a transmitted light microscope with Köhler illumination.
Lamp, collector, field diaphragm, condenser aperture diaphragm (in the front focal plane of the condenser), condenser, specimen, objective with its back focal plane (pupil), tube lens and camera. The illumination rays (from a point of the lamp filament) are focused in the aperture diaphragm and the back focal plane and pass the specimen as a plane wave; the image forming rays (from a point of the specimen) are focused on the camera. Aperture planes (filament, condenser aperture, back focal plane) and field planes (field diaphragm, specimen, camera) are labelled.
- Parameters:
- axmatplotlib Axes
- rays{“both”, “illumination”, “imaging”}, optional
Which ray sets to draw. Defaults to “both”.
- titlestr, optional
- pyoptics.sketch.abbe_4f(ax, period_orders=2, blocked=(), title=None, show_mask=True)[source]¶
Abbe’s picture: a grating diffracts a plane wave into orders that the objective focuses into points of its back focal plane; the image is the interference of the orders that pass.
- Parameters:
- axmatplotlib Axes
- period_ordersint, optional
Highest order m drawn (orders -m to m). Defaults to 2.
- blockedsequence of int, optional
Orders blocked by a mask in the back focal plane (drawn dashed after the mask). Defaults to none.
- titlestr, optional
- show_maskbool, optional
Draw the mask pieces for the blocked orders. Defaults to True.
- pyoptics.sketch.phase_contrast_microscope(ax, title=None)[source]¶
Sketch of a Zernike phase contrast microscope.
An annulus in the front focal plane of the condenser illuminates the specimen with a cone of plane waves. The direct light (solid) is focused by the objective onto the phase ring in its back focal plane, an image of the annulus; light diffracted by the specimen (dashed) spreads over the pupil and mostly misses the ring.
- Parameters:
- axmatplotlib Axes
- titlestr, optional
- pyoptics.sketch.dic_microscope(ax, shear=0.25, title=None)[source]¶
Sketch of a Nomarski DIC microscope.
Polarizer, Nomarski prism in the front focal plane of the condenser (splits each ray into two orthogonal polarizations with a small angle), condenser (turns the angle into a lateral shear in the specimen), objective, second Nomarski prism in its back focal plane (recombines the beams; its lateral position sets the bias), analyzer and camera. The shear is exaggerated.
- Parameters:
- axmatplotlib Axes
- shearnumber, optional
Drawn shear in layout units. Defaults to 0.25.
- titlestr, optional
- pyoptics.sketch.confocal_microscope(ax, out_of_focus=0.45, title=None)[source]¶
Sketch of a laser scanning confocal fluorescence microscope.
The laser beam is expanded, reflected by a dichroic mirror and focused by the objective into the specimen (the scan mirrors that move the focus are omitted). Fluorescence from the focus (green) returns through the objective, passes the dichroic mirror and is focused by the tube lens onto the pinhole in front of the detector. Fluorescence from a plane deeper in the specimen (red, dashed) is focused before the pinhole and mostly blocked by it.
- Parameters:
- axmatplotlib Axes
- out_of_focusnumber, optional
Depth of the out-of-focus emitter below the focus (layout units). Defaults to 0.45.
- titlestr, optional
- pyoptics.sketch.fpm_microscope(ax, title=None)[source]¶
Sketch of an LED array microscope for Fourier ptychography.
A matrix of LEDs below the specimen replaces the condenser; one LED at a time illuminates the specimen with a plane wave from its direction. The low NA objective accepts the direct light of the central LEDs (bright field, orange) but not that of outer LEDs (dark field, red), whose direct light misses the pupil; only the light diffracted by the specimen to large angles reaches the camera then.
- Parameters:
- axmatplotlib Axes
- titlestr, optional
- pyoptics.sketch.rotated_lens(ax, z, y, h, rotate=90, thickness=None, text=None, text_offset=None, fontsize=9, color='#cfe3f3', edgecolor='#4a6f8a', zorder=3)[source]¶
Draw a thin biconvex lens centred at (z, y) with its axis rotated by rotate degrees against z (90: the lens sits across a vertical beam).
- Parameters:
- axmatplotlib Axes
- z, ynumbers
Centre.
- hnumber
Half height.
- rotatenumber, optional
Rotation of the lens axis in degrees. Defaults to 90.
- thicknessnumber, optional
Defaults to 0.18*h.
- textstr, optional
Label beside the lens.
- text_offsetnumber, optional
Distance of the label from the centre. Defaults to 1.15*h.
- fontsizenumber, optional
- color, edgecolorcolors, optional
- zordernumber, optional
- pyoptics.sketch.rotated_detector(ax, z, y, h, rotate=90, width=None, text=None, text_offset=None, fontsize=9, color='0.35')[source]¶
Draw a detector face centred at (z, y), rotated by rotate degrees (90: facing a beam that travels along -y or +y).
- Parameters:
- axmatplotlib Axes
- z, ynumbers
- hnumber
Half size of the sensitive area.
- rotatenumber, optional
Defaults to 90.
- widthnumber, optional
Drawn thickness. Defaults to 0.12*h.
- textstr, optional
- text_offsetnumber, optional
- fontsizenumber, optional
- colorcolor, optional
- pyoptics.sketch.beam_splitter(ax, z, y, size, orientation='/', cube=False, color='#9fc5e0', text=None, text_dy=None, fontsize=9)[source]¶
Draw a 50/50 beam splitter at (z, y), a plate or a cube, at 45°.
- Parameters:
- axmatplotlib Axes
- z, ynumbers
Centre.
- sizenumber
Length of the splitting face (plate) or edge length (cube).
- orientation{“/”, “\”}, optional
Direction of the splitting face. “/” reflects light travelling along +z into +y, “\” reflects it into -y.
- cubebool, optional
Draw a cube instead of a plate.
- colorcolor, optional
- textstr, optional
- text_dynumber, optional
Vertical offset of the label. Defaults to -0.75*size.
- fontsizenumber, optional
- pyoptics.sketch.laser(ax, z, y, length=1.0, height=0.3, rotate=0, text='laser', fontsize=9, color='0.3')[source]¶
Draw a laser head as a box whose output end is at (z, y).
- Parameters:
- axmatplotlib Axes
- z, ynumbers
Position of the output aperture.
- length, heightnumbers, optional
Size of the box.
- rotatenumber, optional
Direction of the emitted beam in degrees against +z. Defaults to 0.
- textstr, optional
Label inside the box.
- fontsizenumber, optional
- colorcolor, optional
- pyoptics.sketch.sphere(ax, z_vertex, y, R, h, color='0.25', lw=2.0, ls='-', glass=None, text=None, text_y=None, fontsize=9, zorder=4)[source]¶
Draw a spherical surface (a mirror or a lens surface) in section.
- Parameters:
- axmatplotlib Axes
- z_vertex, ynumbers
Vertex position; y is the height of the axis.
- Rnumber
Radius of curvature, positive for a centre at z_vertex + R (a convex surface facing -z).
- hnumber
Half height (semi diameter), smaller than abs(R).
- color, lw, lsoptional
Line style of the surface.
- glassnumber, optional
If given, the thickness of a glass body behind the surface (towards +z), drawn with a flat back.
- textstr, optional
- text_ynumber, optional
- fontsizenumber, optional
- zordernumber, optional
- Returns:
- z, yy1d arrays
The drawn surface.
- pyoptics.sketch.lenslet_array(ax, z, h, n, focal_length=None, text=None, text_y=None, fontsize=9)[source]¶
Draw a lenslet array of n lenslets between -h and h at z.
- Parameters:
- axmatplotlib Axes
- znumber
- hnumber
Half height of the array.
- nint
Number of lenslets.
- focal_lengthnumber, optional
Not drawn; accepted for symmetry with the sketches that use it.
- textstr, optional
- text_ynumber, optional
- fontsizenumber, optional
- Returns:
- centres1d array
Heights of the lenslet centres.
- pyoptics.sketch.band(ax, z_top, y_top, z_bottom, y_bottom, color='#d6604d', alpha=0.22, edges=True, lw=0.8, zorder=1)[source]¶
Fill a beam between two edge rays (polylines).
- Parameters:
- axmatplotlib Axes
- z_top, y_top, z_bottom, y_bottom1d arrays
Vertices of the two edge rays, in the same direction of travel.
- colorcolor, optional
- alphanumber, optional
Opacity of the fill.
- edgesbool, optional
Draw the edge rays as lines too.
- lwnumber, optional
- zordernumber, optional
- pyoptics.sketch.arrow(ax, z0, y0, z1, y1, color='0.2', lw=1.0, style='-|>', text=None, text_pos=None, fontsize=8, ha='center', va='center', mutation_scale=9)[source]¶
Draw an arrow from (z0, y0) to (z1, y1) with an optional label at text_pos (default: the middle).
- pyoptics.sketch.wavefront(ax, z, y, h, amplitude=0.0, vertical=True, color='0.2', lw=1.3, n_waves=1.5, zorder=5)[source]¶
Draw a wavefront across a beam: a straight line (amplitude 0) or a wavy one.
- Parameters:
- axmatplotlib Axes
- z, ynumbers
Centre.
- hnumber
Half width of the beam.
- amplitudenumber, optional
Deviation from a plane wavefront.
- verticalbool, optional
True for a beam along z (the wavefront is vertical), False for a beam along y.
- color, lwoptional
- n_wavesnumber, optional
Number of undulations over the beam.
- zordernumber, optional
- pyoptics.sketch.twyman_green(ax, title=None)[source]¶
Sketch of a Twyman-Green interferometer for phase shifting and Fourier fringe analysis.
A HeNe laser beam is expanded (with a pinhole as spatial filter) and split by a beam splitter. The reference arm ends on a flat mirror that a piezo actuator (PZT) moves by fractions of a wavelength: the phase shift delta of phase shifting interferometry. Tilting the same mirror instead gives the carrier fringes of the single frame Fourier method. The test arm carries the wavefront error W of the surface under test (drawn exaggerated). Both returning beams are recombined by the splitter, and a telescope images the test surface onto the camera.
- Parameters:
- axmatplotlib Axes
- titlestr, optional
- pyoptics.sketch.fizeau_interferometer(ax, cat_eye=True, title=None)[source]¶
Sketch of a Fizeau interferometer with a transmission sphere measuring the radius of a lens surface.
The laser light, focused into a pinhole, diverges through a beam splitter and is collimated. The transmission sphere (TS) turns the plane wave into a spherical wave; its last surface, concentric with the focus, reflects part of the light back as the reference wave. The test surface on a length measuring stage reflects the test wave. In the confocal position (solid) the centre of curvature of the test surface lies in the focus, in the cat’s eye position (dashed) its vertex; the stage travel between the two nulls is the radius R. The returning waves are focused through the beam splitter into a small stop and imaged onto the camera.
- Parameters:
- axmatplotlib Axes
- cat_eyebool, optional
Draw the cat’s eye position of the test surface as well. Defaults to True.
- titlestr, optional
- pyoptics.sketch.shack_hartmann_sensor(ax, title=None)[source]¶
Sketch of a Shack-Hartmann measurement of a lens.
A collimated beam passes the lens under test (a plano-convex singlet, plane side first, with spherical aberration: the rim rays focus short). An aplanatic collimator re-collimates the light behind the focus; the lenslet array cuts the beam into patches and focuses each onto the camera. A spot moves from its reference position (the lenslet axis) by the lenslet focal length times the local wavefront slope (exaggerated).
- Parameters:
- axmatplotlib Axes
- titlestr, optional
- pyoptics.sketch.phase_diversity_setup(ax, planes=(-1.0, 0.0, 1.0), title=None)[source]¶
Sketch of a phase diversity measurement of a lens: the same lens and beam as in shack_hartmann_sensor(), with a camera on a focus stage that records the PSF in a few planes around the focus.
- Parameters:
- axmatplotlib Axes
- planessequence of numbers, optional
Camera positions relative to the best focus, in units of the drawn stage travel. Defaults to (-1, 0, 1).
- titlestr, optional
- pyoptics.sketch.holography_setup(ax, microscope=False, title=None)[source]¶
Sketch of an off-axis digital holography setup (Mach-Zehnder).
The expanded laser beam is split into an object arm, which passes the sample, and a reference arm. A second beam splitter recombines them on the camera, the reference tilted by the angle theta that puts the carrier fringes into the hologram. Without a microscope (notebook 26) the camera records the object wave a distance d behind the sample, with a microscope (notebook 27) objective and tube lens image the sample onto the camera (with an optional defocus).
- Parameters:
- axmatplotlib Axes
- microscopebool, optional
Draw an objective and a tube lens in the object arm. Defaults to False.
- titlestr, optional
- pyoptics.sketch.fold_mirror(ax, title=None)[source]¶
Sketch of a coated 45° fold mirror in a laser head, with the s and p directions.
A collimated, circularly polarized beam meets the mirror at 45° and is folded towards the focusing objective. The plane of incidence is the plane of the drawing: p lies in it (arrows), s is normal to it (dots). The coating, a stack of high and low index layers, reflects s and p with different phases (retardance), which turns circular polarization elliptical.
- Parameters:
- axmatplotlib Axes
- titlestr, optional
- pyoptics.sketch.krf_illuminator(ax, title=None)[source]¶
Sketch of the KrF illuminator of notebook 42, unfolded and not to scale.
Secondary source (laser, beam shaper and diffuser), zoom-axicon objective (its directions become positions in the pupil plane 30, where the size of the illuminated disk is sigma and the axicons make it a ring), coupling lens (pupil plane 30 to the rod entrance), the glass rod (a kaleidoscope that makes the field uniform) with the masking blades at its exit, and the REMA objective that images the rod exit onto the reticle with its diaphragm in a pupil plane. Pupil planes (P) and field planes (F) are marked. The rays are paraxial, every group drawn as one thin lens.
- Parameters:
- axmatplotlib Axes
- titlestr, optional
- pyoptics.sketch.spatial_filter(ax, pinhole=True, title=None)[source]¶
Sketch of a spatial filter: a 3x beam expander with a pinhole in the common focus (the setup of notebook 56).
The clean part of the input beam (orange) is focused onto the axis and passes the pinhole. Light that travels in other directions, from a ghost reflection or from phase ripple (red), is focused beside the axis and blocked. The second lens collimates the filtered beam.
- Parameters:
- axmatplotlib Axes
- pinholebool, optional
Draw the pinhole (otherwise the ghost passes and crosses the output beam). Defaults to True.
- titlestr, optional