Home Examples Screenshots User manual Bluesky logo
OghmaNano Simulate organic/Perovskite Solar Cells, OFETs, and OLEDs DOWNLOAD

Cooke Triplet Lens Tutorial (Part A): Ray Tracing and Optical Setup

Introduction

Historical diagram of the original Cooke Triplet lens design by H. D. Taylor.
A historical illustration of the original Cooke Triplet lens by H. D. Taylor (1893). This three-element design introduced a new standard for aberration correction and remains highly influential. (Source: Moritz von Rohr, Der Stand der Camera obscura-Optik zur Zeit der Erfindung der Photographie, 1899.)

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:

This makes the Cooke Triplet an excellent introductory example for anyone wishing to understand or experiment with lens-system design inside OghmaNano.

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.

New simulation dialog showing the available device categories, including Ray tracing.
The New simulation dialog. Double-click the Ray tracing category.
Ray-tracing example list containing the Cooke Triplet entry.
The ray-tracing example library. Double-click the Cooke triplet entry to load the demo.

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 ??.

Optical Workbench main window showing the Cooke Triplet lenses, source and detector.
The Optical Workbench with the Cooke Triplet loaded. The green plane is the light source, the three coloured lenses form the triplet, and the magenta plane is the detector.
S-plane editor listing the surfaces that make up the Cooke Triplet.
The S-plane editor. Each pair of coloured rows corresponds to the two surfaces of one lens in the Cooke Triplet.

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.

Cooke Triplet after running the ray-tracing simulation, showing a blue beam passing through the lenses.
The Cooke Triplet after running the ray-tracing simulation. The blue volume represents rays that have propagated from the green source plane to the magenta 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.

Output tab showing detector0 and other ray-tracing result files.
The Output tab after the simulation. The folder detector0 contains data recorded on the magenta detector plane.
Contents of the detector0 output folder, including RAY_image and efficiency files.
Files inside the detector0 folder. These include the rendered image and the wavelength-dependent detection efficiency.

Inside detector0 you will find several result files (??), including:

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.

Rendered detector image (repeated here alongside the efficiency curve).
The rendered image, shown alongside the efficiency curve, helps relate spatial uniformity on the detector to the overall throughput of the Cooke Triplet.
Plot of detection efficiency versus wavelength for the Cooke Triplet.
Overall detection efficiency versus wavelength, obtained from 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.

Detector plane moved in front of the Cooke Triplet lens stack.
Moving the detector plane in front of the Cooke Triplet. Hold Shift while dragging to pass through other objects.

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 ??).

Detector image when the detector is placed before the Cooke Triplet.
Detector image with the detector placed before the lens system. The field is now uniformly bright and white.
Detector efficiency spectrum when the detector is placed before the Cooke Triplet.
Detector efficiency as a function of wavelength with the detector in front of the optics. The efficiency is essentially 100 % across the whole spectrum.

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 ??.

Optical ribbon showing the Optical Mesh button.
The Optical ribbon. Click Optical mesh to configure the wavelength sampling.
Default optical mesh with RGB sample wavelengths.
Default wavelength mesh containing three points used for RGB colour simulation. This is excellent for colour rendering but insufficient for spectral plots.

Delete the three existing rows, then click the + button to add a new row. Configure it so that the window matches ??:

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.

High-resolution optical mesh ranging from 200 nm to 1500 nm.
Updated wavelength mesh containing 20 evenly spaced points between 200 nm and 1500 nm.
High-resolution detector efficiency plot from the Cooke Triplet simulation.
High-resolution spectral transmission curve through the Cooke Triplet. Note the sharp drop in transmission below ~300 nm due to strong UV absorption in optical glass.

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