fullseye

relative_illumination — OPTICS geometric op

使い方

Natural vignetting: relative image-plane illuminance versus field angle.

The cosine-fourth law E(theta)/E(0) = cos(theta)^4 — one cosine from the inverse-square increase in distance to the off-axis point (twice), one from the tilt of the exit pupil as seen from there, one from the tilt of the image plane. Sampled uniformly in angle from 0 to half_angle_deg.

Returns an (samples, 2) float64 pairs array: column 0 the field angle in degrees, column 1 the relative illuminance in [0, 1].

exponent exists because the fourth power is the ideal symmetric case: a lens with pupil aberration, or a telecentric design, or one with a tilted entrance pupil, falls off closer to cos^3 (or is deliberately corrected flatter still). Setting the exponent is how you say which lens you have — it is not a fudge factor to be tuned after the fact.

Ground truth it reproduces exactly: cos^4(45 deg) = 1/4 and cos^4(60 deg) = 1/16, both to machine precision; the curve is 1.0 on axis and monotonically decreasing.

Raises ValueError: half_angle_deg outside (0, 90) — at 90 degrees the illuminance is exactly 0 and the “relative” curve carries no information; samples outside [2, MAX_GRID]; a negative or non-finite exponent.

This is the natural falloff only. Mechanical vignetting (a stop clipping the oblique beam) is a separate, lens-specific effect that no closed form covers — measure it with a flat field.

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(pairs を入力に取れる)

同カテゴリ(geometric)

thin_lens · abcd_matrix · abcd_trace · depth_of_field


Provenance: optics.py — OPTICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.