## More About Inverse Ronchi Gratings

Ordinary Ronchi gratings have straight lines. When used to test non-spherical mirrors, they produce curved shadows. An inverse Ronchi grating has curved lines, calculated so that, when used to test a non-spherical mirror, they will produce straight shadows.

Grating pattern on the left is for an 8 inch f/7 paraboloial mirror. For use, the pattern would be reduced on film to 0.0287 inch diameter.

Eric G. H. Mobsby published his version of the inverse Ronchi grating test in the November 1974 issue of Sky & Telescope1. D. Malacara and A. Cornejo published a more precise method for calculating the gratings in the August 1974 issue of Applied Optics2,3. Mobsby's article gives a much more complete description of the production and use of the gratings. If you are interested in using this test, I strongly suggest you get and read a copy of Mobsby's article. Any public library should be able to help you get a copy. (They can get a loan, or a photocopy from another library even if they don't have it locally.)

Although all of the inverse gratings are based on the same principles, Mobsby, Malacara and Cornejo, and I all use different mathematical approaches to calculating the gratings. Mobsby uses an approximate method. His method requires little computation, but is limited to use with mirrors of moderate to long focal lengths, and fairly small diameters. In 1974, before the advent of personal computers, simplicity of computation was important.

Malacara and Cornejo use a precise method based on abberation theory. Their method is applicable to a wider range of mirrors, including figures other than paraboloids. Malacara and Cornejo's method, as well as Mobsby's, assume that the tester light source and image are both on-axis. This assumption simplifies the math significantly, however, Malacara and Cornejo's math was sufficiently complex to scare off most amateurs. For most test setups, the on-axis assumtion is probably adequate, but for faster and larger mirrors, significant errors may be introduced.

InvRon calculates by ray tracing. Ray tracing is at least as precise as Malacara and Cornejo's method. It requires more computation, but off-axis source and image placement are easily included, as are different line positions and widths. The amount of computation is easily handled by modern personal computers. My relatively obsolete 100MHz Pentium gets through the numbers in a second or two.

In the descriptions that follow, the axes are defined as follows. The mirror is assumed to be placed vertically, that is with the plane tangent to the mirror vertex vertical.

Z-Azis: The horizontal axis passing through the mirror vertex, normal to the plane which is tangent to the mirror vertex. This is the same as the mirror's axis of rotational symmetry. The positive Z direction is from the mirror toward the tester.

X-axis: The horizontal axis perpendicular to the Z-axis. This is the horizontal axis parallel to the plane tangent to the mirror vertex. The positive X direction is toward the right as seen from the tester looking toward the mirror.

Y-axis: The vertical axis perpendicular to the Z-axis. This is the vertical axis parallel to the plane tangent to the mirror vertex. The positive Y direction is up.

The coordinate system origin (0,0,0) is at the mirror vertex.

My method works as follows. A pattern of straight lines is defined on the face of the mirror. For a series of points on the boundaries of the lines, a ray is traced from the light source to each point on the mirror and from that point to the grating position. The light source is modeled as a single point, approximating a pinhole. The angle of the incoming ray is calculated from the source - mirror distance (including the mirror z coordinate), the X and Y coordinates of the mirror point and any X and Y offsets of the source. The angle of the mirror surface at each point is found from the slope at that point which is equal to the partial derivatives of the mirror surface equation with respect to X and Y. The angle of the reflected ray is found from the well known condition that the angle of reflection equals the angle of incidence. Then the reflected ray is traced to the grating position.

Calculating the grating position is a bit complicated. First, we find the Z-distance from the mirror at which light from one mirror zone converges. Then the user specified grating Z offset is added to the convergence point. The grating is placed in the X,Y plane at the resulting Z position.

In order to find the convergence point I use an iterative method. Two points on opposite sides of the mirror are chosen. The points lie on the X axis with X coordinates = ± r * zone. A convergence distance is estimated. Rays are traced from the source to each mirror point and from the mirror points to the estimated convergance distance. The algorithm iterates, adjusting the convergence distance until the difference in X coordinates of the traced rays is arbitrarily small. This method is analogous to finding the Foucault crossing point of a zone.

### Vector Ray Tracing

At first, I tried to do the ray tracing with trigonometric functions. Although this should be feasable, I was not able to make it work correctly for off axis source placements. Jim Burrows suggested I try a vector method. After much patient help from Jim, I was able to get this working well. What follows is the result of collaboration between Jim and myself, with Jim's contribution definitely being the more significant.

The vectors are defined as follows:

V1, V2, and V3 represent the x, y and z components of a vector V.
# denotes the vector cross product operation.
norm denotes the length of a vector found by the Pythagorean theorum.   norm(V) = (V12 + V22 + V32)1/2

ROC is the mirror's central Radius of Curvature (= 2 * mirror Focal Length).
x,y,z are the coordinates of a point on the mirror surface.
dz/dx and dz/dy are the partial derivatives of z with respect to x and y.
r2 = x2 + y2

for a paraboloid:
z = r2 / (2 * ROC),  dz/dx = x / ROC,  dz/dy = y / ROC

for any conic:
k = -e2, where e is the eccentricity. (k is the Schwarzchild constant, also called the conic constant.)
p = k + 1
z = r2 / (ROC + (ROC2 - p * r2)1/2),  dz/dx = x / (ROC2 - p * r2)1/2,  dz/dy = y / (ROC2 - p * r2)1/2

I    the unit vector parallel to the incident ray.

If the source moves with the grating (moving source), Source Delta = Grating z Offset, Else Source Delta = 0

I1 = x - Source x Offset
I2 = y - Source y Offset
I3 = -1 * (ROC - z + Source z Offset + Source Delta)

Normalize I to make it a unit vector:   (Read the next four lines as though they were computer code, not as mathematical equations.)
temp = norm(I)
I1 = I1 / temp
I2 = I2 / temp
I3 = I3 / temp

N    the vector normal to the mirror surface at x,y,z.

From the definition of a normal vector:
N1 = - dz/dx
N2 = - dz/dy
N3 = 1

C    the vector result of the cross-product I # N.

From the definition of the cross product:
C1 = I2 * N3 - I3 * N2
C2 = I3 * N1 - I1 * N3
C3 = I1 * N2 - I2 * N1

R    the unit vector parallel to the reflected ray.

This is where it gets tricky. The reflection condition can be restated as saying that the sum of the incident unit vector and the reflected unit vector has to be parallel to the normal vector. An equation that says the same is
N # (I + R) = 0 (The cross product is zero when two vectors are parallel.) This can be expanded to
N # I + N # R = 0 and this can be converted to
N # R = I # N We have already calculated I # N = C, so we can simplify by writing N # R = C
(Note: If I is a unit vector, R also has to be a unit vector.)

From the definition of the cross product we have:
N2R3 - N3R2 = C1
N3R1 - N1R3 = C2

These can be solved for R1 and R2:
R1 = (C2 + N1R3)/N3
R2 = (N2R3 - C1)/N3

We can not solve for R3 from the cross product, but, because R is a unit vector, we can write:
1 = (R12 + R22 + R32)1/2
or
0 = R32 + R12 + R22 - 1
By substituting the previous expressions for R1 and R2 into this equation and simplifying, we get a quadratic equation in R3:
0 = aR32 + bR3 + c
where:
a = N12 + N22 + N32
b = 2 * (C2N1 - C1N2)
c = C12 + C22 - N32
Note: All the values in a, b and c are known.

R3 = (-b ±(b2 - 4ac)1/2) / 2a

It turns out that only the - root is meaningful in this instance, so we have:
R3 = (-b - (b2 - 4ac)1/2) / 2a

Now that we have R3 we can substitute it into the equations for R1 and R2 from above:
R1 = (C2 + N1R3)/N3
R2 = (N2R3 - C1)/N3

With R in hand, we scale R1 and R2 by the Z distance from the mirror point to the grating plane:

R1 = R1 * (ConvergenceDistance - z + GratingOffset) / R3
R2 = R2 * (ConvergenceDistance - z + GratingOffset) / R3

In a final step, image x and y offsets from the z axis are removed so that the calculated grating is displayed centered on 0,0. The image x and y offsets are calculated simply by ray tracing the center of the mirror 0,0 using zero offsets and storing the resulting x and y values as the offsets.

In practice, the grating z position is measured from the specified zone crossing point, and the grating x and y positions are adjusted until the grating is centered in the light cone.

### Footnotes

1 "A Ronchi Null Test for Paraboloids" by Eric G.H. Mobsby. From "Gleanings for ATM's," conducted by R.E. Cox and R.W. Sinnott; Sky & Telescope, November 1974, pp. 325 - 330.

2 "Null Ronchi Test for Aspherical Surfaces", D. Malacara and A Cornejo, Applied Optics, Vol. 13, No. 8, August 1974.