A Foucault Analysis Program

by Dave Rowe


Figure is a DOS program that calculates the surface profile of your mirror based on Foucault data that you supply to it. It has a very easy and convenient interface that allows you to enter, store, and retrieve the parameters of your mirror and mask. Once these parameters are entered and saved, you have only to enter the new knife edge readings. In addition, the program calculates all the popular measures of mirror accuracy, such as the RMS wavefront error, the peak-to-valley (P-V) wavefront error, the Strehl Ratio, the encircled energy ratio, and the normalized transverse error. The program graphs the surface error of the mirror for you and allows you to interactively select a figuring strategy based on a small change in the final radius of curvature of the mirror. Other panels in the program plot the transverse error, the diffraction function of the focused spot, and a visualization of the spot as it might appear in the telescope. The program will also make a text file for you with the results of the analysis.

Advanced users can select any conic section as the target mirror.

Version Number

The current version of the program is 4.5, last modified on 12-08-2000. If you have an earlier version, please update it.

Changes from the Last Version

You can now enter the zone radii as either the inner and outer mask radii or as the effective center of the zone.

You can now enter up to four KE reading data sets in the KE Panel and have the program automatically average them.

In the Load Panel, the program automatically finds all data files with extension .fig and displays them for you. You can select one of these files using the cursors, or you can create a new file by highlighting the NEWFILE entry. The program then prompts you for a file name.

File Saves are now semi-automatic, the program will prompt you for a new file name or will verify an overwrite if information has been changed in the current file.

You can now see the effect of a central obstruction in the Diffraction Analysis Panel and the Spot Visualization Panel.

The Spot Visualization Panel now shows the diffraction pattern for an ideal mirror as well as for the actual mirror.

A new function has been added, Print. Pressing <F8> at any time causes the program to make a text file containing the measurement data, the mirror analysis, and the surface error profile. The Print File has the extension .res (for result).

Downloading and Running the Program

You can download the zipped files for Figure 4.5 by clicking on the following URL: (70K)

Make a new directory and unzip the file into it. When the Zip file is decompressed you should see the following files:

FIGURE45.EXE – the main, executable program

EGAVGA.BGI – the graphics driver

BESSEL.DAT – a file containing the tabulated Bessel function

SPHERE.FIG – an example file of a spherical 6" f/8 mirror

EXAMPLE.FIG – an actual mirror in the middle of being figured by a student


If you only need the executable file, download the following: (120K)

To run the program type figure45 at the DOS prompt, or use Windows Explorer and click on the file name Figure45.exe.


Program Operation

The program is menu driven using the function keys. At present, eight function keys are used:

<F1> -- Load a file or create a new file

<F2> -- Enter the mirror, mask and Foucault tester parameters

<F3> -- Enter the knife edge readings

<F4> -- Graph the surface error and display the mirror accuracy measures.

<F5> -- Graph the transverse error

<F6> -- Graph the diffraction pattern

<F7> -- Plot the spot

<F8> -- Make a text file of the analysis results

Any function key can be pressed at any time to move about the various panels in the program. Data is entered in a structured format and you move about the structure by using the arrow keys and the <enter> key. For each item to be entered, the program will prompt you for a response. You should find it very simple and obvious.

The following is a detailed description of each of the main functions of the program, please read it carefully.

<F1> Load Panel

When you first enter the program, you will see a listing of all of the figure files (.fig) on the current drive that have been created in the past. You can load an old file by using the cursors to move about the screen to highlight the desired file and then pressing the <enter> key. To create a new file, highlight the NEWFILE entry and press <enter>. When creating a new file do not use an extension. Figure automatically uses the extension .fig for all data files. After selecting or entering a valid file name the program will automatically go to the next panel, Setup.

<F2> Setup Panel

The setup panel is where you enter information about the mirror, tester, and the mask you are using. Typically, you will enter these data once for a given setup and not change it, with the one exception that you may, during figuring, re-measure the radius of curvature of the mirror, in which case you should update this parameter.

The following is a description of the data to be entered in this panel:

Number of Zones – This is the number of zones on your mask. The area where the zone radii are entered will automatically update when this number is changed.

Mask Entry – You can select either Effective or Inner/Outer as the mask entry type by pressing the space bar when this field is highlighted. Use Effective if you are using a pin-stick or if you have previously calculated the effective center of your zones. Use Inner/Outer if you would like the program to calculate the center of the mask zone for you.

Measurement Units – You can select either Inches or Millimeters as your measurement unit by pressing the space bar when this entry is highlighted. All further data must be in the selected unit, including the radius of curvature, the zone radii and the knife edge (KE) readings.

Light Source, Fixed or Moving – By pressing the space bar when this entry is highlighted, you can select either a Fixed or Moving light source. Make sure you have this correct!

Diameter of Mirror – Enter the optical diameter of the mirror, in the correct units, in this location. The optical diameter may differ a bit from the physical diameter of the blank because of the bevel on the edge.

Radius of Curvature – The radius of curvature of a central zone on your mirror should be carefully measured. First, using the Foucault tester, null a central zone. Then, using a tape measure, find the distance between the vertex (center) of your mirror and the midpoint between the light source and the knife edge. Enter this number, in the correct units, in this location.

Desired Deformation – If you are making a parabola of revolution (a paraboloid) then leave this entry –1. For those that have some optical design experience, this entry allows the target mirror to be any conic section, characterized by its conic deformation constant, b. If the desired mirror is spherical then this parameter should be set to 0. A paraboloid has a deformation constant of –1, a hyperboloid is characterized by a conic constant less than –1, etc.

Zone Radii – For each zone on the mask, enter the inner and outer or effective radii of the zone. If Inner/Outer has previously been selected as the Mask Entry type, the program will automatically calculate the effective radius of each zone, based on the work of Nils Olof Carlin. His calculations show that the zone center is best represented by the average between the arithmetic mean and the RMS of the inner and outer radii. If you want to enter your own effective radius, then select Effective as the Mask Entry type. When you are done entering information in the setup panel, press <F3> to enter the knife edge readings.

<F3> - KE Readings

This panel is simple. Just enter the KE readings from your Foucault tester for each of the zones on your mask. More positive numbers represent nulling locations that are farther away from the mirror. Be sure to enter the KE readings in the correct units.

Up to four sets of measurements can be automatically averaged by the program. If you have more than one data set then type in the number of data sets to be averaged in the Number of Data Sets entry box.

When you are done entering the values, press <F4> for an analysis of the surface errors of your mirror.

<F4> - Surface Error Analysis

When you enter this panel the program will automatically compute the surface profile of your mirror based on the data that you entered in the Setup Panel and the KE Readings Panel. The program then computes an Offset from the radius of curvature that minimizes the RMS difference between the actual mirror surface and your target mirror. This Offset is equivalent to refocusing the telescope to produce the best image possible at the eyepiece. You can vary the Offset at any time by either typing in a new number and pressing <enter> or by using the up and down arrow keys and then pressing <enter>. To automatically re-compute the best RMS Offset, just press <F4> again. The ability to numerically focus the mirror will be quite valuable in determining an optimum figuring strategy, and in evaluating the performance of the mirror you now have at this stage in the figuring process.

When you enter this panel you will see displayed in the gray box six measures of the surface difference between the actual and target mirrors. Each is discussed below:

Glass Remaining – This is the amount of glass, in cubic millimeters, that you would have to remove to make a perfect mirror. It assumes that no extra glass is removed in the process, which in practice, of course, is impossible. Use this measure to see if you are progressing in the right direction and to estimate the amount of work in front of you.

P-V Wavefront Error – This is one of our old friends, the peak-to-valley wavefront error of the mirror at a given focal location. It measures the surface height error, in waves, between the highest and lowest spots on the mirror. Notice that this error is dependent (as are all the others) upon the focal location (Offset). Use this measure carefully and with some thought. As a measure of mirror quality I personally prefer the Strehl Ratio and the Encircled Energy Ratio because they are based on the actual workings of a mirror, i.e., physical optics. See below.

Transverse Error – This is another old friend, which I personally find shabby and distasteful in the light of physical optics. I include it because it is so often used as a measure of the quality of a mirror and some feel a bit lost without it. The program reports the transverse error as the maximum deviation (in a geometric sense) that the worst-case ray would have from the spot center, normalized to lambda/D, the radius of the Airy disk. Lambda is 550 nm (green light) and D is the diameter of the mirror. Use this measure with much thought and some caution.

Strehl Ratio – This is a true measure of the performance of the mirror based on physical optics. It is the intensity of the light at the spot center of the actual mirror divided by the intensity of the light at the spot center for an ideal (perfect) mirror. In my opinion, one can say with some confidence that if the Strehl Ratio is greater than 0.8 then the mirror is of good quality, if greater than 0.9 then the mirror is very good, and if greater than 0.95 it is excellent. Others will have different, but generally similar, criteria.

Encircled Energy Ratio (EER) – This is my favorite measure of mirror quality. It is the integrated intensity of the light within radius lambda/D of the spot center divided by the integrated intensity over a similar area for an ideal mirror. See my comments above about when I think a mirror is good, very good, or excellent.

RMS Wavefront Error -- This is the RMS deviation of the actual wavefront from an ideal wavefront, measured in waves. For small surface deviations from the ideal, it is as good a measure as the Strehl Ratio or the EER. A good mirror, by my definition, should have an RMS wavefront error no larger than 1/13 waves.

Surface Error Graph and Figuring Strategies

The graph presented on this panel is the difference between the actual and target mirror surface profiles. It has been adjusted vertically so that the lowest value of this difference touches the x-axis. Since glass cannot be added to the surface, this selection of the y-axis value makes some sense. Note that the y-axis units are microns, and remember that one wavelength of green light is 0.55 microns. This will give you some idea as to how far you are away from that perfect mirror. From the graph you can immediately see where glass needs to be removed from your mirror to bring it closer to the target. Obviously, concentrate your effort in polishing down the high spots, keeping the following in mind.

Most amateur telescope makers do not care about the exact final radius of curvature of their mirror, as long as it’s within perhaps an inch or so of the target value. Allowing the radius of curvature to change slightly during figuring opens up another degree of freedom in the figuring process. Using the Offset variable, you can, within reasonable limits, select a slightly different final radius of curvature (RoC) for your mirror and perhaps make the figuring process easier. For instance, a mirror that has a slightly turned up edge may be easier to adjust by working the center, leaving the edge alone. How is this possible? Imagine a new final radius of curvature for the mirror that’s slightly shorter than the current one. This new RoC is selected so that the slope at the edge of the mirror is the correct value. This clearly means that the center of the mirror must be lowered from its current location. It’s as simple as that. Use the Offset variable to explore your figuring strategies, keeping in mind that as you deviate from the starting Offset, more glass will have to be removed to get to your goal. Even though more glass must be removed, it may be a safer strategy than an all-out assault on that edge where mistakes are harder to repair.

<F5> - Transverse Error Analysis

This panel graphs the normalized transverse error of your mirror. The transverse error is a geometrical (ray) description of the slope errors of your mirror and not a description of the surface error. We have all heard stories of the unfortunate novice that confused the two. In addition, we all know that light is governed by wave mechanics, so rays are a somewhat fictitious way of thinking about things. Nonetheless, the transverse error does show useful information about the mirror, so it is included for completeness.

The normalized transverse error is defined as the distance that a geometric ray would fall from the spot center, normalized to the radius of the Airy disk (lambda/D). In other words, let’s say that your mirror is 200 mm in diameter. In this program we take lambda to be 0.55 microns, so lambda/D is 2.75 microradians or 0.57 arcseconds. A normalized transverse error of 3 then means that our fictitious ray would intersect the focal plane at an angle of approximately 1.7 arcseconds from the spot center. If the transverse error is positive, the mirror in this region has a shorter-than-desired radius of curvature, and vice versa. As noted above, do not confuse the slope error with the surface error. The two are related by an integral (or derivative, depending on your point of view).

<F6> - Diffraction Analysis

This panel shows a graph of the intensity distribution of light for the actual and ideal mirrors. As you may know, the image of a point source at infinity through a circular aperture (the mirror) is described by the Airy function. This function has a central bright region (the Airy disk) surrounded by fainter and fainter diffraction rings.

The x-axis of the graph is the distance from the spot center in angular units of lambda/D. Using our previous example where D = 200 mm, each unit along the x-axis would correspond to 0.57 arcseconds, approximately. On the y-axis, the base-10 logarithm of the intensity has been plotted. Recalling that 5 astronomical magnitudes correspond to a factor of 100 change in intensity, one can see that each unit on the y-axis corresponds to an intensity change of 2.5 magnitudes.

A skilled mirror maker can use this graph to evaluate the finer details of a mirror, but most mirror makers should stick with the Strehl Ratio, EER, etc. I included this graph as an interesting educational device and not specifically as a mirror evaluation tool. That being said, there is some interesting value in this graph having to do with the star test. One can use the Offset variable to de-focus the mirror inside and outside of best focus. In the presence of very good seeing, one should, at the telescope, see a correlation between the actual star test and the intensity graph shown here. By doing so, a better understanding of the results of a star test can be gained. For instance, one can make up a Foucault data set for a fictitious mirror having a turned down edge and then see what a star test would reveal. A "zoney" mirror can then be explored, etc.

In addition to the Offset, you can enter a Central Obstruction in percent of the full aperture in the data field to the left of the Offset. Move to this field by pressing the left arrow key. By changing the Central Obstruction variable you can see the effect of the secondary mirror on the diffraction pattern. A typical Central Obstruction for a visual Newtonian is about 20% to 25%.

<F7> - Spot Visualization

The spot visualization plot shows a rough approximation of the diffraction pattern produced by the actual mirror. It is included primarily as an educational device, but can also be used as a guide to the star test. As in the Diffraction Analysis panel, two variables can be modified, the Offset and the Central Obstruction. The plot on the left shows the diffraction pattern for an ideal mirror with no central obstruction, and the plot on the right shows the actual mirror’s diffraction pattern with the effects of the central obstruction included.

<F8> - Print

Pressing <F8> at any time causes the program to make a text file containing the entered data and an analysis of the mirror. The filename of the Print File will have extension .res (for result).

File Saves

All user-entered data is automatically saved when either a new file is created or the program is exited. If the current information has been modified and you attempt to exit the program or load a new file, the program will ask you whether you wish to Overwrite the existing file, Create a new file, or Do nothing.

A Note on Computational Accuracy and Verification

I have tested this program against a number of cases that can be worked out analytically, including a general fourth-order surface and a Ό wave sphere. The analytically calculated values for the RMS wavefront error, the P-V wavefront error and the Strehl Ratio all agree with the output of the program to within about 5%, which I consider to be quite good. I have also checked the program with several "pathological" cases, such as instances where zones were poorly chosen, or where the mirror had large edge defects. In all cases the program produced reasonable results that would lead the user in the right direction toward his or her goal. There is always the small chance that some unlikely set of input conditions will yield unphysical answers or cause the program to crash, but I have tried to be as thorough as possible to assure that this does not happen.


I would like to thank Nils Olof Carlin, Jim Burrows, and Alan Adler for testing earlier versions of this program and pointing out flaws and inconsistencies in it. Their most enjoyable and helpful discussions cleared my thinking and got me on the right track. And of course, any bugs that remain in the program are mine and mine alone.