
from CalculImage import * 
cat = CatalogueVerre() 
n1 = Vide() 
n2 = cat.verre['N-BK7'] 
rc = 1033.0
r = 30.0
dioptre1 = Spherique(0,1.0/rc,n1,n2,r)
dioptre2 = Spherique(2,-1.0/rc,n2,n1,r)
sys = SystemeCentre()
sys.ajouterListe([dioptre1,dioptre2])
PObjet = Position(0)
PObjet.infini = True
sys.matriceTransfert('d')
PImage = sys.image(PObjet,'d')
zi = PImage.z
            

zs = dioptre2.z+0.1
R = zi-zs 
sphereImage = SphereImage(zs,[0,0,zi])
sys.ajouter(sphereImage)
            

cal = CalculImage(sys)
Nx = Ny = 400
np = 200
r = 200.0
[P,M,Phi] = cal.surfacePhase(PObjet,0,'d',r,0,np,Nx)
clf()
xlabel('x')
ylabel('y')
imshow(Phi)
colorbar()
            

from TfdImage import *
from numpy.fft import fft2, ifft2
TFP=matriceCentre(fft2(P))
I=matricePuissance(TFP)
Lambda = cal.Lambda['d']
imI = matriceImage(I,2.0,[1.0,1.0,1.0])
figure()
xScale = Nx/(2*r)*0.5*Lambda*1e-6*R
imshow(imI,extent=[-xScale,xScale,-xScale,xScale])
xlabel('x (mm)')
ylabel('y (mm)')
            

zi=1000
sphereImage.PC = [0,0,zi]
[P,M,Phi] = cal.surfacePhase(PObjet,0,'d',r,0,np,Nx)
TFP=matriceCentre(fft2(P))
I=matricePuissance(TFP)
Lambda = cal.Lambda['d']
imI = matriceImage(I,2.0,[1.0,1.0,1.0])
figure()
xScale = Nx/(2*r)*0.5*Lambda*1e-6*R
imshow(imI,extent=[-xScale,xScale,-xScale,xScale])
xlabel('x (mm)')
ylabel('y (mm)')
            

n1 = Vide()
n2 = Vide()
n2.negatif()
r = 100.0
c = -1.0/2000
miroir = Conique(0,c,0.0,n1,n2,r)
sys = SystemeCentre()
sys.ajouter(miroir)
sys.ni.negatif()
             

PObjet = Position(0)
PObjet.infini = True
zi = -1000.0
             

zs = -10.0
R = abs(zi-zs)
sphereImage = SphereImage(zs,[0,0,zi])
sys.ajouter(sphereImage)
planImage = PlanImage(zi,200)
sys.ajouter(planImage)
             

cal = CalculImage(sys)
angle = 10
figure(figsize=(6,6))
xlabel('x')
ylabel('y')
xCentre = cal.diagrammeSpots(PObjet,angle,['d'],0,20)
rAiry = cal.airy(PObjet,'d')
grid(True)
scale=0.03
axis([-scale,scale,-scale,scale])
             

sphereImage.PC = [xCentre,0,zi]
Nx = Ny = 400
np = 200
r = 500.0
[P,M,Phi] = cal.surfacePhase(PObjet,angle,'d',r,1,np,Nx)
clf()
xlabel('x')
ylabel('y')
imshow(Phi)
colorbar()
             

TFP=matriceCentre(fft2(P))
I=matricePuissance(TFP)
Lambda = cal.Lambda['d']
imI = matriceImage(I,2.0,[1.0,1.0,1.0])
figure()
xScale = Nx/(2*r)*0.5*Lambda*1e-6*R
imshow(imI,extent=[-xScale,xScale,-xScale,xScale])
xlabel('x (mm)')
ylabel('y (mm)')
             

sphereImage.PC = [xCentre+0.05,0,zi]
[P,M,Phi] = cal.surfacePhase(PObjet,angle,'d',r,1,np,Nx)
TFP=matriceCentre(fft2(P))
I=matricePuissance(TFP)
imI = matriceImage(I,2.0,[1.0,1.0,1.0])
figure()
imshow(imI,extent=[-xScale,xScale,-xScale,xScale])
xlabel('x (mm)')
ylabel('y (mm)')
             
