The article is accompanied by a ZIP archive containing the sample ZEMAX files used. This can be downloaded from the final page of the article.
In this article we will demonstrate how to set up a scanning mirror such that a mirror scans +5° about its nominal position of 90°. The file starting point.zmx is in the zip archive you can download from the last page of this article. It shows a simple focussing lens, with a dummy surface (drawn in red) where the scanning mirror is to be located:

The lens was set up as follows:
We now want to make surface 2 a mirror, such that the lens is rotated through 90 degrees with respect to surface 1. Click on Tools > Coordinates > Add Fold Mirror, and enter:
![]() ![]() |
![]() |
Remember that coordinate break surfaces have no power and do not bend rays: they just define a new coordinate system in terms of a decentration and tilt with respect to the previous surface. This is very useful, as it allows us to separate the coordinate geometry from the optical properties of the surfaces.
Now, to make the mirror a scanning mirror, we need to tilt it. Let's say we want to tilt it by ±5° about the nominal 45° position. It will be incorrect to simply change the tilt about x angles of the coordinate break surfaces to say -50 degrees: this will shift the location of the lens and image plane as well:

As can be seen, changing the fold mirror angle just gives us a -100° fold: this is not the same as a 90° degree fold with a scan angle of ±5°.Set the tilt about x back to -45° before continuing.
To make the mirror a scan mirror, we must tilt it using the Tilt/Decenter Elements tool. This is found under Tools > Coordinates > Tilt/Decenter Elements. The mirror is surface number 3, so enter:
![]() ![]() |
![]() |
So far, we have developed a geometry in which we have a nominal position and the ability to tilt the mirror about the nominal position. By simply entering data into the x-tilt of surface 3, or using Tools > Slider, we can produce any scan agle we want. But, for optimization and tolerancing purposes, it is useful to sample this continuous movement by defining a number of configurations. This technique allows us to define a number of fixed-scan angle systems, as a way of modelling any scan angle.
Let's say we want to model scan angles of ±5° about the nominal 45° position. Click on Editors > Multi Configuration Editor, and from within the Multi-Configuration Editor click on Edit > Insert Configuration twice, so that you have three configurations. Double-clcik on the left-most column of the editor, and tell ZEMAX to make Parameter 3 of surface 3 a multi-configuration parameter, then edit the values as follows:


In this way, only the parameter in the multi-configuration editor is different between configurations. All other parameters are the same, except where they pick-up from a parameter controlled by the multi-configuration editor.
Set the 3D layout controls as follows:
![]() | ![]() |
![]() | ![]() |

The previous example shows clearly that the mirror is tilting about its vertex, which would be fine if we are modelling a galvanometer or similar type mirror. But, if the mirror is part of a polygon scanner, for example, then it is being tilted about a point some distance behind the vertex. How do we model that?
We need to place the pivot point of the mirror at the center of the polygon scanner. Let's say the distance from the vertex of the mirror to the center of the polygon is 50 mm. Make the following changes to the galvanometer file:

This simply offsets the point about which the tilts are done by 50 mm. Then double-click on the mirror surface, and in its Draw tab set it to draw the substrate of the mirror 50 mm away:

and the tilt about the offset point can be clearly seen:
![]() | ![]() |
In order to model a scanning mirror:
References
There are no external references for this article.