%! (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 % circle newpath 3 3 1 0 360 arc gsave 0.8 0.9 1 setrgbcolor fill grestore stroke 0 0 0 setrgbcolor newpath /x 1 def 20 { x 4 moveto x 3.05 lineto stroke /x x 0.05 add def } repeat stroke %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /x 2 def 20 { newpath x 4 moveto /P0 [x 4] def /V0 [0 -1] def /C [3 3] def /R 1 def /P1 P0 V0 C R hit def P1 0 get P1 1 get lineto stroke /x x .05 add def } repeat %%%%%%%%%%%%%%%%%%%%%%%%%%% gsave /dx 3.05 def /x1 2 def /m 1 def 19 { 42 { /x 3.05 def /y .95 19 div .0001 sub def newpath 0 dx moveto /P0 [0 dx] def /V0 [1 0] def /C [3 3] def /R 1 def /P1 P0 V0 C R hit def /n C P1 gradient normalized def /V1 n V0 1.33 refraction def /P2 P1 V1 C R hit def /y1* P1 V1 [1 0 x1 neg] line-intersection def /y1 y1* 1 get def /x dx y add def 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 /n C P1 gradient normalized def /V1 n V0 1.33 refraction def /P2 P1 V1 C R hit def /y2* P1 V1 [1 0 x1 neg] line-intersection def /y2 y2* 1 get def newpath x1 y1 moveto x1 y2 lineto stroke /x1 x1 0.05 add def } repeat 3 3 1 0 360 arc clip /q P2 0 get P1 0 get sub .05 add 20 div def /dx dx y add def /x1 2 q sub def } repeat grestore %%%%%%%%%%%%%%%%%%%%%%%%%%%% gsave /dx 3.05 def /x1 0 def /m 1 def 19 { 63 { /x 3.05 def /y .95 19 div .0001 sub def newpath 0 dx moveto /P0 [0 dx] def /V0 [1 0] def /C [3 3] def /R 1 def /P1 P0 V0 C R hit def /n C P1 gradient normalized def /V1 n V0 1.33 refraction def /P2 P1 V1 C R hit def /n C P2 gradient normalized def /V2 n V1 reflection def /P3 P2 V2 C R hit def /n C P3 gradient normalized def /V3 n V2 1 1.33 div refraction def /P4 P3 V3 [1 0 0] line-intersection def /y1* P3 V3 [1 0 x1 neg] line-intersection def /y1 y1* 1 get def /x dx y add def 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 /n C P1 gradient normalized def /V1 n V0 1.33 refraction def /P2 P1 V1 C R hit def /n C P2 gradient normalized def /V2 n V1 reflection def /P3 P2 V2 C R hit def /n C P3 gradient normalized def /V3 n V2 1 1.33 div refraction def /P4 P3 V3 [1 0 0] line-intersection def /y2* P3 V3 [1 0 x1 neg] line-intersection def /y2 y2* 1 get def newpath x1 y1 moveto x1 0.025 add y2 lineto stroke /x1 x1 0.05 add def /q P3 0 get P4 0 get .025 add 30 div def } repeat /dx dx y add def /x1 .233914971 q sub def } repeat grestore %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % circle newpath 3 3 1 0 360 arc gsave 0.8 0.9 1 setrgbcolor fill grestore stroke %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% gsave /dx 3.05 def /x1 2 def /m 1 def 19 { 42 { /x 3.05 def /y .95 19 div .0001 sub def newpath 0 dx moveto /P0 [0 dx] def /V0 [1 0] def /C [3 3] def /R 1 def /P1 P0 V0 C R hit def /n C P1 gradient normalized def /V1 n V0 1.33 refraction def /P2 P1 V1 C R hit def /n C P2 gradient normalized def /V2 n V1 reflection def /P3 P2 V2 C R hit def /y1* P2 V2 [1 0 x1 neg] line-intersection def /y1 y1* 1 get def /x dx y add def 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 /n C P1 gradient normalized def /V1 n V0 1.33 refraction def /P2 P1 V1 C R hit def /n C P2 gradient normalized def /V2 n V1 reflection def /P3 P2 V2 C R hit def /y2* P2 V2 [1 0 x1 neg] line-intersection def /y2 y2* 1 get def newpath x1 y1 moveto x1 y2 lineto stroke /x1 x1 0.05 add def } repeat 3 3 1 0 360 arc clip /q P2 0 get P1 0 get sub .05 add 20 div def /dx dx y add def /x1 2 q sub def } repeat grestore %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% gsave /dx 3.05 def /x1 2 def /m 1 def 19 { 42 { /x 3.05 def /y .95 19 div .0001 sub def newpath 0 dx moveto /P0 [0 dx] def /V0 [1 0] def /C [3 3] def /R 1 def /P1 P0 V0 C R hit def /n C P1 gradient normalized def /V1 n V0 1.33 refraction def /P2 P1 V1 C R hit def /y1* P1 V1 [1 0 x1 neg] line-intersection def /y1 y1* 1 get def /x dx y add def 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 /n C P1 gradient normalized def /V1 n V0 1.33 refraction def /P2 P1 V1 C R hit def /y2* P1 V1 [1 0 x1 neg] line-intersection def /y2 y2* 1 get def newpath x1 y1 moveto x1 y2 lineto stroke /x1 x1 0.05 add def } repeat 3 3 1 0 360 arc clip /q P2 0 get P1 0 get sub .05 add 20 div def /dx dx y add def /x1 2 q sub def } repeat grestore grestore