Light scattered from surfaces can contribute significantly to the image quality and overall performance of an optical system. In many cases scattering is a desired effect, e.g. when a source with uniform angular distribution is created by passing a light beam through a Lambertian diffuser. Surface scattering distributions which are built into ZEMAX include the Lambertian, Gaussian, and ABg models. More information on these distributions may be found in Chapter 12 of the ZEMAX manual.

There may be cases where it is necessary to model objects whose surface scattering properties do not follow any of the built-in ZEMAX distributions. In such cases user-defined scattering models may be employed. This is done by constructing a Windows Dynamic Link Library (DLL), as described in the Knowledge Base article How to Compile a User-Defined Surface. Please read through and understand that article before proceeding with this one. If you have the need for a user-defined scattering model but do not wish to write the software yourself, we can construct the necessary DLL for you at a very competitive price.

There are a few examples of user-defined surface scattering models which are provided with your ZEMAX installation. Both the C source code and corresponding DLL file for each model are located in the directory \ZEMAX\Objects\DLL\SurfaceScatter\. The majority of each code is similar, containing “boilerplate” programming used to link between the DLL and ZEMAX. The difference between the models is in the specification of the direction cosines for the scattered ray. This article describes how to determine those values for any analytic, integrable scattering distribution.