Hyperfocal distance

From Optical Imaging and Spectroscopy (Wiley - OSA 2009)
By David J. Brady
www.opticalimaging.org
Figure 10.1

Needs["Rayica`Rayica`"];

F=1;
Np=2;
CoC=0.10;
zH=F^2/(CoC Np);
zi=zH F/(zH-F);

zH

light=GridOfRays[{F/Np,F/Np},NumberOfRays->5];
biglens=Move[PlanoConvexLens[F,F/Np,.2,"Big Lens"],zH];
screen=Move[Screen[F/Np],zi+zH];
sys=AnalyzeSystem[{light,biglens,screen},PlotType->Full3D,ColorView->{RayLength,GrayLevel}];

light=ConeOfRays[(180/Pi)( F/(2 zH Np)),NumberOfRays->15];
biglens=Move[PlanoConvexLens[F,F/Np,.2,"Big Lens"],zH];
screen=Move[Screen[F/Np],zi+zH];
sys=AnalyzeSystem[{light,biglens,screen},PlotType->Full3D,ColorView->{RayLength,GrayLevel}];

light=ConeOfRays[(180/Pi)( F/(zH Np)),NumberOfRays->15];
biglens=Move[PlanoConvexLens[F,F/Np,.2,"Big Lens"],zH/2];
screen=Move[Screen[F/Np],zi+zH/2];
sys=AnalyzeSystem[{light,biglens,screen},PlotType->Full3D,ColorView->{RayLength,GrayLevel}];

light1=GridOfRays[{F/Np,F/Np},NumberOfRays->5];
light2=Move[ConeOfRays[(180/Pi)( F/(2 zH Np)),NumberOfRays->15],{0,F}];
light3=Move[ConeOfRays[(180/Pi)( F/(zH Np)),NumberOfRays->15],{zH/2,2F}];
lens1=Move[PlanoConvexLens[F,F/Np,.07,"Big Lens"],zH];
lens2=Move[PlanoConvexLens[F,F/Np,.07,"Big Lens"],{zH,F}];
lens3=Move[PlanoConvexLens[F,F/Np,.07,"Big Lens"],{zH,2F}];
screen1=Move[Screen[F/Np],zi+zH];
screen2=Move[Screen[F/Np],{zi+zH,F}];
screen3=Move[Screen[F/Np],{zi+zH,2F}];
sys=AnalyzeSystem[{light1, light2, light3,lens1,lens2,lens3,screen1,screen2,screen3},PlotType->Full3D,ColorView->{RayLength,GrayLevel}];

light=GridOfRays[F/Np,NumberOfRays->3];
biglens=Move[PlanoConvexLens[F,F/Np,.07],zH];
screen=Move[Screen[F/Np],zi+zH];
sys=AnalyzeSystem[{light,biglens,screen},PlotType->SideView,Axes->False,ColorView->{RayLength,GrayLevel},ShowLabels->False];

((F^2)/(Subscript[Nz, H]))