Zernike Decomposition
[1]:
from optiland.samples.objectives import ReverseTelephoto
from optiland.wavefront import ZernikeOPD
[2]:
lens = ReverseTelephoto()
[3]:
lens.draw()
[3]:
(<Figure size 1000x400 with 1 Axes>, <Axes: xlabel='Z [mm]', ylabel='Y [mm]'>)
Options for Zernike types: ‘standard’, ‘fringe’, ‘noll’
[4]:
zernike_standard = ZernikeOPD(
lens,
field=(0, 1),
wavelength=4.2,
zernike_type="standard",
num_terms=37,
)
zernike_standard.view(projection="2d", num_points=512)
[4]:
(<Figure size 700x550 with 2 Axes>,
<Axes: title={'center': 'Zernike Standard Fit'}, xlabel='Pupil X', ylabel='Pupil Y'>)