Angle vs. Image Height - Through Pupil
Represents an analysis of incident angle vs. image height by varying through all pupil coordinates (Px, Py) for a given image field point.
[1]:
import optiland.backend as be
from optiland.analysis import PupilIncidentAngleVsHeight
from optiland.optic import Optic
[2]:
lens = Optic(name="Simple Optic")
lens.wavelengths.add(value=0.63, is_primary=True)
lens.surfaces.add(index=0, thickness=153.2, is_stop=True, comment="scan mirror")
lens.surfaces.add(
index=1, thickness=5, radius=be.inf, material="N-SF11", comment="PCX front surface"
)
lens.surfaces.add(
index=2, thickness=157.8, radius=-120, is_stop=True, comment="PCX back surface"
)
lens.surfaces.add(index=3, comment="image plane")
lens.set_aperture(aperture_type="EPD", value=38)
lens.fields.set_type(field_type="angle")
lens.fields.add(y=0)
lens.info()
fig = lens.draw(num_rays=5)
╒════╤═════════════════╤═══════════════════╤══════════╤═════════════╤════════════╤═════════╤═════════════════╕
│ │ Type │ Comment │ Radius │ Thickness │ Material │ Conic │ Semi-aperture │
╞════╪═════════════════╪═══════════════════╪══════════╪═════════════╪════════════╪═════════╪═════════════════╡
│ 0 │ Planar │ scan mirror │ inf │ 153.2 │ Air │ 0 │ 0 │
│ 1 │ Planar │ PCX front surface │ inf │ 5 │ N-SF11 │ 0 │ 18.6577 │
│ 2 │ Stop - Standard │ PCX back surface │ -120 │ 157.8 │ Air │ 0 │ 19 │
│ 3 │ Planar │ image plane │ inf │ nan │ Air │ 0 │ 18.7561 │
╘════╧═════════════════╧═══════════════════╧══════════╧═════════════╧════════════╧═════════╧═════════════════╛
[3]:
angle_vs_height = PupilIncidentAngleVsHeight(lens)
angle_vs_height.view()