Endoscope

[1]:
import numpy as np

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

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

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

        self.surfaces.add(index=0, radius=np.inf, thickness=np.inf, material="water")
        self.surfaces.add(index=1, radius=np.inf, thickness=0.0310, material="N-BK7")
        self.surfaces.add(index=2, radius=0.0284, thickness=0.0334)
        self.surfaces.add(index=3, radius=np.inf, thickness=0.008, is_stop=True)
        self.surfaces.add(index=4, radius=-0.3742, thickness=0.1139, material="N-LAK12")
        self.surfaces.add(index=5, radius=-0.0965, thickness=0.005)
        self.surfaces.add(index=6, radius=0.7827, thickness=0.1050, material="SK16")
        self.surfaces.add(index=7, radius=-0.0842, thickness=0.0321, material="SF4")
        self.surfaces.add(index=8, radius=-0.3720, thickness=0.4515)
        self.surfaces.add(index=9, radius=0.5158, thickness=0.8304, material="N-LAF34")
        self.surfaces.add(index=10, radius=-0.3939, thickness=0.1884, material="SF4")
        self.surfaces.add(index=11, radius=-0.8018, thickness=0.2429)
        self.surfaces.add(index=12, radius=0.5380, thickness=0.0969, material="SF4")
        self.surfaces.add(index=13, radius=0.2073, thickness=0.7971, material="N-LAF34")
        self.surfaces.add(index=14, radius=-0.3509, thickness=0.3442)
        self.surfaces.add(index=15, radius=0.5158, thickness=0.8304, material="N-LAF34")
        self.surfaces.add(index=16, radius=-0.3939, thickness=0.1884, material="SF4")
        self.surfaces.add(index=17, radius=-0.8018, thickness=0.2429)
        self.surfaces.add(index=18, radius=0.5380, thickness=0.0969, material="SF4")
        self.surfaces.add(index=19, radius=0.2073, thickness=0.7971, material="N-LAF34")
        self.surfaces.add(index=20, radius=-0.3509, thickness=0.4087)
        self.surfaces.add(index=21, radius=0.5158, thickness=0.8304, material="N-LAF34")
        self.surfaces.add(index=22, radius=-0.3939, thickness=0.1884, material="SF4")
        self.surfaces.add(index=23, radius=-0.8018, thickness=0.2429)
        self.surfaces.add(index=24, radius=0.5380, thickness=0.0969, material="SF4")
        self.surfaces.add(index=25, radius=0.2073, thickness=0.7971, material="N-LAF34")
        self.surfaces.add(index=26, radius=-0.3509, thickness=0.2002)
        self.surfaces.add(index=27)

        self.set_aperture(aperture_type="imageFNO", value=3.0)

        self.fields.set_type(field_type="angle")
        self.fields.add(0.0)
        self.fields.add(13)
        self.fields.add(25)

        self.wavelengths.add(value=0.4861327)
        self.wavelengths.add(value=0.5875618, is_primary=True)
        self.wavelengths.add(value=0.6562725)
[3]:
lens = Endoscope()
lens.draw(figsize=(20, 1))
Warning: No exact matches found for material water. Material may be invalid.
../../_images/gallery_specialized_lenses_endoscope_3_1.png