fullseye

fraunhofer_pattern — OPTICS wave op

使い方

Far-field (Fraunhofer) diffraction intensity of an aperture.

In the far field the diffracted amplitude is the Fourier transform of the aperture transmittance, so the intensity is |FFT{aperture}|^2 (fftshifted, DC at the centre) normalised to a peak of exactly 1.0.

Returns a float64 image with the same shape as aperture.

The output plane is sampled differently from the input plane — this is the trap in every FFT diffraction routine. The observation-plane pitch is lambda*z/(N_pixels*input_pitch); with the defaults (0.55 um, 100 mm, 10 um) and a 64-pixel aperture that is 0.55*100000/(64*10) = 85.9 um per pixel. The value is not returned as an image cannot carry it; compute it from the formula when you need absolute positions.

A RuntimeWarning is emitted when the Fresnel number N_F = a^2/(lambda*z) (with a the aperture’s support radius) is not below 1 — i.e. when you are asking for a far-field pattern at a distance where the near field still dominates. The result is still returned, because the Fourier relation is exactly what was asked for; the warning says the physics, not the arithmetic, is out of range.

Ground truth it reproduces (measured): a rectangular slit w pixels wide in an N-pixel array puts its diffraction zeros exactly on the DFT bins k*N/w; a 4-pixel-wide slit in a 64-pixel array has exactly 0.0 at bins +/-16 and +/-32 from DC (the DFT of a boxcar vanishes there to the last bit, not merely to rounding); the pattern of a centred symmetric aperture is symmetric to 2.2e-16.

Raises ValueError: aperture is not 2-D / smaller than 2x2 / over the size cap / complex / masked / non-finite; a negative transmittance (that is not an aperture); an opaque aperture (everything zero — an opaque screen diffracts nothing and the normalisation would be 0/0); non-positive or non-finite wavelength_um / distance_mm / pixel_pitch_um.

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

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

詳しい使い方ガイド

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

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

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

pupil_psf · pupil_blur · psf_to_mtf · illumination_uniformity · render_through_lens · surface_defect · defocus_blur

同カテゴリ(wave)

airy_pattern · angular_spectrum_propagate · gaussian_beam · defocus_from_shift · pupil_psf · pupil_blur


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

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