Subroutines

These subroutines are written for Dr. Burge’s research projects.  They are copyrighted in the name of its author and the Large Optics Fabrication and Testing Group, College of Optical Sciences at the University of Arizona.  It is free and you are very welcome to use it for your research.  It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.  We would appreciate acknowledgment when the subroutine is used.

Additional subroutines for internal use can be found on Dr. Burge’s group drive under Computer directory.

1.SF_Spec_Calc.zip by Stacie Manuel

This Matlab function calculates the polishing specification for a telescope, following the discussion by Hill in “Optical Design, Error Budget and Specifications for the Columbus Project Telescope” (Proc. SPIE 1236, 86-107 (1990)).

2. zStd.zip by Ping Zhou

This Matlab function generates the circular Zernike polynomials, following the discussion by Noll  in “Zernike polynomials and atmospheric turbulence”  (J. Opt. Soc. Am., 66, 3, 207–211(1976)).  The numbering of this set of Zernike polynomials is the same as the “Standard Zernike Polynomials” in Zemax.

3. zAnnular.zip by Ping Zhou

This Matlab function generates the annular Zernike polynomials, following the discussion by Mahajan in “Zernike annular polynomials for imaging systems with annular pupils” (J. Opt. Soc. Am., Vol.71, 75-85 (1981)).  The numbering of this set of Zernike polynomials is the same as that in Durango.

4. zAnnularStd.zip by Ping Zhou

This Matlab function generates the annular Zernike polynomials, following the discussion by Mahajan in “Zernike annular polynomials for imaging systems with annular pupils” (J. Opt. Soc. Am., Vol.71, 75-85 (1981)).  The numbering of this set of Zernike polynomials is the same as the “Standard Zernike Polynomials” in Zemax.

5. Stitch.zip by Chunyu Zhao

This Matlab function stitches the subaperture measurements and provide a stitched map.  The algorithm was discussed by Otsubo in “Measurement of large plane surface shapes by connecting small-aperture interferograms” (Optical Engineering, Vol.33 No.2 608-613 (1994))

6. OAP_Normal.dll by Chunyu Zhao

This Zemax dll file models an off-axis parabolic surface.  It is useful when designing a CGH for testing an off-axis parabolic surface.  “Param 1” for off-axis distance measured in the parent coordinate. When it is positive, the parent vertex is on the plus y direction. When it is negative, the parent vertex is on the minus y direction.

7. OffAxis Parabola.dll by Chunyu Zhao

This Zemax dll file models an off-axis even apshere.  It is useful when designing a CGH for testing an off-axis even asphere surface.  Use the same parameter as OAP_Normal.dll.

8. OAEA_Normal3.dll by Chunyu Zhao

This Zemax dll file models an off-axis even asphere surface.  All the rays incident on this surface come out normal to the surface. It is useful when designing a CGH for testing an off-axis even asphere surface. It has the same parameters as standard even asphere surface as well as

Param 0: a rotation angle about z-axis of the off-axis distance from y-axis following the right hand rule.
Param 1: off-axis distance, following the same sign convention as OAP_Normal.

9. OffAxisEvenAsphere3.dll by Chunyu Zhao

This Zemax dll file models an off-axis even asphere surface. Use same parameters as OAEA_Normal3.dll.

10. DistortionFittingAndCorrection.zip by Chunyu Zhao

There are two Matlab functions in this zip files.  One is for distortion fitting and the other is to correct the distortion using a series of polynomials.

11. OrthogonalPoly.zip by Chunyu Zhao

This Matlab function generates the matrix converting Zernike series to a new orthonormal series in a racetrack area.  The algorithm is discussed by Guang-ming Dai and Virendra N. Mahajan in “Nonrecursive determination of orthonormal polynomials with marix formulation,” OPTICS LETTERS, Vol.32 No.1, January, 2007.

12. SurfaceAnalyzer by Won Hyun Park

13. GET_CGHZERNCOEFF.zpl by Chunyu Zhao

This Zemax macro read in Zernike coefficients in the extra data and write them into a text file.

14. SET_ZERNCOEFF.zpl by Chunyu Zhao

This Zemax macro read in Zernike coefficients from a text file and set the extra data for the specified surface in Zemax.

15. NoiseCal.zip by Ping Zhou

This Matlab function estimates the magnitude of the random error in a map created by averaging multiple measurements.  The detail is discussed in “Limits for interferometer calibration using random ball test” SPIE Optics and Photonics, San Diego, CA (2009).

16. MLE_stitching.zip by Ping Zhou

This Matlab code uses the maximum-likelihood estimation to stitch the subaperture measurements.  All the subaperture maps rotate with a common rotation axis.