- Home
- Sequential Ray Tracing
- System Modeling
- How to Design Progressive Lenses
How to Design Progressive Lenses
- By Mark Nicholson
- Published 31 July 2006
- System Modeling
-
Rating:




Surface Types
An ideal free-form optical surface would simply be a set of data points. However, in order to be able to optimize such a surface, there must be some method to perturb the free-from surface so as to evaluate how to add or subtract power appropriately. Therefore, purely data-based surfaces, like the Grid Sag surfaces or imported CAD objects may be useful for characterizing system performance, but are not so useful for the initial design stage, which is when we want to be able to change the surface smoothly under the control of the optimizer.
The surface types most useful for initial design include:
- Cubic Spline and Extended Cubic Spline
- Radial and Toroidal NURBS
- Polynomial and Extended Polynomial
- Zernike Sag
The spline and NURBS surfaces take sag data directly as their defining parameters, and then fit multiple low-order polynomials through the data to provide a smooth surface suitable for ray-tracing. The Polynomial and Zernike surfaces use very general polynomials of arbitrary order to provide a similar capability.
We will use the Extended Polynomial surface to demonstrate the design considerations required when designing a Progressive Addition Lens. The file progressive_starting_point.zmx may be downloaded from the link on the last page of this article. It is a simple file, and looks like so:
The file uses three configurations, like so:
Note the use of the Maximum solve to make the semi-diameter equal to whichever configuration requires it to be the largest. Note also under General -> Miscellaneous that a margin of 3 mm is added to this, so that the lens is 3mm larger than is needed for the light to get through. This margin is useful to allow space for the frame.
On-axis light comes from infinity, light at 10 degrees comes from an object 1000 mm away, and light at 20 degrees comes from an object 500 mm away. This represents a user looking at different parts of the three-dimensional field of view and seeing objects at different distances. The file is afocal, and so the following spot diagram is in angular units (milliradians). The angular deviation of the light as a function of field can be clearly seen:
The correction lens is made of Polycarbonate and has an Extended Polynomial front surface and a Standard rear surface:
The sag equation of the Extended Polynomial is given by:
so it has a base conic asphere (standard) surface sag upon which the polynomial terms are added. The base standard surface is very helpful, as paraxial rays can interact with it and so paraxial concepts like EFFL are still useful. The polynomials are of the form xmyn, where m and n are integers and x and y are the coordinates of a point on the surafce. In the Extra Data Editor I have chosen to use 40 terms, and I have made all terms up to x4y4 variable. Any higher order terms I have set to zero and am not optimizing. This is purely a choice on my part: if I wanted to I could produce all polynomial terms to order 230.
I have then built a merit function to optimize the angular radius of the beam at each configuration, plus give reasonable boundaries for glass center and edge thickness. This was built using the default merit function tool. Therefore, our goal is to get the best collimated light out from the lens, and the object's position in the field of view and distance from the lens varies.
Press Tools -> Optimize -> Automatic and ZEMAX quickly optimizes the 24 variables to give us the freeform surface that gives the best collimated output:

