Problem AssignmentPH 360Due Apr. 16, 2007
Chapter 6: 2, 20, 23*, C1 (5), C2 (15)
C1.ZEMAX is an optical design program. Use one of the computers in Science 204. Logon as user “phlab”, password “electron”. Use Start, Physics, ZEMAX and load each of the demonstration files listed below. Each file has a .zmx extension. To get a feeling for the system, click the L3d button and use the arrow keys to get different views.
cylindercylindrical lens
dbgaussdouble Gauss
offaxisoff-axis parabola for an unobscured Gregorian
spidertelescope support spider for the secondary mirror
Here are some other files that you should open, look at the 3D diagram, and choose Reports, Surface Data. Record the thickness and diameter. Then choose Reports, System Data. Record the number of surfaces and the number of stops in the system.
hubbleHubble Space Telescope
cassrcCassegrain Ritchey-Chretien telescope
(same design as the Celestron C14 in our observatory)
cookea simple Cooke triplet lens
petzvalPetzval lens
tessr100P. Rudolph Tessar lens
wideang3210E wide angle lens
Exit ZEMAX.
C2.Use the True BASIC program THILEN (listing attached) to draw ray diagrams. In each part below, change the title of the graph to correspond to what is being displayed. Click on Start, Physics, TB Bronze. Load the file THILEN from the 360 folder. Run it to see what the graph looks like. Click anywhere on the graph to return to the program listing.
(a)Scale up the thick lens parameters of problem 6.20 by a factor of 100. Use these values in the appropriate data statements in THILEN. Draw several rays parallel to the axis of the lens. Examine your results closely and compare them to problem 6.23. You may want to change the vertical scale (ymin, ymax, ytick, ydot) to "zoom in" and determine the location of Fi more precisely. Hand in a hard copy of your graph by choosing File, Copy (notPrint), opening Word, and then CRTL-V. The results of parts b and c (below) can be added to this document.
(b)Scale up the parameters of the Tessar shown in Figure 6.10 by a factor of 10. Draw several rays parallel to the axis of the lens. Compare your results to those worked out on p. 251. Hand in a hard copy of your graph.
(c)Run the program again for a single diverging lens placed near the right side of the picture. You choose the parameters. Draw a few rays corresponding to the top and bottom of an "arrow object" positioned along the left edge of the graph. You may sketch the extra projected rays by hand or by adding a few lines to the program in the section where the "last ray" is drawn. Also, sketch in the object and the image. Describe the image (in words). What is the magnification (calculate it both ways)? Hand in a hard copy of your graph.
Program thilen ! Traces light rays through thick lenses.
! Reference: "Using Computers in Physics" by John Merrill, p. 124.
! Adapted by David Renneke.
! This is a graphics program which traces light rays through a series
! of media of different indices of refraction. The media are separated
! by spherical interfaces. The center of curvature and vertex of each
! spherical boundary is on the x-axis. The limits of the plotting
! window are: x = 0 to 100, y = -30 to 30. Rays start at x=0 and
! travel to the right.
dim n(30), x2(30), r2(30)
data 3 ! number of regions
data 1,1.5,1 ! index of refraction of the regions
data 10,15 ! vertices of each surface (left to right)
data 40,-40 ! radius of curvature of these surfaces
! For each ray, specify the starting point y (in cm) and the
! angle a (in degrees). a = 0 is horizontal.
data 8,0
data 4,0
data 0,0
data -4,0
data -8,0
read nreg ! number of regions
for i = 1 to nreg
read n(i) ! indices of refraction
next i
for i = 1 to nreg-1
read x2(i) ! vertices of each surface
next i
for i = 1 to nreg-1
read r2(i) ! radius of curvature
next i
declare public hmin,hmax,vmin,vmax
declare public xmin,xmax,xtick,xdot,ymin,ymax,ytick,ydot
declare public xorigin,yorigin,tick
declare public xtype,ytype
library "genplot.trc" ! contains subroutines 'graph' and 'mark'
call initialize ! set up values for display and user windows
clear ! clear screen
call graph ! draw grid
window #0 ! display window (full screen): (0,0) to (80,25)
T$ = "Thick lenses"
X$ = "x (cm)"
tcen = 40 - len(T$)/2
xcen = (hmax + hmin)/2 - len(X$)/2
plot text, at tcen,24.3: T$
plot text, at xcen,0.2: X$
plot text, at 0,13: "y (cm)"
window #1 ! user window to plot data and/or draw curves
for i=1 to nreg-1
theta=pi/2
for z = -theta to theta step theta/100
x = x2(i) + r2(i) - r2(i)*cos(z) ! move to starting point
y = abs(r2(i))*sin(z)
plot x,y; ! draw surface
next z
plot x,y ! turn off beam
next i
do
when error in
read y0,a ! read starting y value and initial angle (in deg.)
call ray ! draw the ray from left to right
use
exit do
end when
loop
sub ray
a = pi*a/180 ! convert to radians
x1 = xmin ! initial point on ray
y1 = y0
plot x1,y1;
for i = 1 to nreg ! go through the regions
if i = nreg then
y1 = y1 + tan(a)*(xmax - x1) ! final point on ray
x1 = xmax
plot x1,y1 ! draw ray, turn off beam
exit sub
end if
t = tan(a) ! slope of ray
r = r2(i)
x5 = x2(i) + r
e = t^2 + 1 ! coefficients in quadratic equation
f = 2*(y0*t - x5 - t^2*x1) ! for intersection of ray and next surface
g = y0^2 + x5^2 - r^2 + t^2*x1^2 - 2*y0*t*x1
f1 = f^2 - 4*e*g
if f1 =< 0 then
plot text, at x1+2,y1-.7: "Missed next surface"
plot x1,y1 ! turn off beam
exit sub
end if
if r<0 then ! x of intersection of ray with surface
x0 = (-f + sqr(f1))/(2*e)
else
x0=(-f - sqr(f1))/(2*e)
end if
y0 = y0 + t*(x0 - x1) ! y of intersection
x1 = x0 ! next point on ray
y1 = y0
plot x1,y1; ! draw ray
a1 = atn(y0/(x5 - x0)) ! angle of ray to x-axis
a3 = a1
a0 = a + a3 ! angle of ray to surface normal
for j=1 to 4
if abs(a0) - j*pi/2 <= 0 then ! find quadrant
j0 = j - 1
exit for
end if
next j
s1 = sin(a0)
s2 = n(i)*s1/n(i+1) ! Snell's law at surface
if abs(s2) >= 1 then
plot text, at x1+2,y1-.7: "Total internal reflection"
plot x1,y1 ! turn off beam
exit sub
end if
a2 = atn(s2/sqr(1 - s2^2)) ! find new angle
a2 = a2 - sgn(a0)*j0*pi/2
a = a2 - a3
next i
end sub
sub initialize ! establish values for both windows
! display window (full screen):
window #0
hrange = 80 ! character coordinates (80 hor. x 25 ver.)
vrange = 25
set window 0,hrange,0,vrange
hmin = 10 ! corners of user window in display
hmax = 76 ! window coordinates: (12,2.5) to (76,23.5)
vmin = 2.5
vmax = 23.5
! user window:
open #1: screen hmin/hrange,hmax/hrange,vmin/vrange,vmax/vrange
xmin = 0 ! left edge
xmax = 100 ! right edge
xtick = 10 ! hor. tick mark interval (0=no ticks)
xdot = 2 ! hor. dot spacing (0=no dots)
xtype = 0 ! x-axis type: 0=linear, 1=log-ticks,
! 2=log-both, 3=log-grid
ymin = -30 ! bottom edge
ymax = 30 ! top edge
ytick = 5 ! ver. tick mark interval (0=no ticks)
ydot = 2 ! ver. dot spacing (0=no dots)
ytype = 0 ! y-axis type: see xtype
window #1
set window xmin,xmax,ymin,ymax
xorigin = xmin ! origin of graph: (xorigin,yorigin)
yorigin = ymin
tick = 2 ! 1=single ticks, 2=double ticks, 3=grid lines
end sub
end