F-theta Scan Lens

[1]:
import numpy as np

from optiland import optic
[ ]:
class FTheta(optic.Optic):
    """F-theta lens

    Milton Laikin, Lens Design, 4th ed., CRC Press, 2007, p. 251
    """

    def __init__(self):
        super().__init__()

        self.surfaces.add(index=0, thickness=np.inf, radius=np.inf)
        self.surfaces.add(index=1, thickness=5.0, is_stop=True)
        self.surfaces.add(index=2, radius=-2.2136, thickness=0.3, material="SF57")
        self.surfaces.add(index=3, radius=-2.6575, thickness=0.02)
        self.surfaces.add(index=4, radius=-5.5022, thickness=0.5292, material="SF57")
        self.surfaces.add(index=5, radius=-3.8129, thickness=4.2927)
        self.surfaces.add(index=6, radius=7.9951, thickness=0.59, material="SF57")
        self.surfaces.add(index=7, radius=8.3651, thickness=18.0014)
        self.surfaces.add(index=8)

        # add aperture
        self.set_aperture(aperture_type="EPD", value=1.0)

        # add field
        self.fields.set_type(field_type="angle")
        self.fields.add(y=0)
        self.fields.add(y=5.0)
        self.fields.add(y=10.0)
        self.fields.add(y=15.0)

        # add wavelength
        self.wavelengths.add(value=0.633, is_primary=True)
[3]:
lens = FTheta()
lens.draw()
../../_images/gallery_specialized_lenses_f_theta_lens_3_0.png