%! (lenses.inc) run gsave 72 72 scale 0.01 setlinewidth 2 2 translate newpath 0.5 -1 moveto 4 -1 lineto 4 4 lineto 0.5 4 lineto closepath clip newpath 3 3 1 0 360 arc gsave 0.8 0.9 1 setrgbcolor fill grestore stroke 1 0 0 setrgbcolor /x 3 def /y 1 25 div .0015 add def 25 { newpath 0 x moveto /P0 [0 x] def /V0 [1 0] def /C [3 3] def /R 1 def /P1 P0 V0 C R hit def P1 0 get P1 1 get lineto /n C P1 gradient normalized def /V1 n V0 1.33 refraction def /P2 P1 V1 C R hit def P2 0 get P2 1 get lineto /n C P2 gradient normalized def /V2 n V1 reflection def /P3 P2 V2 C R hit def P3 0 get P3 1 get lineto /n C P3 gradient normalized def /V3 n V2 1 1.33 div refraction def /P4 P3 V3 [1 0 0] line-intersection def P4 0 get P4 1 get lineto stroke /x x y add def } repeat newpath 0 0 0 setrgbcolor /Times-Bold findfont 0.3 scalefont setfont 42 rotate 1 -1 moveto (Descartes Ray) show grestore