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