Ultra-Wide-Angle Lens (120° FOV)

[1]:
import optiland.backend as be
from optiland import optic
[2]:
class ProjectionLens120FOV(optic.Optic):
    """A 120-degree FOV projection lens design.

    Reference: Milton Laikin, Lens Design, 4th ed., CRC Press, 2007, p. 110.
    """

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

        self.surfaces.add(index=0, radius=be.inf, thickness=be.inf)
        self.surfaces.add(index=1, radius=28.2482, thickness=0.5000, material="N-SK4")
        self.surfaces.add(index=2, radius=2.2027, thickness=1.4379)
        self.surfaces.add(index=3, radius=2.7819, thickness=1.1174, material="SF1")
        self.surfaces.add(index=4, radius=-10.4886, thickness=0.3022, material="N-SK4")
        self.surfaces.add(index=5, radius=1.2417, thickness=0.7247)
        self.surfaces.add(index=6, radius=-2.8768, thickness=0.5088, material="SF1")
        self.surfaces.add(index=7, radius=-2.0989, thickness=0.4998, material="N-SK4")
        self.surfaces.add(index=8, radius=-4.2448, thickness=0.0150)
        self.surfaces.add(index=9, radius=8.4162, thickness=1.1279, material="N-SK4")
        self.surfaces.add(index=10, radius=-1.6294, thickness=0.2486, material="SF1")
        self.surfaces.add(index=11, radius=-4.5056, thickness=0.5412)
        self.surfaces.add(index=12, radius=be.inf, thickness=0.0200, is_stop=True)
        self.surfaces.add(index=13, radius=be.inf, thickness=0.1689, material="N-SK4")
        self.surfaces.add(index=14, radius=-3.8691, thickness=0.1065)
        self.surfaces.add(index=15, radius=-6.6827, thickness=0.2007, material="N-SK4")
        self.surfaces.add(index=16, radius=-2.2167, thickness=0.2822)
        self.surfaces.add(index=17, radius=-1.6444, thickness=0.1827, material="SF1")
        self.surfaces.add(index=18, radius=-3.3466, thickness=0.0149)
        self.surfaces.add(index=19, radius=-36.4599, thickness=0.5235, material="SF1")
        self.surfaces.add(index=20, radius=5.3765, thickness=0.0373)
        self.surfaces.add(index=21, radius=6.4204, thickness=0.6243, material="N-SK4")
        self.surfaces.add(index=22, radius=-2.7537, thickness=0.0150)
        self.surfaces.add(index=23, radius=5.1876, thickness=0.8475, material="N-SK4")
        self.surfaces.add(index=24, radius=be.inf, thickness=2.0000)
        self.surfaces.add(index=25, radius=be.inf, thickness=0.0)

        self.set_aperture("imageFNO", 2.8)

        self.fields.set_type("angle")
        self.fields.add(y=0)
        self.fields.add(y=42.0)
        self.fields.add(y=60.0)

        self.wavelengths.add(value=0.4861)
        self.wavelengths.add(value=0.5876, is_primary=True)
        self.wavelengths.add(value=0.6563)

        self.set_ray_aiming("robust", cache=True)
[3]:
lens = ProjectionLens120FOV()
[4]:
_ = lens.draw()
../../_images/gallery_specialized_lenses_projection_120fov_4_0.png