Approximated Off-axis Parabola via Chebyshev Surface

[1]:
import numpy as np

from optiland import optic
[2]:
# Initialize an optic system
system = optic.Optic()

# add surfaces to the system
system.surfaces.add(index=0, thickness=np.inf)  # object at infinity

coefficients = np.array(
    [
        [
            1.24694339e-05,
            4.67020030e-03,
            3.62355202e-03,
        ],  # optimized chebyshev coefficients
        [5.46006887e-11, -1.03813427e-07, -8.01598028e-08],
        [-5.81261746e-03, -5.21668069e-03, 4.53883501e-03],
    ],
)

# add mirror surface
system.surfaces.add(
    index=1,
    thickness=-85.64,
    radius=-185,
    conic=0,
    material="mirror",
    is_stop=True,
    dy=36,
    surface_type="chebyshev",
    norm_x=100,
    norm_y=100,
    coefficients=coefficients,
)

system.surfaces.add(index=2)  # image plane

# add aperture
system.set_aperture(aperture_type="EPD", value=33)

# add field
system.fields.set_type(field_type="angle")
system.fields.add(y=0)

# add wavelength
system.wavelengths.add(value=0.587, is_primary=True)
[3]:
system.draw(num_rays=10)
../../_images/gallery_freeform_off_axis_parabola_3_0.png