## How to calculate the focusing dial of lens...

> restart;
> with(plots); with(StringTools); with(plottools);
> INF := 999999999999999999999;
999999999999999999999
> NULL;
> MinoxAngle := 200; MikromaAngle := 350; MinicordAngle := 290; GamiAngle := 280; GamiFocal := 0.25e-1; SummitarDial := [1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2, 2.2, 3, 4, 5, 6, 7, 10, 20, INF]; Minox35MLDial := [3, 4, 6, 10, 20, INF]; Minox35Angle := 100; MinicordDial := [.35, .4, .5, .6, .7, .8, .9, 1, 1.2, 1.5, 2, 3, 4, 8, INF]; Mini := nops(MinicordDial); MikromaDial := [.5, .6, .7, .8, .9, 1, 1.2, 1.5, 2, 2.5, 3.5, 6, INF]; MinoxLXDial := [.2, .24, .3, .4, .6, 1, 2, 30]; MinoxLXAngle := 270; GamiDial := [.5, .6, .7, .8, 1, 1.2, 1.5, 2, 3, 5, 99990000000000]; MinoxBDial := [8*(1/12), 10*(1/12), 1, 1.5, 2, 3, 6, INF]; MinoxBAngle := 270;
200
350
290
280
0.025
[1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2, 2.2, 3, 4, 5, 6, 7, 10,

20, 999999999999999999999]
[3, 4, 6, 10, 20, 999999999999999999999]
100
[0.35, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.5, 2, 3, 4, 8,

999999999999999999999]
15
[0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.5, 2, 2.5, 3.5, 6,

999999999999999999999]
[0.2, 0.24, 0.3, 0.4, 0.6, 1, 2, 30]
270
[0.5, 0.6, 0.7, 0.8, 1, 1.2, 1.5, 2, 3, 5, 99990000000000]
[2  5                                        ]
[-, -, 1, 1.5, 2, 3, 6, 999999999999999999999]
[3  6                                        ]
270

> NULL;
> dd := GamiDial; N := nops(dd); dstx := [seq(convert(dd[i], string), i = 1 .. N)];
[0.5, 0.6, 0.7, 0.8, 1, 1.2, 1.5, 2, 3, 5, 99990000000000]
11
[".5", ".6", ".7", ".8", "1", "1.2", "1.5", "2", "3", "5",

"99990000000000"]
> NULL;
> MinicordAngle := 290;
290
> NULL;

> LensDial := proc (LensName, focal, Angle, scale, dr) local p1, p2, p3, p8, pk, pt, rk, R, R2, R3, Rc, c1, ds2; R := 1600; R2 := 1400; R3 := 1200; Rc := 1500; CaptionTail1 := "EXTENSION ANGLE"; CaptionTail2 := "LENS FOCUSING DIAL"; Caption1 := Join([LensName, CaptionTail1]); Caption2 := Join([LensName, CaptionTail2]); q := 180/Pi; rotation := 90; dir := dr; ds := scale; N := nops(ds); dstx := [seq(convert(ds[i], string), i = 1 .. N)]; ds2 := subs(dstx[N] = infinity, dstx); MaxAngle := Angle; f := focal; degr := -(-ds[1]+f)*Angle/(D-f)+rotation; g1 := degr/q; for j to N do deg[j] := subs(D = ds[j], degr) end do; for i to N do rdn[i] := evalf(deg[i]/q); xv[i] := R2*cos(rdn[i]); yv[i] := R2*sin(rdn[i]); wx[i] := R3*cos(rdn[i]); wy[i] := R3*sin(rdn[i]) end do; pk := {seq([ds[i], deg[i]], i = 1 .. N)}; rk := {seq([dir*xv[i], yv[i]], i = 1 .. N)}; txt := {seq([dir*wx[i], wy[i], ds2[i]], i = 1 .. N)}; p3 := pointplot(rk, caption = Caption2, captionfont = ["ROMAN", bold, 22], symbol = solidcircle, symbolsize = 15, color = red, axes = none); c1 := circle([0, 0], Rc, thickness = 8); p8 := textplot(txt, 'font' = ["times", "bold", 14]); display(p3, c1, p8, scaling = constrained) end proc;
Warning, `CaptionTail1` is implicitly declared local to procedure `LensDial`
Warning, `CaptionTail2` is implicitly declared local to procedure `LensDial`
Warning, `Caption1` is implicitly declared local to procedure `LensDial`
Warning, `Caption2` is implicitly declared local to procedure `LensDial`
Warning, `q` is implicitly declared local to procedure `LensDial`
Warning, `rotation` is implicitly declared local to procedure `LensDial`
Warning, `dir` is implicitly declared local to procedure `LensDial`
Warning, `ds` is implicitly declared local to procedure `LensDial`
Warning, `N` is implicitly declared local to procedure `LensDial`
Warning, `dstx` is implicitly declared local to procedure `LensDial`
Warning, `MaxAngle` is implicitly declared local to procedure `LensDial`
Warning, `f` is implicitly declared local to procedure `LensDial`
Warning, `degr` is implicitly declared local to procedure `LensDial`
Warning, `g1` is implicitly declared local to procedure `LensDial`
Warning, `j` is implicitly declared local to procedure `LensDial`
Warning, `deg` is implicitly declared local to procedure `LensDial`
Warning, `i` is implicitly declared local to procedure `LensDial`
Warning, `rdn` is implicitly declared local to procedure `LensDial`
Warning, `xv` is implicitly declared local to procedure `LensDial`
Warning, `yv` is implicitly declared local to procedure `LensDial`
Warning, `wx` is implicitly declared local to procedure `LensDial`
Warning, `wy` is implicitly declared local to procedure `LensDial`
Warning, `txt` is implicitly declared local to procedure `LensDial`
> ;
> NULL;
> LensDial("MEOPTA MICROMA  HELGOR 25mm", 0.25e-1, 350, MikromaDial, 1);

> LensDial("GOERZ MINICORD  25mm", 0.25e-1, 335, MinicordDial, 1);

> ;
> LensDial("MINOX LX MINOX 15mm", 0.15e-1, 270, MinoxLXDial, 1);

> LensDial("GAMI ESAMITAR 25mm", 0.25e-1, 290, GamiDial, 1);

## Precision Depth of Field of Optical Lens

by: Maple

#Most  dediction of  depth of field of optical lens  involves various simplification,  hence cannot be used  for  close up photography.  With Maple, it is easy to obtain  precise   Depth of field  formuar for optical lens  without  any simplification

> restart; h := H = F^2/(N*coc)+F; E0 := 1/d+1/D0 = 1/F; E1 := 1/(d+e)+1/D2 = 1/F; E2 := a/(d+e) = coc/delta; E3 := a = F/N; eq := {E0, E1, E2, E3, h}; var := {D2, N, coc, d, delta}; e := -delta; sol1 := solve(eq, var); t1 := op(sol1)[1]; Dfar := op(t1)[2]; e := delta; sol2 := solve(eq, var); t2 := op(sol2)[1]; Dnear := op(t2)[2];

>

>
>

>
>
>