v0.24.0 — Laser speckle + the coffee-cup caustic
v0.24.0 — Phenomena closed out: laser speckle + the coffee-cup caustic, and a bypassed-optic warning
Two new off-trace phenomenon producers close the emergence catalog — laser speckle and the coffee-cup
caustic — each derived from first principles and checked against its exact textbook statistics/geometry.
Plus a diagnostic the owner's own eye surfaced: the engine now warns when an optic is knocked off the
beam. All off-trace; the live trace stays byte-identical — validation 271/271, regression 397/397, CI-green.
Added — laser speckle (speckle_pattern)
- A random-phase circular diffuser propagated to a screen gives fully-developed laser speckle. Reports
the verified Goodman statistics: contrast σ_I/⟨I⟩ → 1, the negative-exponential intensity PDF
P(I) = e^{-I/⟨I⟩}/⟨I⟩(sovar/⟨I⟩² → 1andP(I>⟨I⟩) → e⁻¹ = 0.368), mean speckle size~ λz/D, and —
averagingn_avgindependent frames — the speckle-suppression lawC_N = 1/√N. Contrast + 1/√N are
physics_verify ok=true; the exponential PDF / survival / size-scaling are confirmed in the module self-test.
Added — caustics (caustic_pattern)
- Parallel rays reflecting off the concave inner wall of a circular mirror (radius
R) pile up on a
nephroid — the coffee-cup caustic. Traced from first principles (reflect a ray fan, accumulate the
ray-density) and reported against the exact analytic envelope(R/4)(3cosθ−cos3θ, 3sinθ−sin3θ). The
reflected direction(−cos2θ,−sin2θ), the caustic point lying on each ray att = −(R/2)cosθ, and the
cusp at R/2 (the mirror paraxial focus) arephysics_verify ok=true; the ray-density piles onto the
nephroid ~20×, brightest at the cusp. This closes the phenomenon-emergence catalog (hologram · interferogram
· Fabry–Pérot · Talbot · Newton's-rings · speckle · caustic).
Added — optic_bypassed diagnostic
diagnose()/propose_corrections()now warn when a mid-path optic receives no beam at all — it was
moved or mis-placed off the path so the trace bypasses it ("<optic> is in the scene but NO beam reaches it … (moved off the beam / mis-placed?)"), with a re-centre fix + amaybe_intentional_ifjudge hint.
Previously silent:beam_clippedonly fires on a near-miss over the aperture anddark_detectoronly
covers terminals. Found via the v0.23.0 rigid-mount render, where a lens stepped aside left the beam and
nothing flagged it. No false positives across the 18 example benches.
Install / update: drag the one-click link from
https://emircbngl.github.io/blender-optics-simulator/ into Blender, or download the attached
optical_alignment_sim-0.24.0.zip and Install from Disk. Existing installs auto-update via the
self-hosted extension channel.