%! (lenses.inc) run 48 dup scale 0.01 setlinewidth 2 2.5 translate 0 0 0 setrgbcolor %show axis gsave 2 2 translate -3.5 0 moveto 6 0 lineto stroke newpath 0 -3 moveto 0 3 lineto stroke grestore newpath 0.8 0.8 1 setrgbcolor 2 2 1 0 360 arc fill 0 0 0 setrgbcolor 2 2 1 0 360 arc stroke newpath 0.8 0.8 1 setrgbcolor 2 2 1.5 310 50 arc 3.7 3 lineto 3.7 1 lineto closepath fill gsave 0 setgray 2 2 1.5 310 50 arc 3.7 3 lineto 3.7 1 lineto closepath stroke % red ray gsave 1 0 0 setrgbcolor /x 2.9 def /Po [0 x] def /Vo [1 0] def /P1 Po Vo [2 2] 1 hit def 0 x moveto P1 0 get P1 1 get lineto /n [2 2] P1 gradient normalized def /v1 n [1 0] 1.05 refraction def /P2 P1 v1 [2 2] 1 hit def P2 0 get P2 1 get lineto /v2 [1 0] v1 0.326 refraction def /p3 P2 v2 [2 2] 1.5 hit def p3 0 get p3 1 get lineto /v3 [1 0] v2 0.5 refraction def /p4 p3 v3 [1 0 -3.7] line-intersection def p4 0 get p4 1 get lineto /v4 [1 0] v3 1.5 refraction def /p5 p4 v4 [1 0 -16 3 div] line-intersection def p5 0 get p5 1 get lineto stroke grestore % Red Ray bottom gsave 1 0 0 setrgbcolor /x 1.1 def /Po [0 x] def /Vo [1 0] def /P1 Po Vo [2 2] 1 hit def 0 x moveto P1 0 get P1 1 get lineto /n [2 2] P1 gradient normalized def /v1 n [1 0] 1.05 refraction def /P2 P1 v1 [2 2] 1 hit def P2 0 get P2 1 get lineto /v2 [1 0] v1 0.326 refraction def /p3 P2 v2 [2 2] 1.5 hit def p3 0 get p3 1 get lineto /v3 [1 0] v2 0.5 refraction def /p4 p3 v3 [1 0 -3.7] line-intersection def p4 0 get p4 1 get lineto /v4 [1 0] v3 1.5 refraction def /p5 p4 v4 [1 0 -16 3 div] line-intersection def p5 0 get p5 1 get lineto stroke grestore % blue ray gsave 0 0 1 setrgbcolor /x 2.9 def /Po [0 x] def /Vo [1 0] def /P1 Po Vo [2 2] 1 hit def 0 x moveto P1 0 get P1 1 get lineto /n [2 2] P1 gradient normalized def /v1 n [1 0] 1.05 refraction def /P2 P1 v1 [2 2] 1 hit def P2 0 get P2 1 get lineto /v2 [1 0] v1 0.215 refraction def /p3 P2 v2 [2 2] 1.5 hit def p3 0 get p3 1 get lineto /v3 [1 0] v2 0.8 refraction def /p4 p3 v3 [1 0 -3.7] line-intersection def p4 0 get p4 1 get lineto /v4 [1 0] v3 1.9 refraction def /p5 p4 v4 [1 0 -16 3 div] line-intersection def p5 0 get p5 1 get lineto stroke grestore % blue ray bottom gsave 0 0 1 setrgbcolor /x 1.1 def /Po [0 x] def /Vo [1 0] def /P1 Po Vo [2 2] 1 hit def 0 x moveto P1 0 get P1 1 get lineto /n [2 2] P1 gradient normalized def /v1 n [1 0] 1.05 refraction def /P2 P1 v1 [2 2] 1 hit def P2 0 get P2 1 get lineto /v2 [1 0] v1 0.215 refraction def /p3 P2 v2 [2 2] 1.5 hit def p3 0 get p3 1 get lineto /v3 [1 0] v2 0.8 refraction def /p4 p3 v3 [1 0 -3.7] line-intersection def p4 0 get p4 1 get lineto /v4 [1 0] v3 1.9 refraction def /p5 p4 v4 [1 0 -16 3 div] line-intersection def p5 0 get p5 1 get lineto stroke grestore gsave /Helvetica-Bold findfont .3 scalefont setfont 0 4 moveto (Correction chormatic aberration ) show grestore gsave /Helvetica findfont .25 scalefont setfont 0.5 2.2 moveto (lens ) show grestore