Cooke Triplet Lens Tutorial (Part A): Ray Tracing and Optical Setup
Introduction
The Cooke Triplet is one of the most influential photographic lens designs ever created. Patented in 1893 by H. Dennis Taylor of T. Cooke & Sons, the triplet introduced a breakthrough concept in optical engineering: a three-element lens in which a strong positive element at the front and back are separated by a negative meniscus in the centre. This simple but elegant configuration allows the Cooke Triplet to correct a wide range of optical aberrations simultaneously—including spherical aberration, coma, astigmatism, field curvature, and distortion—while remaining compact and manufacturable. For more than a century the Cooke Triplet has served as the basis for countless photographic and projection lenses. Modern derivatives of the design continue to appear today in zoom lenses, mobile-phone optics, and compact imaging systems. Its combination of simplicity, tunability, and excellent performance makes it an ideal system for demonstrating optical modelling concepts.
In this tutorial we will use the Cooke Triplet to illustrate the key features of OghmaNano’s Optical Workbench and S-plane editor. We will explore how to:
- Load and visualise a classical optical design from historical data.
- Inspect the geometry of each surface using the S-plane representation.
- Run full 3D ray-tracing simulations of the triplet.
- Modify curvature, spacing, and materials to study their effect on imaging quality.
- Observe changes in focus and aberrations as parameters are varied.
This makes the Cooke Triplet an excellent introductory example for anyone wishing to understand or experiment with lens-system design inside OghmaNano.
- Load lens designs via the S-plane editor.
- Visualise the Cooke Triplet in 3D.
- Trace rays and evaluate optical quality.
- Modify lens parameters and observe aberration changes.
Loading the Cooke Triplet
To get started, create a new ray-tracing simulation. From the main New simulation window (??), double-click on the Ray tracing icon. This opens the ray-tracing example library (??).
In this list, locate the entry labelled Cooke triplet and double-click it. You will be prompted to choose a directory on your local disk where the simulation files will be stored; select a suitable folder and click OK. OghmaNano will then open the Optical Workbench with the Cooke Triplet scene loaded.
After loading, the main Optical Workbench window will look similar to ??. The three coloured lenses in the centre are the Cooke Triplet elements: a positive (red) front element, a negative (orange) middle element, and a positive (yellow) rear element. On the left is a green plane representing the light source; on the right is a magenta plane representing the image detector.
Click and drag with the left mouse button on the black background to rotate the scene. Spend a moment orbiting around the system so you can see how the three lenses and the two planes are arranged in 3D.
Next, open the S-plane editor by clicking the S plane button on the left-hand toolbar of the Device structure tab (also visible in ??). This opens the S-plane table shown in ??.
The S-plane editor provides a “surface-by-surface” view of the 3D lens group. Each pair of rows corresponds to the front and rear surfaces of one lens. The columns list the optical material, lens type, radius of curvature r0, thickness, and diameter. Try matching each coloured lens in ?? to its corresponding pair of rows in ??. When you later edit values in this table, the 3D lenses will move and reshape accordingly in the main window.
Running the simulation
Once you are familiar with the geometry, run the ray-tracing simulation by clicking the Run simulation button (blue triangle) in the main toolbar. When the run completes, the scene will look similar to ??, with a blue bundle of rays showing where light has travelled from the source to the detector.
In this view, the green plane on the left acts as the light source, and the magenta plane on the right is the image detector. The blue volume between them shows the subset of rays that successfully reach the detector after multiple refractions in the triplet.
To analyse the results quantitatively, switch to the
Output tab of the Optical Workbench. You will see a list of
files similar to those in
??.
Here, detector0 corresponds to the magenta detector plane.
Double-click detector0 to open its output directory.
detector0 contains data recorded on the magenta detector plane.
detector0 folder. These include the rendered image and the
wavelength-dependent detection efficiency.
Inside detector0 you will find several result files
(??),
including:
RAY_image.csv– the rendered detector image.detector_efficiency0.csv– overall detection efficiency versus wavelength.
Double-click RAY_image.csv to open the rendered image viewer
(??).
This shows the intensity distribution at the detector plane after passing
through the Cooke Triplet. The image is not perfectly white—the grey tone
reflects the fact that only a fraction of the emitted rays actually reach
the detector, due to reflection and clipping losses within the lens system.
The plot shown in ?? illustrates the wavelength-dependent detection efficiency of the Cooke Triplet. This curve shows the fraction of rays emitted from the source plane that successfully reach the detector after passing through all three lenses. Because each surface introduces reflection, refraction, and potential clipping losses, the collected power is always lower than the emitted power. The gradual increase in efficiency with wavelength indicates that the triplet transmits longer-wavelength light slightly more effectively, a behaviour consistent with reduced refractive-index contrast and lower chromatic deviation at higher wavelengths. This metric is a key indicator of how well the optical system forms an image and how much light is lost internally.
detector_efficiency0.csv. This indicates what fraction of rays from the
source are collected by the detector at each wavelength.
Together, the rendered image and the efficiency-vs-wavelength plot provide a first quantitative look at how well the Cooke Triplet delivers light to the detector. In later sections of this tutorial we will modify lens curvatures and spacings in the S-plane editor and observe how these diagnostics respond.
The effect of the optical system on the light.
In this section we will move the detector plane so that it sits in front of the Cooke Triplet rather than behind it. This helps to separate losses caused by the optical system from those caused by the source or detector setup.
In the main 3D view, click on the detector plane (the purple square). Then, while holding down the Shift key, drag the detector to the left so that it sits just after the light source, as shown in ??. Holding Shift disables object snapping so that you can slide the detector through other objects without accidentally reselecting them.
After repositioning the detector, click the Run simulation button again. Once the ray-trace has
finished, return to the Output tab, open detector0, and then open
detector1. As before, double-click on RAY_IMAGE.csv and
detector_efficiency0.csv to view the new detector image and efficiency plot
(?? and
??).
With the detector positioned before the optical system, all emitted rays hit the detector without passing through any glass. As a result, the rendered image is brilliant white and the efficiency curve in ?? is flat at approximately 100 %. For the next step, move the detector back to its original position behind the lens stack so that we can once again analyse the performance of the full Cooke Triplet.
Increasing the wavelength resolution
Up to this point, the Cooke Triplet simulations have been performed using only three wavelengths: red, green, and blue. This is a common approach in colour ray tracing, because three samples aligned roughly with the RGB primaries are sufficient to reproduce colour appearance in rendered images. These three wavelengths correspond to the points shown in ??.
However, while three wavelengths are ideal for colour representation, they are not sufficient for producing accurate spectral plots such as transmission or efficiency curves. To generate wavelength-dependent graphs with meaningful resolution, we need to increase the number of sampled wavelengths.
We begin by opening the Optical mesh editor. Go to the Optical ribbon (shown in ??) and click on the Optical mesh button. This opens the current wavelength mesh, shown in ??.
Delete the three existing rows, then click the + button to add a new row. Configure it so that the window matches ??:
- Start: 200 nm
- Stop: 1500 nm
- Points: 20
- Step multiply: 1.0 (uniform spacing)
This gives a much smoother spectral sampling while keeping the computation time manageable. Note that although adding more wavelengths increases simulation time, OghmaNano parallelises wavelength computations across CPU cores. Therefore, on multi-core machines, doubling the wavelength count does not double the wall-clock time.
Now press the Run simulation button again.
Once the simulation completes, return to detector0 and open
detector_efficiency0.csv.
You should now see a smooth spectral efficiency curve, as shown in
??.
The steep decline in efficiency below approximately 300 nm reflects the well-known fact that common optical glasses absorb strongly in the ultraviolet. This physical effect appears in many historical anecdotes. For example, Richard Feynman described observing the first nuclear test from inside a jeep without eye damage because the glass windscreen blocked the harmful UV flash (see his book Surely You're Joking, Mr. Feynman!).
👉 Next step: Move onto the next tutorial page Part B