Documentation

Engineering

Validation

"Physically accurate" is easy to claim. Photonica was checked against textbook optics, experiment by experiment, and the whole run is published.

The method

Every test is driven through the same MCP interface an assistant uses: build a bench, read the measurements back, and compare against an independently computed reference. Where a reference needs a refractive index, it is computed from the exact Sellmeier coefficients Photonica itself reports for that glass — so the test checks the ray tracing and the measurement geometry, not whether two implementations agree about what BK7 is.

Tolerances are set per test and published with the results. Anything outside tolerance is reported as a failure, not rounded away.

What was covered

AreaChecks
InterfacesSnell's law at four angles, Fresnel reflectance at normal and 40°, Brewster's angle, the critical angle for TIR, the law of reflection at three angles
LensesThin and thick biconvex, plano-convex, biconcave, and a two-lens system against the system-matrix back focal length
DispersionPrism minimum deviation, the thin-prism approximation, angular dispersion between the C and F lines, longitudinal chromatic aberration, an achromatic doublet
PolarisationMalus's law at six angles, a quarter-wave plate producing circular light, a half-wave plate rotating linear light
Diffraction & systemsThe grating equation at two orders, Keplerian telescope magnification, the spherical-aberration cube law

The result

33 of 33 passed, with a median relative error of about 0.02%. Snell's law lands within 0.02°, Fresnel reflectance within 0.003%, the critical angle within 0.03°, chromatic aberration within 0.008%, and the telescope's magnification within 0.33%.

Two bugs surfaced during the work — both in the test harness, not the application: the two angle conventions described above, and the local-normal reference for curved-surface angles. One further check, a numerical-aperture measurement, was withdrawn rather than published with a reference that could not be pinned down. All of that is written up in the report.

Read the full validation report ↗