Kidger triplet
rd = [ 0 18.609 460.967 -29.934 18.605 0 67.594 -22.162 0]; th = [ 0 2.5 5.157 1 1.207 4.007 2.5 41.60525 0]; rn = [ 1 1.620408 1 1.636355 1 1 1.620408 1 1]; sa = [ 0 7 7 5.1 5.1 5 6.2 6.2 0]; gn = char('SK16','F6','SK16'); ast = 6; pya = [50/8 0]; pyc = [-5.12787 tan(22*pi/180)];
This is the paraxial raytrace from Kidger
cv = curvature(rd); pya = parax(pya,cv,th,rn); pyc = parax(pyc,cv,th,rn); [pya pyc]
ans = 6.2500 0 -5.1279 0.4040 6.2500 -0.1286 -5.1279 0.3548 5.9285 -0.2004 -4.2408 0.5693 4.8951 -0.0589 -1.3050 0.3309 4.8362 0.0691 -0.9741 0.5082 4.9196 0.0691 -0.3606 0.5082 5.1965 0.0132 1.6758 0.3041 5.2295 -0.1250 2.4361 0.4246 0.0287 -0.1250 20.1034 0.4246
This paraxial raytrace sets the stop per the lens drawing/specifications
k = -pyc(ast,1)/pya(ast,1) pyc = pyc + k*pya; [pya pyc]
k = 0.0733 ans = 6.2500 0 -4.6697 0.4040 6.2500 -0.1286 -4.6697 0.3454 5.9285 -0.2004 -3.8062 0.5546 4.8951 -0.0589 -0.9462 0.3266 4.8362 0.0691 -0.6195 0.5133 4.9196 0.0691 0 0.5133 5.1965 0.0132 2.0567 0.3051 5.2295 -0.1250 2.8195 0.4155 0.0287 -0.1250 20.1055 0.4155
Seidel wavefront coefficients
ford(pya, pyc, cv, th, rn, 0.58756e-3);
L = 2.5252 W = 0 0 0 0 0 11.9025 21.7012 9.8917 60.7667 55.3965 5.3684 -62.5597 182.2553 88.8742 -517.8351 -22.6766 146.1077 -235.3472 -152.9207 492.6427 -11.7029 -68.2875 -99.6162 -106.5180 -310.7718 0 0 0 0 0 1.4354 21.3874 79.6660 55.2008 411.2352 19.3016 -61.6536 49.2338 71.4887 -114.1754 3.6285 -3.3044 -13.9165 16.8916 16.4921 W040 W131 W222 W220 W311 3.63 -3.30 -13.92 16.89 16.49
load oldschott;
% look-up position of each glass in Schott glass table n = size(gn); for k=1:n(1) idx(k) = strmatch(gn(k,:),schott96.name); end
wvln = linspace(0.4,0.7,21); % calculate refractive index as function of wavelength for k=1:length(idx) n = idx(k); rg(k,:) = sellmeier(schott96.disperse(n,:),wvln); end
Find focus shift vs. wavelength
dz = zeros(size(wvln)); rnsave = rn; n = length(rn); lp = find(rn>1); % use paraxial trace to find focus shift vs. wavelength for k=1:length(wvln) for m = 1:length(lp) rn(lp(m)) = rg(m,k); end py = parax(pya,cv,th,rn); dz(k) = -py(n,1)/py(n,2); end rn = rnsave;
plot(dz,wvln,'k','LineWidth',2); grid xlabel('focus shift'); ylabel('wavelength ( \mum)');
