{<pre>}
program pivot;
{
	Compile with "gpc pivot.pas" and run "a.out" to get
	array of angles.
}

const
	fsd=3;{field dize decimals}
	fsr=1;{field size real}
	n=1.5;{refractive index}
	r=6;{mm radius of convex surface}
	t=2.75;{mm center thickness of lens}
	delta=0.0001;{mm position step}

var 
	a,b,c,d,e:real;{rad angles}
	q,s,v:real;{mm distances}
	p:real;{mm distance from aperture to back of lens}
	pd:real;{mm distance, pivot displacement}
	x,y:real;{mm coordinates}
	error:real;{mm from circle}
	i,j:integer;
	
begin
	for i:=-15 to 15 do begin
		if i<>0 then begin
			a:=i/100;
			write(a*1000:fsr:fsd,' ');
			for j:=0 to 10 do begin
				p:=j/5;
				b:=arcsin(sin(a)/n);
				q:=p*arcsin(a);
				x:=p+t+delta;
				repeat
					x:=x-delta/2;
					y:=q+(x-p)*sin(b)/cos(b);
					error:=sqrt(sqr(x+r-p-t)+sqr(y)) - r;
				until abs(error) < delta;
				s:=y;
				v:=x-p;
				c:=arcsin(s/r);
				d:=b-c;
				e:=arcsin(n*sin(d));
				pd:=p+v-s*cos(c+e)/sin(c+e);
				write(pd*1000:fsr:fsd,' ');
			end;
			writeln;
		end;
	end;
end.

