fullseye

abcd_trace — OPTICS geometric op

使い方

Propagate one paraxial ray through an ABCD matrix.

Applies [y', theta'] = M @ [y, theta] with y in millimetres and theta in radians internally; the API speaks milliradians because a paraxial angle is small by definition and mrad keeps the numbers readable.

Returns a dict: height_mm and angle_mrad of the outgoing ray · determinant of M (= n_in/n_out; a value that is not 1 for a same-medium system means the matrix is wrong, so it is reported rather than assumed) · imaging — True when |B| <= 1e-12 * (1 + |A| + |C| + |D|), i.e. the output height does not depend on the input angle, which is the definition of a conjugate (image) plane.

Ground truth it reproduces exactly: free space of length d gives y' = y + d*theta and theta' = theta; a thin lens leaves y untouched and bends the ray by -y/f; a ray parallel to the axis (angle_mrad = 0) entering a lens crosses the axis exactly one focal length behind it.

Raises ValueError: matrix is not (2, 2), is complex or masked, holds NaN/Inf, or has a determinant of 0 (a system that collapses every ray to a point is not a ray-transfer matrix); non-finite height_mm / angle_mrad; a result that overflowed float64.

ファミリ共通の入力契約(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)

thin_lens · abcd_matrix · 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.