prysm.thinlens

A collection of thin lens equations for system modeling.

prysm.thinlens.object_to_image_dist(efl, object_distance)

Compute the image distance from the object distance.

Parameters
  • efl (float) – focal length of the lens

  • object_distance (float or numpy.ndarray) – distance from the object to the front principal plane of the lens, negative for an object to the left of the lens

Returns

image distance. Distance from rear principal plane (assumed to be in contact with front principal plane) to image.

Return type

float

Notes

efl and object distance should be in the same units. Return value will be in the same units as the inputs.

prysm.thinlens.image_to_object_dist(efl, image_distance)

Compute the object distance from the image distance.

Parameters
  • efl (float) – focal length of the lens

  • object_distance (float or numpy.ndarray) – distance from the object to the front principal plane of the lens, positive for an object in front of a lens of positive focal length.

Notes

efl and image distance should be in the same units. Return value will be in the same units as the input.

prysm.thinlens.image_dist_epd_to_na(image_distance, epd)

Compute the NA from an image distance and entrance pupil diameter.

Parameters
  • image_distance (float) – distance from the image to the entrance pupil

  • epd (float) – diameter of the entrance pupil

Returns

numerical aperture. The NA of the system.

Return type

float

prysm.thinlens.image_dist_epd_to_fno(image_distance, epd)

Compute the f/# from an image distance and entrance pupil diameter.

Parameters
  • image_distance (float) – distance from the image to the entrance pupil

  • epd (float) – diameter of the entrance pupil

Returns

fno. The working f/# of the system.

Return type

float

prysm.thinlens.fno_to_na(fno)

Convert an fno to an NA.

Parameters

fno (float) – focal ratio

Returns

NA. The NA of the system.

Return type

float

prysm.thinlens.na_to_fno(na)

Convert an NA to an f/#.

Parameters

na (float) – numerical aperture

Returns

fno. The f/# of the system.

Return type

float

prysm.thinlens.object_dist_to_mag(efl, object_dist)

Compute the linear magnification from the object distance and focal length.

Parameters
  • efl (float) – focal length of the lens

  • object_dist (float) – object distance

Returns

linear magnification. Also known as the lateral magnification

Return type

float

prysm.thinlens.mag_to_object_dist(efl, mag)

Compute the object distance for a given focal length and magnification.

Parameters
  • efl (float) – focal length of the lens

  • mag (float) – signed magnification

Returns

object distance

Return type

float

prysm.thinlens.linear_to_long_mag(lateral_mag)

Compute the longitudinal (along optical axis) magnification from the lateral mag.

Parameters

lateral_mag (float) – linear magnification, from thin lens formulas

Returns

longitudinal magnification

Return type

float

prysm.thinlens.mag_to_fno(mag, infinite_fno, pupil_mag=1)

Compute the working f/# from the magnification and infinite f/#.

Parameters
  • mag (float or numpy.ndarray) – linear or lateral magnification

  • infinite_fno (float) – f/# as defined by EFL/EPD

  • pupil_mag (float) – pupil magnification

Returns

working f/number

Return type

float

prysm.thinlens.defocus_to_image_displacement(defocus, fno, wavelength, zernike=False, norm=False)

Compute image displacment from wavefront defocus expressed in waves 0-P to.

Parameters
  • defocus (float or numpy.ndarray) – wavefront defocus

  • fno (float) – f/# of the lens or system

  • wavelength (float) – wavelength of light, expressed in micron

  • zernike (bool) – zernike model of defocus (otherwise model is Seidel)

  • norm (bool) – if zernike model, term is rms normalized

Returns

image displacement. Motion of image in um caused by defocus OPD

Return type

float

prysm.thinlens.image_displacement_to_defocus(image_displacement, fno, wavelength, zernike=False, norm=False)

Compute the wavefront defocus from image shift, expressed in the same units as the shift.

Parameters
  • image_displacement (float or ~`numpy.ndarray`) – displacement of the image

  • fno (float) – f/# of the lens or system

  • wavelength (float) – wavelength of light, expressed in microns

  • zernike (bool) – return in Zernike notation

  • norm (bool) – subset of zernike – return rms normalized zernike

Returns

wavefront defocus

Return type

float

prysm.thinlens.twolens_efl(efl1, efl2, separation)

Use thick lens equations to compute the focal length for two elements separated by some distance.

Parameters
  • efl1 (float) – EFL of the first lens

  • efl2 (float) – EFL of the second lens

  • separation (float) – separation of the two lenses

Returns

focal length of the two lens system

Return type

float

prysm.thinlens.twolens_bfl(efl1, efl2, separation)

Use thick lens equations to compute the back focal length for two elements separated by some distance.

Parameters
  • efl1 (float) – EFL of the first lens

  • efl2 (float) – EFL of the second lens

  • separation (float) – separation of the two lenses.

Returns

back focal length of the two lens system.

Return type

float