Feature request: Show cardinal points and entrance pupil etc on lens drawings

  • 5 March 2020
  • 6 replies

Userlevel 1
Numerical values for various fundamental parameters that characterize an optical system can be found scattered throughout Zemax in one place or another, if you look hard enough for them. Can an optional overlay be added to identify them on lens drawings. Particularly 1st and 2nd principal planes and nodal points, and the entrance pupil, and exit pupil. Presumably these were not included originally in Zemax because computing power was limited, but they should be easy to add now.


6 replies

Userlevel 3
Badge +1
I support this request. 
Userlevel 6
Badge +2
Hi! Our product team thinks this would helpful for users but it may not be trivial.

For now, it has been set to a low priority but it may be something we will consider adding during future developments.
I would augment this excellent request to add a feature to Zemax that shows all pupil planes (locations and sizes) conjugate to the aperture stop of a system, not just the entrance and exit pupils.
Userlevel 1

I have found the locations of the exit pupil and the nodal point to be particularly important for evaluating image scaling for the human eye (and the recent evaluations are for a pseudophakic eye; an eye with an intraocular lens). Zemax calculates the locations of these, but does not put them on a layout drawing. Some other things in the knoowledge base start all over with additional surfaces, and calculations, etc. I am attaching a zpl macro that overlays the information on a layout drawing, using the information in the cardinal point results, etc. It only works with the 'classic' mode layout, and with a lot of dinking around with a ruler to measure distances on the screen. The text at the top of the attached zpl file tries to describe it. You have to manually overlay the layout drawing every time you run it. Only a black line is available. Actually well worth doing though, now that I have done it.  

+1 vote to this request.

Userlevel 7
Badge +3

Hi Sandrine,

With respect, I think this is about as trivial to add as it gets. We have an existing Annotate feature, which takes arguments like 

LINE x1 y1 x2 y2 color

TEXT "string" x y angle scale color

ARROW x1 y1 x2 y2 SIZE color


And all of the first order data is readily available. There is a trick in computing first order data (usually measured relative to surface 1) relative to the normalized screen data used by the Annotate feature but this is surely trivial to the programmers: it’s exactly the same relative reference that is used for all surface and ray data already. So, it's easy to draw a line that represents the entrance pupil, some text that says ‘Entrance pupil’ (it can even be rotated!) and an arrow to join the two.

What would be more useful, and is definitely not trivial, is to do fully field-dependent, and wavelength dependent, real pupil drawings including ray-traces to the pupils, such as this animation:




But this is really useful and completely lacking in OS and (AFAIK) all other lens design codes. This is really useful because pupil imagery is the real secret sauce of imaging lens design. We consider a lens to be ‘wide angle’ specifically because its pupil shifts and rotates to allow light in at angles approaching and exceeding 90 degrees. See 

to watch me waffle at length on this very topic :grin:

In short, I think the simple method above could be implemented quickly, but a more comprehensive set of pupil-imaging features could be added as a major feature enhancement, especially for users designing wide angle lenses.

  • Mark