Documentation

Ray-Optics Designer

Operating reference for the sequential ray tracer: every convention the numbers read against, what each analysis computes, where every pinned value came from, and what the model does not claim.

Open the Ray-Optics DesignerLast updated 31 August 2026

1. What this tool is

The Ray-Optics Designer is a sequential ray-tracing design tool that runs in your browser. You type a prescription — a list of optical surfaces in the order light meets them — and the tool traces exact real rays through it, computes the first-order (Gaussian) properties, and analyzes the image: spot diagrams, ray fans with interpretation labels, Seidel aberration sums, chromatic focal shifts, wavefront error, PSF, MTF, field curves, and ghost reflections. On top of the analysis sit two design engines: a damped-least-squares optimizer and a tolerancing engine with Monte Carlo yield prediction, both part of Ray-Optics Design Pro. Designs travel as share links, save to your library, and import from and export to the .zmx lens file format.

“Sequential” is the load-bearing word. Light visits the surfaces in the order you list them — surface 1, then surface 2, and so on to the image plane. That is the correct model for lenses, telescopes, camera objectives and relay systems, and it is what makes exact aberration bookkeeping possible. The one deliberate exception is the Ghost images view (§9), which asks what happens when light disobeys the prescription once — a reflection pair inside an otherwise sequential system. For genuinely non-sequential problems — integrating spheres, lightpipes, stray light in an enclosure, illumination — the right tool is the Illumination Analyzer, which is built on a different engine with different statistics.

Everything in the analysis half computes client-side, in your browser, in double precision. The optimizer and the tolerancer run on our servers.

2. Conventions and the prescription

Every number in the tool reads against these conventions. They are stated once, here, and the engine’s acceptance suite enforces them.

  • Axis and direction. Light initially travels in +z. Surfaces are listed in the order light meets them.
  • Radius sign. R > 0 when the center of curvature lies to the right of the vertex (further along +z). A plane is entered as an empty radius, not as a large number.
  • Thickness. Each row’s thickness t is the axial distance from that surface to the next. On the unfolded axis of a mirror system, gaps after an odd number of reflections are negative and refractive indices flip sign — Welford’s n → −n bookkeeping, which lets one paraxial formalism cover mirrors exactly. A row marked “Folds the axis” uses the other formalism: the coordinate frame follows the reflected axis and thicknesses stay positive. The two formalisms never mix on one surface.
  • Units. Lengths in millimetres, wavelengths in micrometres.
  • Wavelengths. Entered in µm; one of them is the reference wavelength. A new design starts at the Fraunhofer d line (0.5876 µm); chromatic analysis reads the F (0.4861 µm) and C (0.6563 µm) lines when they are in the list, and the presets carry their own line sets.
  • Aperture. Specified as the entrance pupil diameter (EPD), in mm. f/# and NA are derived, never entered.
  • Fields. Field angles in degrees for an object at infinity; object heights in mm for a finite conjugate. Setting an object distance switches the field axis; the two never coexist.
  • The stop. One surface is the aperture stop. The entrance pupil is the paraxial image of the stop through the surfaces ahead of it, and every pupil-aimed analysis launches its rays through that pupil.

Surface shapes. A row is a sphere, a conic, an even asphere or a toroid:

z(h) = c·h² / (1 + √(1 − (1 + K)·c²·h²)) + a₄h⁴ + a₆h⁶ + …

with c = 1/R the curvature, K the conic constant and h the radial coordinate. The editor exposes a₄ and a₆; higher even orders arriving through a .zmx import (a₈ … a₁₆) are preserved, traced, and shown read-only (§13). A toroid is the swept-torus surface z = R_rot − √((R_rot − p(y))² − x²) with the sweep axis parallel to y, where p(y) is the meridional profile above; a blank sweep radius is the cylinder limit of the same formula.

Tilts and folds — the two-class rule. A row may carry a tilt about its local x axis, and a tilted flat mirror may fold the axis. The analyses distinguish two cases:

  • Class A — every tilted surface is a flat folding mirror. The system unfolds rigorously into an equivalent straight system (a flat fold in one medium has no power and contributes exactly zero to every aberration sum), so all analyses run and return the straight system’s numbers. Only the layout bends.
  • Class B — any tilted or decentered surface with power, including a tilted refractive plane (a prism). There is no single optical axis, so every pupil-aimed analysis (first-order data, Seidel, spots, fans, OPD, PSF, MTF, field plots) is suppressed with its reason shown. What runs: the layout, per-ray tables, and aperture-referenced fans — parallel bundles across the first clear aperture, flagged as not pupil-aimed, evaluated at the image plane your own last gap defines.

Finite conjugates. An object distance turns the same prescription into a finite-conjugate system: fields become object heights, the marginal ray follows the conjugate, magnification and object/image distances join the first-order panel, and spot bundles aim from the object point through the entrance pupil.

3. Media and the glass catalog

Each surface row names the medium after it. Five kinds:

Medium kindWhat it isDispersion
Airthe defaultnone (n = 1)
Catalog glassone of the 399 glasses belowfull dispersion formula
Constant indexa typed nnone — chromatic analysis reports “no dispersion model”
Published-line table(λ, n) pairs at named spectral linesexact at the listed lines only
Your own materiala tabulated material from your accountlinear interpolation between samples, refused outside the table’s range

The catalog: 399 glasses. SCHOTT (156), OHARA S-line (38), CDGM (15) and HOYA (190), with each record’s dispersion formula and coefficients reproduced from the CC0-licensed subset of the RefractiveIndex.INFO database. SCHOTT, OHARA and CDGM records evaluate through the Sellmeier form; HOYA records through their published power-series form. Every glass shows its vendor and catalog release date (“vintage”) in the picker — SCHOTT and OHARA records are from 2017 catalog data, CDGM from 2022, HOYA from 2017 — because glass catalogs are revised: verify against the vendor’s current datasheet before committing a design to fabrication. Vendor names are their owners’ trademarks; the data is reproduced, not endorsed.

Legacy names. 26 discontinued or renamed glasses resolve through an alias table (25 OHARA vendor-succession pairs plus BK7 → N-BK7), each showing the measured Δn_d and ΔV_d between the old and new record — the largest V-number difference in the table is 0.069. The tool never invents values for a classic glass with no record in a permitted source; an unresolvable name imports as an unbound medium that blocks analysis by name rather than guessing (§13).

Your own materials. A tabulated material you define is evaluated by linear interpolation between your samples and refused outside your table’s wavelength range — no extrapolation, and no smoothing curve you did not type. The same material may evaluate slightly differently in tools that spline their tables; the difference is bounded by the interpolation gap (about 6 × 10⁻⁶ for 10 nm sample spacing) and is documented rather than hidden.

4. Ray tracing and first-order data

Real rays. The trace is exact: closed-form intersection with spheres and conics, Newton iteration to machine precision for the polynomial asphere terms, exact vector refraction and reflection at each surface. There is no small-angle approximation anywhere in the real-ray path. A ray that misses a surface’s extent, or hits total internal reflection, is reported as exactly that — counted, excluded, and named in the analysis that launched it, never silently dropped.

Paraxial engine. Alongside the real trace runs the standard y-nu paraxial trace, which supplies EFL, BFL, FFL, pupil positions and diameters, NA and f/#, magnification and conjugate positions. The first-order panel shows: EFL, BFL, FFL, image-space NA, entrance and exit pupil position and diameter, and — when both the F and C lines are in the wavelength list — axial color as BFL(F) − BFL(C) from a direct paraxial re-trace at each wavelength.

NA is reported as the paraxial n′/(2·f/#). At very fast apertures the exact aplanatic NA differs; the real-ray analyses are unaffected because they never use this number.

Afocal systems. A telescope or beam expander has no finite focal length, and near-zero total power the EFL is numerically meaningless (its sign flips through ±∞). The tool detects this state instead of printing a huge number: the first-order panel replaces EFL/BFL/FFL with “afocal” and shows the two quantities that are well defined there — the angular magnification M and the beam ratio A (exit/entrance beam diameter, with A = 1/M exactly at afocality).

5. Spot diagrams and ray fans

Spot diagrams. For each field and wavelength the tool launches a hexapolar bundle through the entrance pupil: the chief ray plus r rings, ring r carrying 6r rays, 1 + 3r(r + 1) rays in total — 127 at the default 6 rings. The spot is plotted at the image plane about its centroid, with RMS and geometric radii reported, and vignetted or failed rays counted and excluded from the statistics.

Ray fans. 21-point transverse aberration fans, meridional (ε_y vs pupil y) and sagittal (ε_x vs pupil x), referred to the chief ray at each field.

Interpretation labels. Under each fan the tool fits a least-squares polynomial in the pupil coordinate (powers 1 through 5, no constant term — chief-referencing makes the fan zero at the pupil center) and names what it sees, with the per-term shares always displayed beside the label. The convention, stated as a convention because no literature standard exists for “coma-dominant”:

  • a term is named when its share of the fan’s measured RMS reaches 60 % (shares are fractions of the fan’s own RMS — the same denominator the residual rule below uses);
  • a second term is listed at 25 %;
  • if more than 10 % of the fan’s RMS is left unexplained by the degree-5 fit, no aberration is named — the label never outruns the fit;
  • a fan whose whole excursion lies inside the diffraction core (the Airy radius 1.22·λ·N at that fan’s own wavelength, not the reference wavelength) is labelled diffraction-limited and gets no aberration name — naming the shape of round-off noise would be fiction;
  • fewer than 15 surviving points, no fit at all.

6. Seidel aberrations

The Seidel view is the third-order aberration ledger: per-surface contributions and sums of the five Seidel coefficients S_I (spherical), S_II (coma), S_III (astigmatism), S_IV (Petzval field curvature) and S_V (distortion), in Welford’s formulation, computed from a paraxial marginal ray and a pupil-centred chief ray. Conic and asphere terms enter through the standard aspheric increments; mirrors are handled exactly by the n → −n substitution. Two cases are suppressed with their reasons shown rather than approximated: toroids (two principal sections — a single-axis formalism does not apply) and Class B tilted systems (§2).

How the sums scale. With normalized pupil radius ρ and normalized field h, the transverse third-order aberrations scale as:

AberrationPupilField
Spherical (S_I)ρ³
Coma (S_II)ρ²h
Astigmatism, field curvature (S_III, S_IV)ρ
Distortion (S_V)

This is why aperture is expensive: opening a lens by one stop multiplies the spherical aberration blur by (√2)³ ≈ 2.8 while the diffraction limit only shrinks by √2. It is also why the fan labels of §5 work: on the meridional fan the sums appear as

ε_y(P) = [S_I·P³ + 3·S_II·P² + (3·S_III + S_IV)·P] / (2·n′u′)

and on the sagittal fan as ε_x(P) = [S_I·P³ + (S_III + S_IV)·P] / (2·n′u′), with P the fractional pupil coordinate, n′u′ the image-space marginal optical slope, and the sums evaluated at the fan’s field. Distortion is absent from both because the fans are chief-referenced. Note that the sums are third-order predictions; the fans and spots are exact real-ray results, and where they disagree the real rays are the truth — that disagreement is precisely the higher-order aberration content.

The Seidel field terms are referred to a pupil-centred chief ray: the chief is launched with ȳ = −ū·z_EP at the first vertex, z_EP being the entrance pupil position. For a stop on the first surface this reduces to ȳ = 0. Stated because different textbooks pick different chief-ray references and the per-surface S_II, S_III, S_V move between them (the sums at the image do not).

7. Chromatic analysis

With a dispersive medium in the system and both the F and C lines in the wavelength list, the tool reports axial color — BFL(F) − BFL(C), from a direct paraxial re-trace at each wavelength, no thin-lens approximation — and lateral color at each field. Media published only at named spectral lines get the honest branch: if a medium has no published index at F or C, the tool says so instead of interpolating an unpublished value.

Worked anchor, from the startup preset: the Cemented Achromat Doublet (N-BK7 + N-SF5, the classic crown-flint pair) has EFL 87.8784 mm and axial color +0.1715 mm. Compare the Biconvex Singlet preset with a real glass bound: −0.8925 mm over the same F−C span — the flint’s whole job in one pair of numbers, on a geometry that was never color-optimized.

8. Wavefront, PSF, MTF and field plots

OPD. The optical path difference map: physical optical path length accumulated along each real ray, referred to a reference sphere centred on the chief ray’s image-plane intersection and passing through the exit-pupil centre. Displayed as tangential/sagittal OPD fans and a pupil map, with peak-to-valley, RMS and the excluded-ray count. Sign convention: OPD = OPL(chief) − OPL(ray), so W(0,0) = 0 by construction and positive OPD means the ray’s optical path is shorter than the chief’s — under it, the ρ⁴ coefficient of third-order spherical aberration is +S_I/8. Telecentric systems (exit pupil at infinity) use the same reference-sphere machinery through the last vertex — there is no separate planar-reference branch, because the defocus term’s sign flips on a planar reference and the two references disagree measurably.

Zernike. A least-squares fit of the OPD map on Zernike polynomials in Noll’s indexing, with the RMS fit residual displayed next to the coefficients — a large residual means the truncated basis is not describing this pupil, and the table says so. Rank-deficient pupils (heavy vignetting) refuse the fit rather than returning noise.

PSF. The point-spread function by pupil-plane FFT of the complex pupil function e^(2πi·W/λ), Strehl-normalized: the displayed Strehl ratio is the aberrated peak against the unaberrated peak of the same pupil, obstruction included, following Mahajan’s convention — an obstructed but unaberrated pupil reads Strehl = 1. The excluded-ray count is always displayed beside the Strehl, because a Strehl computed from half a pupil is a different claim than one from all of it. A wavefront too steep for the sampling (phase stepping more than π between samples) blocks the computation with a message rather than rendering an aliased picture. Polychromatic PSF is the incoherent, weight-summed stack of the monochromatic PSFs, resampled onto the reference wavelength’s µm grid.

MTF. Tangential and sagittal modulation transfer, computed from the PSF, plotted to the diffraction cutoff against the diffraction-limited curve.

Field plots. Distortion in percent against the f·tanθ reference, and tangential/sagittal field curvature from differential real rays across the field.

9. Ghost images

Every refracting surface reflects a little; any pair of surfaces therefore sends a doubly-reflected copy of the scene toward the image. The Ghost images view enumerates every double-bounce path — for each pair of refracting surfaces (a, b) with a ahead of b on the light’s path, the light transmits forward to b, reflects there, travels back to a, reflects again, and continues to the image — and ranks them by how much irradiance they put on the image plane relative to the nominal image.

The flux of a ghost path. Reflecting at surfaces a and b and transmitting everything between them twice:

F_ghost / F_nominal = R_a · R_b · Π T_k² (product over surfaces strictly between a and b)

The surfaces outside the pair are traversed once by both the nominal and the ghost beam, so they cancel. For a bare glass plate in air (n = 1.5, R = 0.04 exactly at normal incidence) the one ghost pair gives F_g/F_nom = 0.04² = 1.6 × 10⁻³ — the number every stray-light discussion starts from.

The ranking. Flux alone does not decide visibility: a ghost spread over a large defocused disc is dimmer than the same flux near focus. Each path’s paraxial ghost focus is computed, its blur radius r_g at the image plane found, and the ranking quantity is

E_rel = (F_g/F_nom) · (r_A / max(r_g, r_A))²

where r_A is the Airy radius — the diffraction core is the honest floor: a ghost focused more tightly than diffraction allows cannot be brighter than “all its flux in one diffraction spot”, and a naive F/r² would diverge there.

Sensor ghosts. The image sensor itself reflects. Once you type a sensor reflectance R_s, the view adds the surface-to-sensor paths (F = R_a·R_s·ΠT², product over surfaces after a). There is no default sensor reflectance — an untyped “1 % AR” would be fabricated data — so until one is entered the sensor rows are absent, with a note naming the missing input.

Refusals, by name. Mirror and folded prescriptions are refused on physics: a ghost’s backward leg cannot transmit through a mirror, so the double-bounce enumeration does not describe such a system. Tilted systems, toroids, systems with no accessible image and unbound media are likewise refused with their reasons, not approximated.

10. Multiple configurations

A prescription can carry up to 4 configurations — a zoom’s wide/mid/tele plus a focus state is the textbook case. Configurations share one surface list; each configuration is an overlay of specific values on top of it. Four things can take a per-configuration value: any gap thickness, the entrance pupil diameter, the object distance, and the field list (as a whole). Everything not overlaid is shared by construction, so editing a shared radius edits it in every configuration at once.

Analyses read the active configuration. In the optimizer (§11), each operand row names the configuration it is evaluated in, the merit sums over all of them, and a variable can be shared (one value moving everywhere) or owned by one configuration — the zoom spacing that differs per state is per-configuration; the curvatures that are one piece of glass are shared. A configuration may switch conjugates (an infinite-conjugate wide state and a close-focus state in one design); each operand’s field values are read in its own configuration’s convention.

11. Optimization

The Optimize view changes the design instead of analyzing it. It is part of Ray-Optics Design Pro and runs on our servers: you choose variables and operands, and a damped-least-squares engine (Levenberg–Marquardt) iterates the variables to minimize the merit function — up to 60 iterations by default, hard-capped at 200, with the merit history reported so you can see the descent.

The merit function

The merit function is the entire statement of what you want. Each operand contributes residuals of the form (value − target); the merit is the sum of their squares, with each operand’s weight multiplying its total squared contribution (multi-sample operands like spot RMS are normalized by their sample count, so weights are comparable across operands). The optimizer descends this number and nothing else: a requirement not expressed as an operand has weight exactly zero, no matter how obviously the design “should” satisfy it.

The operand set:

OperandMeasuresNotes
spot_rmsRMS transverse ray error at a field and wavelengthhexapolar merit grid, ring count adjustable 1–6 (default 2 rings = 19 rays)
efl / bfleffective / back focal length, mmscale anchors
axial_colorBFL(F) − BFL(C), mmneeds both lines
angular_magafocal angular magnification M (signed)infinite conjugates only
beam_ratioafocal beam ratio A (signed)infinite conjugates only
collimationexit marginal slope of the conjugate’s own bundlethe afocal anchor that also works at finite conjugates
angular_spotexit-slope spread about the bundle mean, radiansthe afocal image-quality operand
thickness_min / thickness_maxbounds on a center thickness or air gap, mmone-sided
edge_thickness_minbound on a glass element’s edge thickness, mmsee below
var_min / var_maxbounds on a variable itselfkeeps a curvature or index physical

Variables: any curvature, thickness, conic constant, a₄ coefficient, or — through the model glass below — a glass’s n_d and V_d.

Two rules the panel enforces rather than advises. First, every merit needs a scale anchor — a focal length, or for an afocal system an angular magnification, beam ratio or collimation operand. Without one, shrinking the whole lens shrinks every blur, and the optimizer will happily take that offer; the panel refuses to submit rather than spend a run proving it. Second, an afocal or image-less starting point with a spot_rms operand and no angular operand gets a warning: spot RMS at a finite plane measures the beam footprint of a collimated bundle, not blur, and it fights the anchors instead of helping them. efl is also the wrong operand near afocality — it has a pole there (the sign flips through ±∞), so its residual landscape is split into two basins the optimizer cannot cross; the angular operands are polynomial-smooth through that manifold, which is why they exist.

Edge thickness and sag

Sag is the depth of a surface at height h from the axis: for a sphere, z(h) = R − √(R² − h²); in general the full even-asphere formula of §2. Edge thickness of a glass element occupying surfaces g and g+1 is

t_edge = t_g − z_g(h) + z_(g+1)(h)

— the center thickness, minus the front surface’s sag, plus the rear surface’s, both evaluated at the clear semi-aperture h. The edge_thickness_min operand bounds this quantity during optimization, and it exists because a center-thickness floor is not a monotone guarantee of the edge: sag depends on the very curvatures the optimizer is moving, so a design can satisfy every center bound in its merit and still come out with a negative edge — a lens shape no shop can make. The h it audits at is yours, frozen for the run: the tool seeds it from the design’s real-ray clear aperture but never solves for an aperture inside a residual. The operand is refused, by name, on air gaps, mirror surfaces and last surfaces — each of those would still produce a number, and the number would mean nothing.

Model glass and the snap

Real glasses come in a discrete catalog, and a discrete choice cannot be descended by gradients. The optimizer’s answer is the standard two-step: while glass is a variable, the medium becomes a model glass — a continuous (n_d, V_d) pair whose dispersion follows the normal-glass line — and the optimizer moves through that continuous plane freely. When the run ends, each model glass snaps to the nearest real catalog glass, nearest in the normalized distance

d² = (Δn_d / 0.01)² + (ΔV_d / 5)²

— one step in index “costs” the same as five steps in V-number, the classic glass-map scaling. The snap report then shows two numbers per glass: the merit at the model optimum and the merit re-optimized at the snapped real glass. The second is the only one you can buy. A model glass is a direction to search, not a destination, and the report is written so you cannot mistake the fiction for the deliverable.

Recipes

Five one-click merit builders — Balanced spot, Achromat, On-axis sharp, Afocal telescope / loupe, Beam expander / collimator — each assembled from the same operand table underneath, every generated row editable. A recipe is a starting point with the scale-anchor rule already satisfied, not a different engine.

12. Tolerancing

The Tolerance view answers the third question: not “what does this design do” (analysis) or “make it better” (optimization) but “how much can it change and still work” — the budget a fabricator is held to. Part of Ray-Optics Design Pro, server-side, and deliberately a separate view: you tolerance a design you have stopped optimizing.

The perturbation rows. Eight kinds, addressed to a surface, a gap, or an element (a maximal run of surfaces joined by glass — a cemented doublet perturbs as one element):

KindUnitWhat it models
Radiusfringes (or mm)surface form error from the polishing test
Thicknessmma gap ground thick or thin; moves every vertex behind it
Index±Δnmelt index error; the whole curve shifts, the F−C split does not
V-number% of the glass’s own V_dmelt dispersion error, base curve kept underneath
Surface wedgearcminone surface rotated about its own vertex
Surface decentermmone surface off-axis
Element tiltarcminthe whole element rotated about its front vertex — the exact rigid-body transform
Element decentermmthe whole element off-axis — a mounting error

Fringes, the optical-shop convention (ISO 10110-5): N fringes of power is N·λ/2 of sag error at the clear semi-aperture h, applied as a curvature change δc = N·λ/h² at the test wavelength (default 546.07 nm, the e-line). A plane takes fringes natively; the alternative radius entry in millimetres is applied as the exact reciprocal 1/(R + δR), never a first-order approximation, and has no meaning on a plane. Two seedable tolerance classes fill a full budget in one click — Commercial (5 fringes, 0.1 mm thickness, ±0.001 index, 0.8 % V-number, 3′/0.1 mm element tilt/decenter, 1′/0.05 mm surface wedge/decenter) and Precision (1 fringe, 0.025 mm, ±0.0005, 0.5 %, 0.5′/0.02 mm, …) — and every seeded row stays editable. Mirror surfaces accept radius, thickness and index rows only: a tilt or decenter on a mirror is refused rather than approximated, because the signed-index mirror bookkeeping and the tilt formalism do not compose.

The criterion is the RMS spot radius over all bundles (fields × wavelengths), in mm — one number per perturbed system, the same real-ray machinery as §5. A prescription with no accessible paraxial image is refused by name; in particular an afocal system is refused, because a spot criterion on a collimated bundle measures the beam footprint, not blur, and a sensitivity table built on it would look authoritative and mean nothing. (An angular criterion for afocal systems is planned; until it ships the refusal is the honest answer.)

The compensator

Real assemblies are not built blind: after the elements are mounted, someone focuses. The tolerancer models exactly that one adjustment — with refocus on (the default), every perturbed trial re-solves the image distance before the criterion is evaluated, which is the adjustment every real assembly gets. Uncompensated numbers answer a different question — what happens with no adjustment at all — and the display never mixes the two: compensated results are compared against the refocused nominal and uncompensated against the raw one, because the raw nominal criterion normally sits above the entire compensated distribution, and drawing it across one would report that fabrication errors improved the design. The last air gap’s thickness row is the compensator’s own variable — with refocus on, its effect is nulled by construction, which makes that row a good way to see what the compensator is worth and a poor way to see anything else.

Sensitivity and Monte Carlo

Sensitivity perturbs one row at a time to its full ± tolerance and tables the criterion change, ranked — the row that dominates the budget is the row worth spending money on. Monte Carlo draws every row simultaneously per trial — 1000 trials by default, hard cap 2000 — and reports the criterion distribution: percentiles (P2, P10, median, P90, P98), a histogram, and, against a criterion threshold you set, the yield: the fraction of surviving trials at or below it. A trial whose perturbed system fails to trace at all is counted and reported separately — it joins neither side of the yield fraction, and the report says how many there were. Each row’s draw follows its distribution: the default tnorm2 is a truncated normal with σ = tolerance/2, truncated at ±2σ (so the tolerance is the hard edge and about 95 % of an untruncated normal would fall inside it); uniform draws flat across ±tolerance. Tilt and decenter rows draw independent meridional and sagittal components (the sensitivity table perturbs the meridional one). The seed is always echoed in the result — type it back in and the run reproduces trial for trial, which is what makes a published yield number checkable.

A sensitivity table shows which parameters this design is most sensitive to, at the tolerances you entered. It does not predict fabrication yield by itself, and no Monte Carlo can supply what it is not given: the distributions your fabricator actually delivers. The model is the standard one; the inputs are yours.

13. .zmx import and export

The tool reads and writes the .zmx lens file format (Zemax OpticStudio’s sequential format, widely used as an interchange format), so a design can arrive from or travel to other optics software.

Import. Import a .zmx file from the header’s Design menu (Design ▾ → Import .zmx…). The importer maps the sequential subset: surfaces, radii/curvatures, thicknesses, conics, even-asphere coefficients (a₄ through a₁₆ — orders above a₆ are kept and traced, shown read-only), units (MM/CM/IN/M, with every length and every asphere coefficient converted at its own power of the unit), glass names, wavelengths, fields (angles, or heights paired with the file’s object distance), the stop, semi-diameters, and the literal image distance the file states. Glass names resolve through a ladder: exact catalog match → your own materials → the legacy-alias table → unresolved. An unresolved name imports the surface and leaves the medium unbound — analyses that need the glass block and say so; the importer never substitutes air or a nearest-index guess. Every line of the file gets a fate in the import report (mapped, ignored, or rejected, with counts), so nothing is dropped silently — including the one legal-but-inexpressible case: a file with a finite object distance and angle-based fields imports at infinite conjugates with its angles kept, and the report says so on the object row.

Model glasses. A .zmx “model glass” entry (___BLANK) states an (n_d, V_d) pair whose dispersion formula is the vendor’s own and unpublished. With V_d = 0 — the format’s zero-dispersion sentinel — it maps exactly to a constant-index medium. With V_d ≠ 0 it binds nothing: the tool carries the numbers and re-exports the entry byte-identically, but will not evaluate a dispersion curve it cannot know. Reconstructing one would be fabrication.

Export. The export (Design ▾ → Export .zmx) writes the current design as a .zmx file, client-side — nothing is uploaded. The writer is byte-deterministic (the same design always produces the identical file, with no timestamp), states its attribution in the file header, and is verified round-trip: a fresh export re-imports to the same design, and an imported file’s glass lines survive re-export byte-identically. Constant-index media export as the model-glass form above, annotated in the export report. What cannot be written honestly is refused with the reason, file withheld: tilted and folded rows (the format’s coordinate-break mapping is not something this tool can invent a reading of), media defined only as published-line tables, and non-finite values. A solved image distance is written as its solved value.

14. The presets

Nine presets, each either a machine-verified teaching anchor or a historical design read from its primary source. Loading one reproduces its frozen first-order values to the dataset’s print precision; the patent presets carry their citations in the picker.

PresetWhat it is
Biconvex Singlet (teaching)one N-BK7 element; axial color −0.8925 mm — the uncorrected baseline
Even-Asphere Singlet (asphere demo)the same singlet with a₄/a₆ terms working
Cemented Achromat Doublet (aberration anchor)N-BK7 + N-SF5, EFL 87.8784 mm, axial color +0.1715 mm; the startup design
Air-Spaced Triplet (anchor)N-PSK53A crowns + E-FD7 flint
Folded Doublet (45° mirror)the doublet with a flat fold — Class A: identical numbers, bent layout
Tessar f/5.5 (Rudolph 1902, US 721,240)read digit-by-digit from the patent scan
Cooke Triplet f/6.5 (Taylor 1895-96, US 568,052 Series III)likewise; the design our camera-triplet guide starts from
Newtonian Paraboloid f/5 (mirror preset)K = −1 primary, stigmatic on axis by construction
Classical Cassegrain f/8 (two-mirror preset)secondary conic K₂ = −((m+1)/(m−1))², m the secondary magnification — stigmatic on axis by construction

Patent radii are printed to three significant figures, so the reproduced focal lengths sit within 1–2 % of nominal — that is the patents’ own rounding, not trace error.

15. Design size, accounts, and Pro

Design size. A prescription may hold up to 6 editable surface rows anonymously and 12 with a free account; Ray-Optics Design Pro removes the cap. (Object and image are not rows; a standalone stop plane or fold counts.) The caps were sized so that the classical educational systems fit: a Cooke triplet with its stop row is exactly 6, a double Gauss with its stop row is 11. A preset above your cap asks for the sign-in it needs before loading — the Tessar, at 8 rows, is the one shipped preset above the anonymous limit. A share link, saved design or imported file above your cap is never refused: it opens read-only, fully analyzable, with editing available at the tier that fits it.

What needs an account. The editor, layout, first-order panel, presets (with their catalog glasses and full chromatic analysis), share links and .zmx import are available to everyone. A free account adds the analysis views — spot diagrams, ray fans, Seidel, the wavefront/diffraction/field set, ghost images — plus choosing different catalog glasses, multiple configurations, and the .zmx export. Defining your own materials and saving designs to your library come with Plus. The optimizer and the tolerancer are Ray-Optics Design Pro and run server-side; every analysis view remains client-side at every tier.

17. How this tool is verified

Summarized because it is the reason to trust the numbers above.

  • Independent oracle. Ray coordinates, first-order data and third-order sums are cross-checked against an independent open-source raytracing package (rayoptics) on suites of fixed systems and on fresh systems constructed for each verification round — agreement at the 10⁻¹²–10⁻¹⁵ mm level, i.e. at double-precision round-off.
  • Closed-form anchors. Systems with exact analytic answers are pinned at tolerance zero or machine epsilon: paraboloid and Cassegrain stigmatism (the conic conditions of §14), the thin-prism deviation tan((n − 1)θ), exact-afocal constructions built from dyadic rationals so the afocality is exact in floating point, the Seidel-to-ray-fan identity of §6.
  • Glass data. Catalog records are cross-checked against an independent evaluation of the same vendor data at the last-ulp level; the alias deltas are computed from record pairs, never typed.
  • Adversarial testing. Every acceptance gate was first run against deliberately broken engines — a sign flip in the Seidel sums, an approximate refraction, a skipped asphere iteration, a wrong ghost-flux form — and the record keeps which gate catches which defect. A check that cannot catch the bug it exists for is not a check.
  • Interop. .zmx files are verified as round-trip fixed points through this tool’s own reader and against the independent reader, on fresh constructions each round — which catches the failure mode a same-codebase round-trip cannot: a writer and reader sharing one misunderstanding.
  • The patents. The Tessar and Cooke prescriptions were read from the patent scans at native resolution, with the era’s sign conventions resolved by machine vote: the reading that reproduces the patent’s stated focal length is the right one.

18. What this page does not claim

  1. Numerical precision is not design truth. The trace is exact to round-off for the prescription you typed; nothing checks that the prescription describes the lens in your hand.
  2. Sequential only. Light visits surfaces in listed order. The ghost view covers exactly one disobedience (double bounces); scattered light, multiple ghost orders and true non-sequential transport belong to the Illumination Analyzer.
  3. Scalar diffraction, monochromatic pupils. PSF/MTF come from the scalar pupil function; no polarization, no vector high-NA model, and polychromatic results are incoherent sums. Interference and thin-film coating physics live in the Thin-Film Coating Simulator.
  4. Seidel is third order. The sums predict; the real rays decide. The fan labels state their fit shares precisely so the label never claims more than the fit.
  5. Glass data has a vintage. Catalog records are reproduced from dated releases (§3); verify against the vendor’s current datasheet before fabrication. Melt-to-melt variation is exactly what the tolerancer’s index/V-number rows are for.
  6. The tolerance model is a model. Truncated-normal and uniform draws at the tolerances you typed — not your shop’s actual process distributions. The seed makes every yield number reproducible; it does not make it a guarantee.
  7. The optimizer is local. Damped least squares descends from your starting point to a nearby minimum. It will not find a different design form, and a snapped glass is re-optimized locally, not globally.
  8. .zmx coverage is a subset, and says so. Every line’s fate is in the import report; what cannot be exported honestly is refused with the reason. Model glasses with unpublished dispersion are carried, never evaluated.

Try it: the Ray-Optics Designer — load the doublet preset and check §7’s axial color against the panel yourself.

References

  1. W. T. Welford, Aberrations of Optical Systems, Adam Hilger (1986) — Seidel sums, aspheric increments, the n → −n mirror bookkeeping. [textbook]
  2. M. Born, E. Wolf, Principles of Optics, 7th ed., Cambridge (1999) — the Airy pattern and diffraction imaging. [textbook]
  3. R. J. Noll, “Zernike polynomials and atmospheric turbulence,” J. Opt. Soc. Am. 66, 207 (1976) — the Zernike indexing.
  4. V. N. Mahajan, “Strehl ratio for primary aberrations: some analytical results for circular and annular pupils,” J. Opt. Soc. Am. 71, 75 (1981) — the Strehl convention with obstruction.
  5. J. C. Wyant, K. Creath, “Basic Wavefront Aberration Theory for Optical Metrology,” in Applied Optics and Optical Engineering XI, Academic Press (1992) — OPD sign convention.
  6. K. Levenberg, Quart. Appl. Math. 2, 164 (1944); D. W. Marquardt, J. SIAM 11, 431 (1963) — damped least squares.
  7. ISO 10110-5, Optics and photonics — Preparation of drawings for optical elements and systems — Part 5: Surface form tolerances — fringes of power.
  8. E. Fest, Stray Light Analysis and Control, SPIE Press (2013) — ghost-path analysis context. [textbook]
  9. RefractiveIndex.INFO database, CC0-licensed subset — the glass catalog records, with per-glass vintages shown in the tool.
  10. US Patent 721,240 (P. Rudolph, 1902); US Patent 568,052 (H. D. Taylor, 1896) — the two historical presets.