Cassegrain Telescope

[1]:
import numpy as np

from optiland import optic, physical_apertures
[ ]:
class Cassegrain(optic.Optic):
    """Cassegrain Telescope

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

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

        # add physical aperture in primary mirror
        aperture = physical_apertures.RadialAperture(r_max=np.inf, r_min=2)

        self.surfaces.add(index=0, thickness=np.inf)
        self.surfaces.add(
            index=1,
            thickness=-37.8137,
            radius=-102.3640,
            material="mirror",
            conic=-1.075613,
            aperture=aperture,
            is_stop=True,
        )
        self.surfaces.add(
            index=2,
            thickness=48.8327,
            radius=-35.3325,
            material="mirror",
            conic=-3.376732,
        )
        self.surfaces.add(index=3, thickness=0.25, radius=23.5556, material="N-SK16")
        self.surfaces.add(index=4, thickness=0.36, radius=97.0299, material="LF5")
        self.surfaces.add(index=5, thickness=0.3492, radius=-8.4651)
        self.surfaces.add(index=6, thickness=0.25, radius=-6.0339, material="LLF1")
        self.surfaces.add(index=7, thickness=0.5, radius=2.3002, material="LF5")
        self.surfaces.add(index=8, thickness=5.4581, radius=8.5504)
        self.surfaces.add(index=9)

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

        self.fields.set_type(field_type="angle")
        self.fields.add(y=0)
        self.fields.add(y=0.0976)
        self.fields.add(y=0.1951)

        self.wavelengths.add(value=0.55, is_primary=True)
[3]:
telescope = Cassegrain()
telescope.draw(num_rays=4)
../../_images/gallery_reflective_Cassegrain_3_0.png