Telecentric f/2.8 Lens

[4]:
import numpy as np
from optiland import optic
[2]:
class Telecentric(optic.Optic):
    """Telecentric f/2.8 lens

    Milton Laikin, Lens Design, 3rd ed., Marcel Dekker, 2001, p. 267
    """

    def __init__(self):
        super().__init__()
        self.surfaces.add(index=0, thickness=np.inf, radius=np.inf)
        self.surfaces.add(index=1, radius=-47.6338, thickness=0.2638, material="N-FK5")
        self.surfaces.add(index=2, radius=2.1315, thickness=0.1461)
        # the stop is positioned right after the first lens to ensure that the chief rays are parallel to the optical axis in the image plane
        self.surfaces.add(index=3, thickness=2.1542, is_stop="True")
        self.surfaces.add(index=4, radius=26.39803, thickness=0.3942, material="N-LAK8")
        self.surfaces.add(index=5, radius=-6.0310, thickness=1.7429)
        self.surfaces.add(index=6, radius=5.6125, thickness=0.6345, material="N-LAK8")
        self.surfaces.add(index=7, radius=-13.2187, thickness=0.2750)
        self.surfaces.add(index=8, radius=13.7865, thickness=0.3389, material="SF1")
        self.surfaces.add(index=9, radius=3.0669, thickness=0.3894)
        self.surfaces.add(index=10, radius=11.7626, thickness=0.2807, material="SF1")
        self.surfaces.add(index=11, radius=3.0473, thickness=0.8596, material="N-LAK12")
        self.surfaces.add(index=12, radius=-5.79673, thickness=5.2507)
        self.surfaces.add(index=13)

        # 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)

        # add wavelength
        self.wavelengths.add(value=0.55, is_primary=True)
[3]:
lens = Telecentric()
_ = lens.draw()
../../_images/gallery_specialized_lenses_telecentric_lens_3_0.png