Mathematics 309 - spring 2003 - assignment #3

This assignment is about the way lenses work, and in particular how the linear approximations fail. It is due by class on Monday, March 24. The programs should be handed in by email, the mathematics by paper or email.

We have seen two kinds of ray tracing, the "real" one where rays are explicitly refracted at lens surfaces, the other the linear approximation. The two agree when (a) rays lie close to the axis of the system, and (b) they are roughly parallel to the axis. One question this assignment will investigate is, How much do the two methods differ? Also, it is probably not entirely clear how rays actually produce images, say on a camera lens or your retina. One part of this assignment will ask you to simulate the process.

  • Start with a hemi-spherical lens, say of radius 1, as on the mid-term examination. Start this question by producing a picture analogous to that in an earlier assignment for a water drop, showing how "real" parallel rays coming in from the left (also as in the midterm) bend and almost focus on the far side. Take refraction to be 1.5.

    Next, simulate the image produced by the system of all parallel rays coming from the left that hit the lens, and then bending so as to hit the focal plane. Do this by parcelling up the range -1 to 1 into N pieces, amounting to a range of incoming rays, and then record how many hit the focal plane at various locations. Do this by producing a bar graph associated to the focal plane, recording hits in various ranges. Choose about 20 cells in the range. You will need to use the file lenses.inc. (Please replace your copy if it happens to be old. The previous version required that the direction vector in hit have length 1, whereas the latest one - March 17 - does not.) In the hemisphere as opposed to the sphere, you can use line-intersection rather than hit. Then you will have to calculate (by hand) where the focal plane is, and record where on that plane the bent rays hit.

    You will have to record the distribution of hits in an array. Arrays are created, say, by by /A 21 array def to define A to be an empty array of 21 spaces. Then you can get data out of it with get, and put data into it with array index data put to set array[index] = data. To find the distribution of real numbers, you want to change them into integers to lump the data together. The sequence y round cvi will return the integer nearest to y.

    How to make new arrays? /A [ 21 { 0 } repeat ] def will define A to be an array of 21 zeroes.

    Here is a hint on how to debug your program. You are going to have an array of numbers giving frequencies, and you might want to see what it looks like. Suppose the array is A. Then A == will display the array in your message window. You can also locate error points by inserting things like (1) ==, (2) == etc. in your program and see how far along you get before the error occurs.

  • Assume the same lens. One plane is said to be conjugate to another if the rays from one focus on the other - that is to say, the place where a ray hits does not depend on its direction. All rays from one location hit at another.
    • Find a formula for the plane conjugate to that which is located at a distance f = kR in front of the lens.
    • Take k=3. Show with a picture how focussing works by tracing "real" rays through the lens from the plane in front to its conjugate. (Take R = 1.)
  • Tracing rays in effect gives you a way to map (y, T) at the front plane to (y*, T*) at the back. Use "real" ray tracing to plot the image of a grid of around 121 rays [-R/2, R/2] x [-5o, 5o] on the front plane (again, take R = 1). You should get three grids altogether: (1) an original square grid; (2) the image of this grid under the linear approximation; (3) the image under real ray tracing. When applying the linear approximation, be sure to convert to radians.