• Aucun résultat trouvé

Exemple de code zpl pour trouver et tracer les pupilles d'entrée

#############################################################

#Pour t r a c e r les p u p i l l e s c o r r e c t e m e n t dans un f i c h i e r . ann , il faut donner les l i m i t e s de la f e n ê t r e graphique dans l a q u e l l e sera affichée les p u p i l l e s .

input "0,100 z",zgmin input "0,100 y",ygmax input "100,20 z",zgmax input "100,20 y",ygmin

#Exemples de v a l e u r s u t i l i s é e s pour la l e n t i l l e Double—Gauss. #zgmin = -0.6183 #ygmax = 3.7159 #zgmax = l 1.7657 #ygmin = -3.7140 zgw=zgmax—zgmin ygw=ygmax—ygmin # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #Paramètres i n i t i a u x flagdummy=0 hy=0 TIMER format 5.10 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

# V é r i f i c a t i o n si l ' o p t i o n ray—aiming est bien s é l e c t i o n n é e . Getsystemdata 1

if VEC1(19) !=2 errornumber = 1003 GOTO 1000

endif

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

#Ajoute une surface dummy avant la première r é f r a c t i o n . dummysurf=0

N=0

Label 1

#Recherche de la première surface r e f r a c t i v e if indx(N)>1.01 THEN dummysurf=N

N=N+1

if dummysurf !=0 THEN goto 2 if N>100 errornumber = 1002 GOTO 1000 endif goto 1 Label 2

#Pour le cas r é f l e c t i f , on peut e n t r e r manuellement le numéro de la s u r f a c e . #dummysurf=2 format 1.0 P r i n t "dummy = ",dummysurf format 5.10 i n s e r t dummysurf flagdummy = l

s e t s u r f a c e p r o p e r t y dummysurf, 1, "Dummy created by e n t r a c e _ p u p i l . zpl"

update

dummycomp= t h i c ( dummysurf — 1 )

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

#Choix du type de champs à t r a c e r : 0 = d i s t r i b u é uniformément avec Nbfield , 1= input angle , 2=selon field d é f i n i s .

F i e l d t y p e = 0

Nbfield=25 # s i type=0

O J O S E V V T N D O W

if F i e l d t y p e = = l then Nbfield = l

if F i e l d t y p e = = 2 then Nbfield=NFLD() DECLARE angle .double ,1 , Nbfield

135

DECLARE Angle_Deriv , double ,1 , N b f i e l d - 1 a n g l e i n p u t = 0

if F i e l d t y p e = = l then Input "Angle?" , a n g l e i n p u t angle ( l ) = a n g l e i n p u t

#############################################################

#Choix du nombre de point à imager dans le STOP (7 donne de bons r é s u t a t s ) . Ce nombre d e v r a i t ê t r e impair pour imager le centre du STOP.

Input "Nombre de points du s t o p " , N b s t o p

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

DrawTAN=l

DrawDiaetAn=0 # Choix si on affiche ou pas les graphique à la fin .

WriteANGLE=0 # Choix de si on ajoute la valeur de l ' a n g l e du côté objet avec la p u p i l l e .

#Choix des incrément hx et hy. increm=0.000001

P r i n t "increm=", increm #Calcul du champ maximal.

If FTYPQ != 0 errornumber = 1000 GOTO 1000 endif Fieldmax=MAXF() hx=0 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # D é c l a r a t i o n des a r r a y s .

DECLARE imaX, double , 2 , 2 * Nbstop .Nbfield DECLARE imaY , double ,2 ,2* Nbstop , Nbfield DECLARE imaZ, double , 2 , 2 * Nbstop .Nbfield DECLARE Diametrepupil , double , 1 , Nbfield DECLARE Anglepupil , double ,1 , Nbfield DECLARE XcentrePupil .double ,1 .Nbfield

DECLARE X c e n t r e P u p i l _ d e r i v .double ,1 , N b f i e l d - l DECLARE YcentrePupil .double ,1 .Nbfield

DECLARE Y c e n t r e P u p i l _ d e r i v .double ,1 , N b f i e l d - l DECLARE ZcentrePupil .double ,1 .Nbfield

DECLARE Z c e n t r e P u p i l _ d e r i v .double ,1 , N b f i e l d - l DECLARE RcentrePupil .double ,1 , Nbfield

DECLARE test , double ,1 , Nbfield

#############################################################

#Calcul des p o s i t i o n s des p u p i l l e s pour chaque champ. Del ta s top =21 ( Nbstop - 1 )

D e l t a f i e l d = l/(Nbfield - 1 ) for j = 1, Nbfield ,1 if f i e l d t y p e = = 0 Hy=(j - l ) * D e l t a f i e l d angle ( j )=Hy*Fieldmax endif if f i e l d t y p e == 1 hy= angle (1 ) /Fieldmax

endif # i n u t i l si on u t i l i s e Nbfield au lieu de angle if f i e l d t y p e ==2 hy=FLDY(j)/Fieldmax angle (j)=FLDY(j) P r i n t " a n g l e j = " , a n g l e ( j ) endif

# C o r r e c t i o n sur l ' i n c r é m e n t pour q u ' i l soit plus p e t i t aux grands angles , ou le champs varie

rapidement , mais plus grand aux f a i b l e s angles , où il y a des e r r e u r s numériques si trop p e t i t

if a b s o ( a n g l e ( j if a b s o ( a n g l e ( j if a b s o ( a n g l e ( j if a b s o ( a n g l e ( j if a b s o ( a n g l e ( j if a b s o ( a n g l e ( j if a b s o ( a n g l e ( j )) <= 10 then ajust = l )) >10 then ajust=5 )) >20 then ajust = 10 )) >30 then ajust=20 )) >40 then ajust=40 )) >60 then ajust = 100 )) >80 then ajust=1000 P r i n t " ajust =", ajust incre = i n c r e m / ( l + a j u s t * an gle ( j )) # i n c r e = increm # pour d é s a c t i v e r c e t t e c o r r e c t i o n If Hy >=1 then Hy=l-10*incre P r i n t "hy = ",hy FOR i = 1 , Nbstop , 1 Px=0 P y = - l + ( i - l ) * D e l t a s t o p

# i f abso(py)<0.00000000001 then py=0.0001 P r i n t " P y = ",Py

137

GOSUB imaxyz #Appel de la sous fonction imaxyz (plus bas dans le code) qui

détermine les p o s i t i o n s de le l ' i m a g e d'un point du STOP dans l ' e s p a c e o b j e t .

P r i n t "L'image de ce point t a n g a n t i e l est à x = ",imaX(i , j ) , ", y = " , i m a Y ( i , j ) ," et z = ", imaZ(i , j )

Next

#Calcul de p l u s i e u r s données u t i l e s .

Diametrepupil (j ) = sqrt ((imaZ(l , j )—imaz (Nbstop , j ) ) *( imaZ(l , j )—imaz (Nbstop , j ) )+(imaY(l , j )—imaY( Nbstop , j ))*(imaY(l ,j )-imaY(Nbstop , j ) ) )

A n g l e p u p i l ( j ) =57.295780* at an ((imaZ(l , j )—imaz (Nbstop , j ) ) / ( i m a Y ( l , j )-imaY( Nbstop , j ) ) )

X c e n t r e P u p i l ( j )=ImaX(( Nbstop+ l ) / 2 , j ) Y c e n t r e P u p i l ( j )=ImaY(( Nbstop + l ) / 2 , j ) Z c e n t r e P u p i l ( j )=ImaZ(( Nbstop + l ) / 2 ,j ) P r i n t " z c e n t r e ( J ) = " , Z c e n t r e p u p i l ( j )

Rx=(ImaX( Nbstop + 1/2,j )-ImaX(( Nbstop + 1) 12 ,1) ) *(ImaX(( Nbstop + l ) / 2 , j ) - I m a X ( (Nbstop + 1 ) / 2 , 1 ) )

Ry=(ImaY( Nbstop +112 , j )-ImaY (( Nbstop +1 ) 12 ,1 ) ) *(ImaY ( ( Nbstop + l ) / 2 , j ) - I m a Y ( (Nbstop + 1 ) / 2 , 1 ) )

Rz=(ImaZ( Nbstop + 1 / 2 , j ) - I m a Z ( ( Nbstop + 1 )/2 , l ) ) * ( I m a Z ( ( Nbstop + 1 ) / 2 , j ) - I m a Z ( (Nbstop+ 1 ) / 2 , 1 ) )

RcentrePupil ( j ) = sqrt (Rx+Ry+Rz) Next

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

# Calcul des données de dérivé . for j = 1 , N b f i e l d - 1 , 1 Angle_Deriv ( j ) = ( a n g l e ( j + l ) + a n g l e ( j ) ) / 2 X c e n t r e P u p i l _ d e r i v ( j ) =(ImaX(( Nbstop+ l ) / 2 , j + l ) - I m a X ( ( Nbstop + 1 )/2 , j ) ) /( angle (j + l ) - a n g l e ( j ) ) Y c e n t r e P u p i l _ d e r i v ( j )=(ImaY(( Nbstop + l ) / 2 , J + l ) - I m a Y ( ( Nbstop + 1) /2 , j )) /( angle (j + l ) - a n g l e ( j ) ) Z c e n t r e P u p i l _ d e r i v ( j ) =(ImaZ(( Nbstop + 1) 12 , j + l ) - I m a Z ( ( Nbstop + 1 )/2 ,j ) ) / ( a n g l e ( j + l ) - a n g l e ( j ) ) Next # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

#Début du t r a ç a g e des graphiques .

ImaXmax=ImaX ( 1 , 1 ) ImaXmin=ImaX ( 1 , 1 ) ImaYmax=ImaY ( 1 , 1 ) ImaYmin=ImaY ( 1 , 1 ) ImaZmax=ImaZ ( 1 , 1 ) ImaZmin=ImaZ(l ,1) for j = l , N b f i e l d ,1 for i = 1 ,Nbstop , 1

If ImaX( i , j )>ImaXmax then ImaXmax=ImaX( i , j ) If ImaX(i , j )<ImaXmin then ImaXmin=ImaX( i , j ) If ImaY( i , j )>ImaYmax then ImaYmax=ImaY( i , j ) If ImaY(i , j )<ImaYmin then ImaYmin=ImaY( i , j ) If ImaZ ( i , j )>ImaZmax then ImaZmax=ImaZ ( i , j ) If ImaZ(i , j )<ImaZmin then ImaZmin=ImaZ( i , j ) Next Next ImaXwidth=ImaXmax—ImaXmin ImaYwidth=ImaYmax—ImaYmin ImaZwidth=ImaZmax—ImaZmin # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

#Pour t r a c e r les l i g n e s dans la f e n ê t r e graphique t a n g e n t i e l . If DrawTAN==l g r a p h i e s noframe xmx=xmax ( ) xmn=xmin () ymx=ymax ( ) ymn=ymin () x w i d t h =xmx—xmn y w i d t h =ymx—ymn gtext x m x / 2 , 1 0 0 , 0 , " T a n g a n t i e l " for j = l , N b f i e l d ,1 Color j # r a n d ( 2 4 ) if Writeangle ==1 ImaZlj=Imaz(l , j ) ImaYlj=ImaY(l , j ) format 2.2 F i e l d a n g l e j $ = $ S T R ( a n g l e ( j ))

gtext (imaZlj-ImaZmin) *(Xwidth *0.9) /ImaZwidth+0.05* Xwidth-lOO.ywidth -((imaYlj-ImaYmin) *( Ywidth *0.9) / ImaYwidth+0.05*Ywidth) -150,0,"F=" F i e l d a n g l e j $

139

D i a p u p i l j $ = $ S T R ( d i a m e t r e p u p i l ( j ))

gtext (imaZlj-ImaZmin) *(Xwidth *0.9) /ImaZwidth+0.05* Xwidth-lOO.ywidth -((imaYlj-ImaYmin) *( Ywidth *0.9) / ImaYwidth+0.05*Ywidth)+0,0,"D="Diapupilj$

Angpupilj$=$STR( A n g l e p u p i l ( j ))

gtext (imaZlj-ImaZmin) *(Xwidth*0.9) /ImaZwidth+0.05* Xwidth - 100,ywidth -((imaYlj-ImaYmin) *( Ywidth *0.9) / ImaYwidth+0.05* Ywidth ) + l 50,0 ,"A=" AngpupiljS

endif

for i = 1 ,Nbstop —1,1

## Lignes é t i r é e s pour r e m p l i r l ' é c r a n #LineX=(imaZ(i , j )-ImaZmin) *(Xwidth *0.9) /

ImaZwidth+0.05* Xwidth

#LineY=ywidth —((imaY(i , j )—ImaYmin) *( Ywidth *0.9) / ImaYwidth +0.05* Ywidth )

#LineXp = (imaZ( i + 1 , j )-ImaZmin) *(Xwidth *0.9) / ImaZwidth+0.05* Xwidth

#LineYp=ywidth -((imaY( i + 1 ,j )—ImaYmin) *( Ywidth *0.9)/ImaYwidth+0.05* Ywidth)

## Lignes avec dimensions o r i g i n a l e s . drawcons = 100

LineX = (imaZ( i , j )—ImaZmin )*drawcons+0.05* Xwidth

LineY=ywidth —(((imaY(i , j )—ImaYmin) )*drawcons +0.05*Ywidth)

LineXp = (imaZ( i + 1 , j )—ImaZmin ) *drawcons+0.05* Xwidth

LineYp=ywidth —(((imaY( i + 1 , j )—ImaYmin) )* drawcons+0.05* Ywidth)

p r i n t l i n e X , " ",LineY," ",LineXp," ",LineYp # P r i n t "X, Y, Xp,Yp=" ,j , LineX , " ",LineY," »,

LineXp," ".LineYp

Line LineX , LineY , LineXp , LineYp Next

Next endif

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

#Pour t r a c e r p l u s i e u r s données i n t é r e s s a n t e s en fonction de field .

PLOT NEW

PLOT TITLE, "Angle de la p u p i l l e d ' e n t r é e en foncton de 1' angle du champ de vue"

PLOT TITLEX, "Angle du champ de vue ( d e g ) " PLOT TITLEY, "Angle de la p u p i l l e ( d e g ) "

PLOT DATA, a n g l e , Anglepupil , Nbfield, 0, 0, 1 PLOT GO

PLOT NEW

PLOT TITLE, "Diamètre de la p u p i l l e d ' e n t r é e en foncton de 1' angle du champ de vue"

PLOT TITLEX, "Angle du champ de vue ( d e g ) "

PLOT TITLEY, "Diamètre de la p u p i l l e ( u n i t é s de la l e n t i l l e ) " PLOT DATA, a n g l e , diametrepupil , Nbfield, 0, 0, 1

PLOT GO PLOT NEW

PLOT TITLE, " P o s i t i o n X en foncton de l ' a n g l e du champ de vue PLOT TITLEX, "Angle du champ de vue ( d e g ) "

PLOT TITLEY, " P o s i t i o n X"

PLOT DATA, a n g l e , XcentrePupil , Nbfield, 0, 0, 1 PLOT GO

PLOT NEW

PLOT TITLE, " P o s i t i o n Y en foncton de l ' a n g l e du champ de vue PLOT TITLEX, "Angle du champ de vue ( d e g ) "

PLOT TITLEY, " P o s i t i o n Y"

PLOT DATA, a n g l e , YcentrePupil , Nbfield, 0, 0, 1 PLOT GO

PLOT NEW

PLOT TITLE, " P o s i t i o n Z en foncton de l ' a n g l e du champ de vue PLOT TITLEX, "Angle du champ de vue ( d e g ) "

PLOT TITLEY, " P o s i t i o n Z"

PLOT DATA, a n g l e , ZcentrePupil , Nbfield, 0, 0, 1 PLOT GO

141

PLOT NEW

PLOT TITLE, " P o s i t i o n R en foncton de l ' a n g l e du champ de vue PLOT TITLEX, "Angle du champ de vue ( d e g ) "

PLOT TITLEY, " P o s i t i o n R"

PLOT DATA, angle , RcentrePupil , Nbfield , 0 , 0 , 1 PLOT GO

PLOT NEW

PLOT TITLE, "Derive Y en foncton de l ' a n g l e du champ de vue" PLOT TITLEX, "Angle du champ de vue ( d e g ) "

PLOT TITLEY, "Derive Y"

PLOT DATA, angle_deriv , Y c e n t r e P u p i l _ d e r i v , N b f i e l d - 1 , 0, 0, 1

PLOT GO PLOT NEW

PLOT TITLE, "Derive Z en foncton de l ' a n g l e du champ de vue" PLOT TITLEX, "Angle du champ de vue ( d e g ) "

PLOT TITLEY, "Derive Z"

PLOT DATA, angle_deriv , Z c e n t r e P u p i l _ d e r i v , Nbfield—1, 0, 0, 1 PLOT GO endif # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Création du f i c h i e r p u p i l l e . a n n Output p u p i l l e , ann for j = l , N b f i e l d ,1 for i = 1 ,Nbstop —1,1

LinegX = ((imaZ(i , j )—zgmin) /zgw) *100 LinegY = ((imaY(i , j )-ygmin)/ygw) *80+20 LinegXp = ((imaZ( i + 1 , j )—zgmin ) /zgw) *100 LinegYp = ((imaY( i +1 ,j )-ygmin) /ygw) *80+20

p r i n t " l i n e ", l i n e g X , " ",LinegY," " , LinegXp ," ",LinegYp Next Next #Fin de la c r é a t i o n du f i c h i e r p u p i l l e . a n n . # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # OUTPUT SCREEN

# Fin normalle de 1 ' exécution Label 100

PRINT "Elapsed time ", ETIMQ , " s e c o n d s . " if flagdummy==l then d e l e t e dummysurf end

# Fin du s c r i p t s ' i l y a une e r r e u r Label 1000

if flagdummy==l then d e l e t e dummysurf

if errornumber == 1000 then Print "Le champ n ' e s t pas défini par object a n g l e "

if errornumber == 1001 then Print "Erreur de t r a c é de rayons" if errornumber == 1002 then P r i n t "Pas trouvé de surface

r e f r a c t i v e "

if errornumber == 1003 then P r i n t "On doit u t i l i s e r Ray Aiming réel pour que ça fonctionne b i e n . "

end

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

###################### SUB FUNCTION #########################

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

# Fonction avec e n t r é e hx, hy, px, py, i et j qui donne les v e c t e u r s i m a X ( i , j ) , i m a Y ( i , j ) et i m a Z ( i , j ) SUB imaxyz if s a g i t a1 == 0 IncreX=0 IncreY = Incre endif If s a g i t a l == 1 IncreX=Incre IncreY=0 endif

RAYTRACE hx-increX , hy-increY , px, py IF (RAYEO) errornumber = 1001 GOTO 1000 endif ylowerA=RAGY( dummysurf) xlowerA=RAGX( dummysurf) ZlowerA=RAGZ( dummysurf) P r i n t y l o w e r a , " " , x l o w e r a , " " ,ZlowerA RAYTRACE hx+increX , hy+increY , px, py

143 IF (RAYEO) errornumber = 1001 GOTO 1000 endif yupperA=RAGY( dummysurf) xupperA=RAGX( dummysurf) distance Y A=yupper A—y lower A distanceXA=xupperA— XlowerA

distanceRA=sqrt(distanceXA*distanceXA + d i s t a n c e y a * d i s t a n c e y a ) s e t s u r f a c e p r o p e r t y dummysurf— 1,3 ,dummycomp+100

s e t s u r f a c e p r o p e r t y dummysurf,3, —100 RAYTRACE hx—increX , hy—increY , px , py

IF (RAYEO) errornumber = 1001 GOTO 1000 endif ylowerB=RAGY( dummysurf) xlowerB=RAGX( dummysurf ) zlowerB=RAGZ( dummysurf) ##############vérif vrai d i s t a n c e z###### vraiZ = zlowerB—zlowerA P r i n t " v r a i Z = " , V r a i Z P r i n t ylowerb," " . x l o w e r b , " ",zlowerB RAYTRACE hx+increX , hy+increY , px, py

IF (RAYEO) err or number = 1001 GOTO 1000 endif yupperB=RAGY( dummysurf) xupperB=RAGX( dummysurf) dis tance YB=yupperB— ylowerB distanceXB=xupperB—xlowerB

distanceRB = sqrt (distanceXB*distanceXB + distanceyB * d i s t a n c e y B ) if s a g i t a i ==0 dummyZminC=100*distanceYA /( distanceYA—distanceYB ) endif if s a g i t a 1 == 1 dummyZminC=100*distanceXA /( distanceXA—distanceXB ) endif

t o u j o u r s . À modifier par i t é r a t i o n numériques on veut un point hors de l ' a x e t a n g e n t i e l ou s a g i t t a l . . .

s e t s u r f a c e p r o p e r t y dummysurf— 1,3 ,dummycomp+dummyZminC s e t s u r f a c e p r o p e r t y dummysurf, 3, - dummy ZminC

RAYTRACE hx—increX , hy—increY , px , py IF (RAYEO) errornumber = 1001 GOTO 1000 endif ylowerC=RAGY( dummysurf ) xlowerC=RAGX( dummysurf ) zlowerC=RAGZ( dummysurf) P r i n t ylowerC," " , x l o w e r C , " ",zlowerC RAYTRACE hx+increX , hy+increY , px, py

IF (RAYEO) errornumber = 1001 GOTO 1000 endif yupperC=RAGY( dummysurf) XupperC=RAGX( dummysurf ) dis tance YC=yupperC— ylowerC distanceXC=XupperC—XlowerC

distanceRC = s q r t ( d i s t a n c e X C * d i s t a n c e X C + d i s t a n c e y C * d i s t a n c e y C ) # # # # # # # I t é r a t i o n pour D

if s a g i t a i ==0

dummyZminD=dummyZminC* distanceYA /( distanceYA—distanceYC ) # P r i n t dummyZminD endif if s a g i t a l == 1 dummyZminD=dummyZminC*distanceXA /( distanceXA—distanceXC ) endif s e t s u r f a c e p r o p e r t y dummysurf— 1 ,3 ,dummycomp+dummyZminD s e t s u r f a c e p r o p e r t y dummysurf,3, —dummyZminD

RAYTRACE hx-increX , hy-increY , px , py IF (RAYEO) errornumber = 1001 GOTO 1000 endif ylowerD=RAGY( dummysurf) xlowerD=RAGX( dummysurf)

145

ZlowerD=RAGZ( dummysurf)

P r i n t ylowerD," ".xlowerD," ",ZlowerD RAYTRACE hx+increX , hy+increY , px , py

IF (RAYEO) errornumber = 1001 GOTO 1000 endif yupperD=RAGY( dummysurf) XupperD=RAGX( dummysurf) di stance YD=yupperD—ylowerD distanceXD=XupperD—XlowerD

distanceRD = sqrt ( distanceXD*distanceXD + distanceyD*distanceyD ) if distanceRD >distanceRC s e t s u r f a c e p r o p e r t y dummysurf — 1,3 ,dummycomp+dummyZminC s e t s u r f a c e p r o p e r t y dummysurf,3 , — dummyZminC P r i n t "RC plus p e t i t que RD" endif #Fin de i t é r a t i o n pour D if s a g i t a l = = 0 if abso(distanceYD) >0.0000000000001 BEEP

PRINT "Les rayons ne se c r o i s e n t pas exactemnent ! " endif

endif

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

Maintenant que la dummy surface est exactement à la p o s i t i o n de l ' i m a g e , on f a i t un d e r n i e r r a y t r a c e pour e x t r a i r e les p o s i t i o n s x,y et z.

RAYTRACE hx , hy , px , py imax(i , j )=RAGX( dummysurf) imay(i , j )=RAGY( dummysurf ) imaz(i , j )=RAGZ( dummysurf)

s e t s u r f a c e p r o p e r t y dummysurf — 1,3 ,dummycomp s e t s u r f a c e p r o p e r t y dummysurf ,3 ,0

[1] R. Kingslake, A history of the photographie lens, Academic Press, 1989.

[2] W. J. Smith, E. Betensky, D. Williamson, J. C. Minano et R. J. Koshel, The past, present, and future of optical design, Proc. SPIE 6342, 63422Y, 2006.

[3] ImmerVision, Panomorph Geometrical Model Simulator, Version 1.0.0.0, ImmerVision, Montreal, Canada, 2010.

[4] G. Erdei, G. Szarvas et E. Lôrincz, Tolerancing surface accuracy of aspheric lenses used for imaging purposes, Proc. SPIE 5249, 718, 2004.

[5] WJ. Smith, Modern Optical Engineering, 3rd Edition, McGraw-Hill, Toronto, 2000. [6] R.E. Fischer, B. Tadic-Galeb et PR. Yoder, Optical system design, McGraw-Hill, 2008. [7] Camera and Imaging Products Association, Guideline for Noting Digital Camera Spe-

cifications in Catalogs - 2005, Camera and Imaging Products Association, 2005. [8] R.R. Morton, C L . Dumont et M.A. Maurer, Relationships between pixel count, alia-

sing, and limiting resolution in digital motion picture systems, SMPTE motion imaging journal 112,217-224,2003.

[9] Radiant ZEMAX LLC, ZEMAX Optical Design Program User's Manual, 2010. [10] J.E. Greivenkamp, Field guide to geometrical optics, SPIE Press, Bellingham, 2004. [11] J. Sasian, Theory of sixth-order wave aberrations, Appl. Opt. 49, p. D69-D95, 2010. [12] C. Hughes, P. Denny, E. Jones et M. Glavin, Accuracy offish-eye lens models, Appl.

Opt. 49, 3338-3347, 2010.

[13] S. Kuthirummal et S.K. Nayar, Flexible Mirror Imaging, ICCV Workshop on Omnidi- rectional Vision, 587404, 2007.

[14] GJ. Swanson, Binary Optics Technology : The Theory and Design of Multi-Level Dif- fractive Optical Elements, Massachusetts Institute of Technology Technical Report,

1989.

[15] J.M. Tamkin et T.D. Milster, Effects of structured mid-spatial frequency surface errors on image performance, Appl. Opt. 49, 6522-6536, 2010.

147

[16] J. Raja, B. Muralikrishnan, S. Fu et X. Liu, Recent advances in separation of roughness, waviness and form, Precision Engineering 26, 222-235, 2002.

[17] D.M. Aikens, J.E. DeGroote et R.N. Youngworthc, Specification and Control of Mid- Spatial Frequency Wavefront Errors in Optical Systems, in Optical Fabrication and Tes- ting, OSA Technical Digest, 2008.

[18] J.M. Tamkin, W. Dallas et T.D. Milster, Theory of point-spread function artifacts due to structured mid-spatial frequency surface errors, Appl. Opt. 49, 4814-4824, 2010. [19] J.M. Tamkin, T.D. Milster et W. Dallas, Theory of modulation transfer function artifacts

due to mid-spatial-frequency errors and its application to optical tolerancing, Appl. Opt. 49, 4825-4835, 2010.

[20] C C . Allen, Optical objective, U.S. Patent 696 788, 1902.

[21] S.K. Nayar, R. Swaminathan et J.M. Gluckman, Combined wide angle and narrow angle imaging system and method for surveillance and monitoring, U.S. Patent 6 215 519, 2001.

[22] G. Scotti, L. Marcenaro, C. Coelho, F. Selvaggi et C S . Regazzoni, Dual camera intelli- gent sensor for high definition 360 degrees surveillance, Proceedings of Vision, Image and Signal Processing 152, 250-257, 2005.

[23] P. Kortum et W. Geisler, Implementation of a foveated image coding system for image bandwidth reduction, Proc. SPIE 2657, 350,1996.

[24] B. Mellish, Movement of lenses in a zoom lens, Schéma par Bob Mellish, libre de repro- duction selon une license Creative Commons Attribution, disponible à l'adresse suivante http ://en.wikipedia.org/wiki/Image :Zoomlens2.png, 2005.

[25] D.V. Wick, Active optical zoom system, U.S. Patent 6 977 777, 2005.

[26] D.V. Wick, T. Martinez, D.M. Payne, W.C Sweatt et S.R. Restaino, Active optical zoom system, Proc. SPIE 5798, 151, 2005.

[27] D.V. Wick, T. Martinez et M.A. Kramer, Wide field-of-view imaging system using a spatial light modulator, U.S. Patent 6 421 185, 2002.

[28] T. Martinez, D. Wick, et S. Restaino, Foveated, wide field-of-view imaging system using a liquid crystal spatial light modulator, Opt. Express 8, 555-560, 2001.

[29] B.E. Bagwell, D.V. Wick, et J. Schwiegerling, Multi-spectral foveated imaging system, 2006 IEEE Aerospace Conference, 1655901, 2006.

[30] Y Suematsu et T. Hayase, An advanced vision sensor with fovea, Proceedings of the IECON '90 , 581-585, 1990.

[31] C. Moustier et B. Blanc, Method for capturing a panoramic image by means of an image sensor rectangular in shape, U.S. Patent 6 865 028, 2005.

[32] J. Gauvin, M. Doucet, M. Wang, S. Thibault et B. Blanc, Development of new fa- mily of wide-angle anamorphic lens with controlled distortion profile, Proc. SPIE 5874, 587404, 2005.

[33] S. Thibault, Novel compact panomorph lens based vision system for monitoring around a vehicle, Proc. SPIE 7003, 700321, 2008.

[34] A. Jain, Super-resolution imaging system, U.S. Patent 4 164 788, 1979.

[35] S. Borman et R. Stevenson, Super-Resolution from Image Sequences - A Review, Pro- ceedings of the 1998 Midwest Symposium on Systems and Circuits, 374-378, 1998. [36] G. Sandini, P. Questa, D. Scheffer,B. Diericks et A. MannUcci, A retina-like CMOS

sensor and its applications, Proceedings of the 2000 Sensor Array and Multichannel Signal Processing Workshop, 514-519, 2000.

[37] H. Hua et S. Liu, Dual-sensor foveated imaging system, Appl. Opt. 47, 317-327, 2008. [38] R. Tyson, Principles of Adaptive Optics, CRC Press, 3e edition, 2010.

[39] S. Tuohy, A. Bradu, A.G. Podoleanu et N. Chateau, Correcting ocular aberrations with a high stroke déformable mirror, Proc. SPIE 6627, 6627'IL, 2007.

[40] Alpao, dm52 Product datasheet, www.alpao.fr, 2011.

[41] D. Brousseau, E.F. Borra, H. Jean-Ruel, J. Parent et A. Ritcey, A magnetic liquid dé- formable mirror for high stroke and low order axially symmetrical aberrations, Opt.

Express 14, 11486-11493, 2006.

[42] D. Brousseau, E.F. Borra, M. Rochette et D. Bouffard-Landry, Linearization of the res- ponse of a 91-actuator magnetic liquid déformable mirror, Opt. Express 18, 8239-8250,

2010.

[43] F. Pardo, M.E. Simon, VA. Aksyuk, R. Ryf, W.Y-C Lai, CS. Pai, F.P. Klemens, J.F. Miner, R.A. Cirelli, E.J. Ferry, J.E. Bower, W.M. Mansfield, A. Kornblit, T.W. Sorsch, J.A. Taylor, M.R. Baker, R. Fullowan, H. Dyson, A. Gasparyan, Y Low, D. Ramsey et S. Arney, Characterization of Piston-Tip-Tilt mirror pixels for scalable SLM arrays, Proceedings of the 2006 Optical MEMS and Their Applications Conference, 2006. [44] R. Ryf, H.R. Stuart et CR. Giles, MEMS Tip Tilt and Piston mirror arrays as diffractive

optical elements, Proc. SPIE 5894, 58940C, 2005.

[45] L. Zhao, N. Bai, X. Li, L.S. Ong, Z.P. Fang et A.K. Asundi, Efficient implementation of a spatial light modulator as a diffractive optical microlens array in a digital Shack- Hartmann wavefront sensor, Appl. Opt. 45, 90-94, 2006.

[46] B.E. Bagwell, D.V. Wick et J. Schwiegerling, Multi-spectral foveated imaging system, 2006 IEEE Aerospace Conference, 1655901, 2006.

[47] Holoeye, Lc2002 Spatial Light Modulator Product datasheet, www.holoeye.com, 2011. [48] D.W. Lee et C. Young-Ho A 4 bit digital liquid lens for variable focal length, Journal of

Micromechanics and Microengineering 20, 35029-35033, 2010.

[49] Tofra Inc, Large Capacity Filter Wheel with Integrated Controller Product datasheet, www.tofrainc.net, 2011.

149

[50] Radiant ZEMAX LLC, Double Gauss 28 degree field.zmx, ZEMAX Optical Design Program : Sample Lens Files, 2010.

[51] M. Horimoto, Fish eye lens system, US Patent 4256373, 1981.

[52] G. Kweon et M. Laikin, Design of a Mega-pixel Grade Catadioptric Panoramic Lens with the Rectilinear Projection Scheme, Journal - Optical Society of Korea, 67-75,2006. [53] ImmerVision, (Communication privée), 2009.

[54] H.R. Fallah et J. Maxwell, Higher-order pupil aberrations in wide-angle and panoramic optical systems, Proc. SPIE 2774, 342, 1996.

[55] Optimax systems, Optics Manufacturing Tolerances Chart, PDF disponible en ligne à www.optimaxsi.com, 2010.

[56] M.C Sanson, CT. Tienvieri et S. VanKerkhove, Localized slope errors and their impact on image performance requirements, Proc. SPIE 6342, 6342-23, 2007.

[57] H. Werner, Visual Acuity of the human eye, Schéma par Hans Werner, libre de reproduc- tion selon une license Creative Commons Attribution, disponible à l'adresse suivante http ://de.wikipedia.org/wiki/Datei .AcuityHumanEye.jpg, 2010.

[58] D. Malacara-Hernandez, Some parameters and characteristics of an off-axis parabo- loid, Opt. Eng. 30, 1277, 1991.

[59] K. Kubala, Computational imaging technologies, Proc. SPIE 7652, 765202, 2010. [60] J. Parent et S. Thibault, Tolerancing panoramic lenses, Proc. SPIE 7433,74330D, 2009. [61] J. Parent et S. Thibault, Spatial dependence of surface error slopes on tolerancing pa-

noramic lenses, Applied Optics 49, Issue 14, 2686-2693, 2010.

[62] J. Parent et S. Thibault, Active imaging lens with real-time variable resolution and constant field of view, Proc. SPIE 7652, 76522F, 2010.