fullseye

thin_lens — OPTICS geometric op

使い方

Gaussian thin-lens imaging: where the image lands and how big it is.

Solves 1/f = 1/s_o + 1/s_i in the real-is-positive convention: object_mm (s_o) is the lens-to-object distance and must be positive; the returned image_mm (s_i) is positive for a real image on the far side of the lens and negative for a virtual image on the object side (which is what a diverging lens, focal_mm < 0, always produces).

Returns a dict: image_mm · magnification m = -s_i/s_o (negative = inverted, the normal case for a real image; |m| < 1 is a demagnified, i.e. machine-vision, geometry) · object_mm and focal_mm echoed back so a table of results is self-describing · working_distance_mm = s_o + s_i for a real image, the object-to-sensor span a machine builder actually has to fit.

Ground truth it reproduces exactly (verified in tests/test_optics.py): f = 50, s_o = 200 gives s_i = 200/3 = 66.6667 and m = -1/3; at s_o = 2f the image is at 2f with m = -1 (the 1:1 conjugate); the reciprocal identity 1/f - 1/s_o - 1/s_i is 0 to machine precision over the whole tested range.

Raises ValueError: focal_mm == 0 (not a lens), non-positive or non-finite object_mm, and — explicitly, instead of returning infobject_mm == focal_mm, where the object sits at the front focal point and images at infinity (a collimator, not an imaging conjugate).

Paraxial and thin: no aberration, no principal-plane separation. HALCON has no equivalent (its camera model starts after the lens, at the projection).

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

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

詳しい使い方ガイド

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

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

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

abcd_matrix · wavefront_stats · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd · spot_diagram

同カテゴリ(geometric)

abcd_matrix · abcd_trace · depth_of_field · relative_illumination


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

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