% mluque5130@aol.com % 30 juin 2003-2 août 2003 % révision 8 juillet 2008 \documentclass{article} \usepackage[T1]{fontenc} \usepackage[garamond]{mathdesign} \renewcommand{\ttdefault}{lmtt} \usepackage[a4paper,dvips,hmargin=2cm,vmargin=3cm]{geometry} \usepackage[colorlinks=true,dvips]{hyperref} \usepackage[frenchb]{babel} \usepackage{pst-slpe} \usepackage{graphicx} \usepackage{pst-grad} \usepackage{framed} \usepackage{arrayjob}% Zhuhan Jiang : Zhuhan@turing.une.edu.au % documentation de Denis Girou \usepackage{pst-refraction} \input poissons.tex \input mesange.tex \input poisson_spectateur.tex \makeatletter % pour dessiner les herbes folles \def\pNodeIrand{\@ifnextchar[{\pst@pNodeIrand}{\pst@pNodeIrand[]}} \def\pst@pNodeIrand[#1](#2,#3)#4{{% \pst@killglue \psset{#1}% \pnode(! % /xa #2 \psk@pstRefraction@xPos\space add rand sin 0.2 mul add def % valeur de xa abscisse réelle du point observé /ya #3 \psk@pstRefraction@yPos\space add rand sin 0.5 mul add def % valeur de ya ordonnée réelle du point observé <0 ! /xb \psk@pstRefraction@xObservateur\space def % valeur de xb /yb \psk@pstRefraction@yObservateur\space def % valeur de yb /eyewidth \psk@pstRefraction@eyewidth\space def % dimension de l'oeil /xMilieu \psk@abscisseDirectionRegard\space def % chercher B1 et B2 limites de l'oeil /DistanceYB1YB2 eyewidth xMilieu xb sub dup mul xMilieu xb sub dup mul yb dup mul add div sqrt mul def /yB1 yb DistanceYB1YB2 sub def /yB2 yb DistanceYB1YB2 add def /xB1 yb yB1 yb sub mul xMilieu xb sub div xb add def /xB2 yb yB2 yb sub mul xMilieu xb sub div xb add def /n \psk@pstRefraction@indice\space def % indice de l'eau tx@RefractionDict begin Coor_Virtuel end){#4} }} \makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Jean-Michel Sarlat et Guillaume Connan \newenvironment{gbar}{% \def\FrameCommand{{\color{red}\vrule width 2pt}\colorbox{yellow!30}}% \MakeFramed {\advance\hsize-\width \FrameRestore}}% {\endMakeFramed} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \title{Images vues par réfraction\\ version dichotomie} \date{2 août 2003} \begin{document} \maketitle \tableofcontents \psset{SizeObserver=0.75} \section{Présentation du problème} Lorsqu'il nous arrive de regarder dans l'eau, les images que nous percevons des objets et des poissons qui s'y trouvent nous apparaissent différentes de ce qu'ils sont en réalité, ils nous semblent plus proches, plus petits, distordus. Le but de ce modeste article est d'essayer de comprendre ce phénomène. Nous allons considérer dans une première étape un point lumineux $A$ dans l'eau et un point $B$ dans l'air. Parmi tous les rayons lumineux émis (ou diffusés) par ce point $A$, essayons de déterminer la trajectoire du rayon qui après avoir traversé la surface de l'eau passera par $B$. Ensuite, dans une deuxième étape nous considérerons un objet ou un poisson dans l'eau et un spectateur au-dessus de l'eau dont nous essayerons de reconstituer l'image qu'il en perçoit. La position de l'observateur et du poisson sera laissée à l'appréciation du lecteur. Cette version utilise la méthode de bissection (dichotomie) pour trouver l'abscisse du point d'incidence. \section{Détermination du point d'incidence} \begin{center} \begin{pspicture}(0,-5)(10.5,5.5) \psset{xObservateur=2,yObservateur=4} \psframe*[linecolor=eau](0,-5)(10,0) \psline{->}(10.5,0) \psline{->}(0,-5)(0,5.5) \pNodeI(8,-4){V} \pnode(! xa ya){A} \pnode(! xI1 0){I1} \pnode(! xB1 yB1){B1} \pnode(! xB1 0){Q} \pnode(! xa 0){P} \psline[linestyle=dotted](! xI1 -5)(! xI1 5) \psarc(I1){1}{90}{133} \rput(I1){\uput[111.5](1;111.5){$i_2$}} \psarc[doubleline=true](I1){1}{270}{302} \rput(I1){\uput[286](1;286){$i_1$}} \psline[linecolor=red](A)(I1)(B1) \psline[linestyle=dashed](B1)(Q) \psline[linestyle=dashed](A)(P) \uput[0](0,5.5){$y$} \uput[0](10.5,0){$x$} \uput[180](0,0){$O$} \uput[45](I1){$I$} \qdisk(A){1.5pt} \uput[0](A){$A$} \qdisk(B1){1.5pt} \uput[90](B1){$B$} \uput[-90](2,0){$Q$} \uput[90](8,0){$P$} \end{pspicture} \end{center} Il s'agit de calculer les coordonnées du point d'intersection $I(x_I,y_I)$ d'un rayon lumineux émis par un point $A(x_A,y_A)$ situé dans la piscine avec la surface de l'eau, pour qu'après réfraction en $I$(en suivant les lois de \textsc{Descartes} $n_1\sin i_1=n_2\sin i_2$), ce rayon parvienne au point $B(x_B,y_B)$ censé représenté un observateur. On prendra $n_2=1$ pour l'air et $n_1=1.33$ pour l'eau. $i_1$ et $i_2$ sont les angles mesurés par rapport à la normale. \par Les données sont donc $A(x_A,y_A)$ et $B(x_B,y_B)$. Il s'agit de trouver $I(x_I,y_I)$. Si $P$ et $Q$ sont les projections orthogonales de $A$ et $B$ sur la surface de l'eau $(\Pi)$, le point d'incidence $I$ appartient au segment $[PQ]$ : $$\overrightarrow{PI}=t\overrightarrow{PQ}\ \textrm{avec } t\in[0,1]$$ La figure précédente est dans le plan vertical passant par les points $A$ et $B$. Le problème est donc de trouver $I$ aligné avec les projections de $A$ et $B$ sur $(\Pi)$. $n=n_1/n_2$ est l'indice de l'eau par rapport à l'air. On peut modifier ce paramètre. \begin{equation} n\sin i_1=\frac{n|x_I-x_A|}{\sqrt{(x_I-x_A)^2+y_A^2}}=\frac{|x_I-x_B|}{\sqrt{(x_I-x_B)^2+y_B^2}}=\sin i_2 \end{equation} On cherche par la méthode de la bissection, adaptée de celle exposée dans le livre de R.\textsc{Dony} : \textit{Graphisme scientifique sur micro-ordinateur} publié chez Masson 1984/1985, la racine de l'équation : \begin{equation} \frac{n|x_I-x_A|}{\sqrt{(x_I-x_A)^2+y_A^2}}-\frac{|x_I-x_B|}{\sqrt{(x_I-x_B)^2+y_B^2}}=0 \end{equation} comprise dans l'intervalle $[x_A,x_B]$. C'est une méthode qui semble, apparemment, donner moins de problèmes de mise au point que celle de \textsc{Newton}. \section{Détermination de l'image virtuelle} \subsection{Principe} Il s'agit maintenant de placer un observateur terrestre (ou plutôt la pupille de l'un de ses yeux dont on pourra paramétrer le diamètre en fonction de la luminosité) par les coordonnées du centre de la pupille et de faire diriger le regard vers un point du bassin qui pourra lui aussi être librement choisi. \begin{center} \begin{pspicture}(0,-7)(15,5) \psframe*[linecolor=eau](0,-7)(15,0) \psline{->}(15,0) \psline{->}(0,-5)(0,5) \psset{xObservateur=1,yObservateur=4} \EyeDraw \RefractionPsline[linecolor=blue,linewidth=0.5mm](8,-5)(13,-5)(13,-1)(8,-1)(8,-5) \psline[linecolor=red,linewidth=0.5mm](8,-5)(13,-5)(13,-1)(8,-1)(8,-5) \psgrid[subgriddiv=0,gridlabels=0,gridcolor=red,gridwidth=0.2mm](8,-5)(13,-1) \multido{\iY=-5+1}{5}{% \RefractionPsline[linecolor=blue,linewidth=0.2mm](8,\iY)(13,\iY)} \multido{\iX=8+1}{6}{% \RefractionPsline[linecolor=blue,linewidth=0.2mm](\iX,-5)(\iX,-1)} \pNodeI(8,-5){V} {\psset{linecolor=blue}\qdisk(V){2pt}} \pnode(! xa ya ){A} {\psset{linecolor=red}\qdisk(A){2pt}} \pnode(! xb yb ){B} \pnode(! xB1 yB1){B1} \pnode(! xB2 yB2){B2} \pnode(! xI1 0){I1} \pnode(! xI2 0){I2} \psline[linecolor=red](B1)(I1)(A) \psline[linecolor=red](B2)(I2)(A) \psset{arrowsize=0.2} \pcline[nodesepB=2cm,linecolor=red]{->}(A)(I1) \pcline[nodesepB=2cm,linecolor=red]{->>}(A)(I2) \pcline[nodesepB=3cm,linecolor=red]{->}(I1)(B1) \pcline[nodesepB=3cm,linecolor=red]{->>}(I2)(B2) \psline[linestyle=dashed,linecolor=red](I2)(V) \psline[linestyle=dashed,linecolor=red](I1)(V) \RefractionPscircle[linecolor=blue,fillstyle=solid,fillcolor=CercleEau](10,-6){1} \pscircle[linecolor=red,fillstyle=solid,fillcolor=CercleAir](10,-6){1} \end{pspicture} \end{center} En rouge, la forme et la taille réelle des objets (grille et disque), en bleu les objets tels qu'ils seraient perçus par le spectateur dans le plan vertical. L'\oe{}il ne voit pas la ligne brisée, il interprète ce qu'il voit comme si les trajectoires des rayons étaient rectilignes, d'où les illusions observées. Il faudrait bien sûr se placer dans un univers en trois dimensions pour simuler de façon réaliste ce phénomène, peut-être dans un prochain article ? Ne cachons pas qu'il y a des difficultés qui n'ont pu être encore résolues ! \subsection{Influence du diamètre de la pupille} Nous observons le coin opposé d'un rectangle, en élargissant progressivement le diamètre d'ouverture de la pupille. \begin{center} \begin{pspicture}(0,-6)(15,8) \psframe*[linecolor=eau](0,-6)(15,0) \psset{xObservateur=0,yObservateur=7} \multido{\nLargeurOeil=0.1+0.2}{10}{% \psset{eyewidth=\nLargeurOeil} \RefractionPsline[linecolor=blue](3,-5)(14,-5)(14,-1)(3,-1)(3,-5) \psline[linecolor=red](3,-5)(14,-5)(14,-1)(3,-1)(3,-5) \pNodeI(14,-5){V} \qdisk(V){2pt} \pnode(! xB1 yB1){B1} \pnode(! xB2 yB2){B2} %\psline[linecolor=red](B1)(B2) \pnode(! xa ya ){A} {\psset{linecolor=red}\qdisk(A){2pt}} \pnode(! xb yb ){B} \pnode(! xI1 0){I1} \pnode(! xI2 0){I2} \psline[linecolor=red](B1)(I1)(A) \psline[linecolor=red](B2)(I2)(A) \psline[linecolor=yellow](I1)(V) \psline[linecolor=yellow](I2)(V)} \end{pspicture} \end{center} Il apparaît que le diamètre d'ouverture a une faible incidence sur le point virtuel image. L'image d'un point reste sensiblement toujours le même point quelle que soit l'ouverture de la pupille. \section{Applications} Nous avons maintenant une méthode permettant par une transformation point par point, de construire l'image de n'importe quel élément aquatique. Certaines figures géométriques simples ont été pré-calculées. Dans ce tableau, on trouve dans la première colonne la commande spéciale et dans la deuxième l'analogue de PSTricks. \begin{center} \begin{tabular}{ll} \verb+\pNodeI(xA,yA){V}+&\verb+\pnode(x,y){A}+\\ \verb+\RefractionPsline[...](x0,y0)(x1,y1)(...)(xn,yn)+&\verb+\psline[...](x0,y0)(x1,y1)(...)(xn,yn)+\\ \verb+\RefractionPscircle[...](xC,yC){R}+&\verb+\pscircle[...](xC,yC){R}+\\ \verb+\RefractionPsarc[...](xC,yC){R}{begin}{end}+&\verb+\psarc[...](xC,yC){R}{begin}{end}+\\ \verb+\RefractionPsframe[...](x1,y1)(x2,y2)+&\verb+\psframe[...](x1,y1)(x2,y2)+\\ \end{tabular} \end{center} \verb+\pNodeI(xA,yA){V}+ permet de déterminer l'image $V$ du point $A(x_A,y_A)$. On n'oubliera pas qu'impérativement $y_A<0$. Il y a aussi une commande permettant de tracer un polygone, elle n'est pas finalisée mais fonctionne. Elle s'écrit : \verb+\RefractionPspolygon[...]{(x0,y0)(x1,y1)(...)(xn,yn)}+ Ces simples commandes de base ont permis de réaliser les dessins suivants. \subsection{Carrelage et transparence} \input carrelage \begin{center} \begin{pspicture}(0,-8)(15,5.5) \psset{xObservateur=3,yObservateur=5} \EyeDraw \randomi=2568792 \psframe*[linecolor=eaupale](2,-8)(15,0) \RefractionPsframe*[linecolor=eau](2,-8)(15,-0.1) \RefractionDessinFond \psclip{\RefractionPscircle[linestyle=none](5,-5){2.5}} \RefractionDessinTransparent \endpsclip \psclip{\RefractionPscircle[linestyle=none](12,-5){2.5}} \RefractionDessinTransparent \endpsclip \end{pspicture} \end{center} \subsection{Poisson tropical} \begin{center} \psset{unit=0.75} \begin{pspicture}(0,-16)(17,8.5) % xPos=-6,yPos=-1 permettent de déplacer le poisson et son image % faire attention à ce que y calculé soit <0 % en grisé la position réelle du poisson % en couleurs l'image observée \psset{xObservateur=2,yObservateur=8,xPos=-4,yPos=-10} \psframe*[linecolor=eau](0,-16)(17,0) \EyeDraw \psset{xPos=4,yPos=-10} \pscircleXY[fillstyle=gradient,gradbegin=lightgray,gradend=white,linestyle=none](4,-2.5){0.15} \pscircleXY[fillstyle=gradient,gradbegin=lightgray,gradend=white,linestyle=none](4,-2){0.2} \pscircleXY[fillstyle=gradient,gradbegin=lightgray,gradend=white,linestyle=none](4,-1.5){0.25} \makeatletter \RefractionPscircle[fillstyle=gradient,gradbegin=eau,gradend=cyan,linestyle=none]% (!4 \psk@pstRefraction@xPos\space add -2.5 \psk@pstRefraction@yPos\space add){0.15} \RefractionPscircle[fillstyle=gradient,gradbegin=eau,gradend=cyan,linestyle=none]% (!4 \psk@pstRefraction@xPos\space add -2 \psk@pstRefraction@yPos\space add){0.2} \RefractionPscircle[fillstyle=gradient,gradbegin=eau,gradend=cyan,linestyle=none]% (!4 \psk@pstRefraction@xPos\space add -1.5 \psk@pstRefraction@yPos\space add){0.25} \makeatother \poissonPosXY \RefractionPoisson \end{pspicture} \end{center} \subsection{Poulpe} \begin{center} \begin{pspicture}(0,-16)(17,5) \psset{fillcolor=green} \psframe*[linecolor=eau](0,-16)(17,0) \psset{xObservateur=4,yObservateur=3,xPos=2,yPos=-6} \EyeDraw {\psset{fillstyle=solid,fillcolor=MonGris,linestyle=none} \Poulpe} \RefractionPoulpe \end{pspicture} \end{center} \section{Les différents paramètres et leur rôle} \begin{itemize} \item \texttt{n=1.333} : indice optique moyen de l'eau. On peut choisir une autre valeur pourvu qu'elle soit $>1$. Si on prend \texttt{n=1.001} image et objet sont pratiquement identiques. \item \texttt{eyewidth=0.2}, valeur par défaut du rayon de la pupille, ce qui donne une pupille de diamètre 4~mm. \item \texttt{SizeObserver=1}, valeur par défaut de la taille de la tête de l'observateur. L'option \texttt{[linewidth=...]} reste valable. \item \texttt{xObservateur=0,yObservateur=3} : ce sont les valeurs par défaut (en cm) de la position du milieu de la pupille. \item \texttt{abscisseDirectionRegard=7.5}, c'est en cm l'abscisse du point de la surface de l'eau vers lequel le regard est dirigé. Nous allons promener l'observateur au-dessus de la surface de l'eau, lui faisant décrire un demi-cercle. Son regard pointe vers le point d'abscisse $x=7.5$, les éléments du décor sont immobiles. \begin{center} \begin{tabular}{cc} \includegraphics[scale=0.7]{observateur1.eps}&\includegraphics[scale=0.7]{observateur2.eps}\\ \includegraphics[scale=0.7]{observateur3.eps}&\includegraphics[scale=0.7]{observateur4.eps}\\ \includegraphics[scale=0.7]{observateur5.eps}&\includegraphics[scale=0.7]{observateur6.eps}\\ \end{tabular} \end{center} % pour la conversion html % %\includegraphics[scale=1.5]{observateur1.eps} % %\includegraphics[scale=1.5]{observateur2.eps} % %\includegraphics[scale=1.5]{observateur3.eps} % %\includegraphics[scale=1.5]{observateur4.eps} % %\includegraphics[scale=1.5]{observateur5.eps} % %\includegraphics[scale=1.5]{observateur6.eps} \item \texttt{xPos=0,yPos=0}, avec des valeurs différentes, on peut modifier la position d'un point déjà calculé, ces valeurs se rajoutent à celles de base. On fera attention que lors de l'addition des ordonnées, l'ordonnée finale soit $<0$. Cette possibilité est utilisée pour placer un élément à différents endroits, sans avoir besoin de recalculer les nouvelles coordonnées. \begin{center} \begin{pspicture}(0,-16)(17,5) \psset{fillcolor=yellow} \psframe*[linecolor=eau](0,-16)(17,0) \psset{xObservateur=4,yObservateur=4,xPos=-1,yPos=-6} \EyeDraw \pNodeI(2,-5){V} \pnode(! xb yb){E} \psline(E)(7.5,0) {\psset{fillstyle=solid,fillcolor=MonGris,linestyle=none} \Poulpe} \RefractionPoulpe \psset{fillcolor=green} \psset{xObservateur=4,yObservateur=4,xPos=4,yPos=0} {\psset{fillstyle=solid,fillcolor=MonGris,linestyle=none} \Poulpe} \RefractionPoulpe \end{pspicture} \end{center} \end{itemize} \section{Une vue d'ensemble de la scène avec tous les éléments du décor} La pieuvre a été re-dessinée en utilisant une nouvelle commande paramétrable \verb+\PstCurveVaryingWidth+ écrite par Denis~\textsc{Girou} permettant de tracer des lignes d'épaisseur variable. En couleurs grisées ou très pâles : le décor réel, en couleurs : les positions et les dimensions apparentes. \begin{center} \begin{pspicture}(0,-16)(17,6) \psframe*[linecolor=eaupale](0,-16)(17,0) \psset{xObservateur=2,yObservateur=5,abscisseDirectionRegard=4} \RefractionPsframe*[linecolor=eau](0,-16)(17,-0.1) \EyeDraw \pNodeI(2,-5){V} \pnode(! xb yb){E} \psline(E)(4,0) \bgroup \psset{xPos=-3.5,yPos=-5} \pscircleXY[fillstyle=gradient,gradbegin=lightgray,gradend=white,linestyle=none](4,-2.5){0.15} \pscircleXY[fillstyle=gradient,gradbegin=lightgray,gradend=white,linestyle=none](4,-2){0.2} \pscircleXY[fillstyle=gradient,gradbegin=lightgray,gradend=white,linestyle=none](4,-1.5){0.25} \makeatletter \RefractionPscircle[fillstyle=gradient,gradbegin=eau,gradend=cyan,linestyle=none]% (!4 \psk@pstRefraction@xPos\space add -2.5 \psk@pstRefraction@yPos\space add){0.15} \RefractionPscircle[fillstyle=gradient,gradbegin=eau,gradend=cyan,linestyle=none]% (!4 \psk@pstRefraction@xPos\space add -2 \psk@pstRefraction@yPos\space add){0.2} \RefractionPscircle[fillstyle=gradient,gradbegin=eau,gradend=cyan,linestyle=none]% (!4 \psk@pstRefraction@xPos\space add -1.5 \psk@pstRefraction@yPos\space add){0.25} \makeatother \poissonPosXY \RefractionPoisson \egroup \bgroup \psset{linecolor=lightgray,xPos=2} \PoulpeC{lightgray} \egroup \RefractionPoulpeC{yellow} \psset{linewidth=0.2,LineWidthStep=-0.07,linecolor=MonGris} \multido{\rX=0+0.25}{68}{% \pnode(! \rX\space -16){h1} \pnode(! \rX\space rand sin 0.2 mul add -15 rand sin 0.5 mul add ){h2} \pnode(! \rX\space rand sin 0.2 mul add -14 rand sin 0.5 mul add ){h3} \pnode(! \rX\space rand sin 0.2 mul add -13 rand sin 1 mul add ){h4} \PstCurveVaryingWidth(h1)(h2)(h3)(h4)} \psset{linecolor=green} \multido{\rX=0+0.25}{68}{% \pNodeI(\rX,-16){h1} \pNodeIrand(\rX, -15){h2} \pNodeIrand(\rX,-14){h3} \pNodeIrand(\rX,-13){h4} \PstCurveVaryingWidth(h1)(h2)(h3)(h4)} \end{pspicture} \end{center} \section{Comment un poisson voit-il le monde aérien ?} \subsection{Si le phénomène de réfraction n'existait pas} \psset{n=0.75} \begin{center} \begin{pspicture}(0,-10)(15,8) \psframe*[linecolor=eau](0,-10)(15,0) \psset{xObservateur=7,yObservateur=-6,eyewidth=0.10} \EyePoisson \psline[linecolor=red,linewidth=0.5mm](2,5)(13,5)(13,1)(2,1)(2,5) \psgrid[subgriddiv=0,gridlabels=0,gridcolor=red,gridwidth=0.2mm](2,5)(13,1) \Datas\Branche\Mesange \pscircle[linecolor=red,fillstyle=solid,fillcolor=CercleAir](10,2){1} %\psgrid \end{pspicture} \end{center} \subsection{Avec le phénomène de réfraction} \begin{center} \begin{pspicture}(0,-10)(15,10) \psframe*[linecolor=eau](0,-10)(15,0) \psset{xObservateur=7,yObservateur=-5,eyewidth=0.10} \pscircle*[linecolor=lightgray](10,2){1} \RefractionPscircle[linecolor=blue,fillstyle=solid,fillcolor=CercleEau](10,2){1} \EyePoisson \RefractionPsline[linecolor=blue,linewidth=0.5mm](2,5)(13,5)(13,1)(2,1)(2,5) \psline[linecolor=red,linewidth=0.5mm](2,5)(13,5)(13,1)(2,1)(2,5) \psgrid[subgriddiv=0,gridlabels=0,gridcolor=red,gridwidth=0.2mm](2,5)(13,1) \multido{\iY=5+-1}{5}{% \RefractionPsline[linecolor=blue,linewidth=0.2mm](2,\iY)(13,\iY)} \multido{\iX=2+1}{12}{% \RefractionPsline[linecolor=blue,linewidth=0.2mm](\iX,5)(\iX,1)} \pNodeI(13,5){V} {\psset{linecolor=blue}\qdisk(V){2pt}} \pnode(! xa ya ){A} {\psset{linecolor=red}\qdisk(A){2pt}} \pnode(! xb yb ){B} \pnode(! xB1 yB1){B1} \pnode(! xB2 yB2){B2} \pnode(! xI1 0){I1} \pnode(! xI2 0){I2} \psline[linecolor=red](B1)(I1)(A) \psline[linecolor=red](B2)(I2)(A) \psset{arrowsize=0.2} \pcline[nodesepB=2cm,linecolor=red]{->}(A)(I1) \pcline[nodesepB=2cm,linecolor=red]{->>}(A)(I2) \pcline[nodesepB=3cm,linecolor=red]{->}(I1)(B1) \pcline[nodesepB=3cm,linecolor=red]{->>}(I2)(B2) \psline[linestyle=dashed,linecolor=red](I2)(V) \psline[linestyle=dashed,linecolor=red](I1)(V) \Datas\ghostBranche\ghostMesange \RefractionBranche\RefractionMesange \end{pspicture} \end{center} Et puis on peut imaginer toutes les situations : que l'indice de l'eau par rapport à l'air est 0.75 par exemple. Voici ce que verrait notre poisson : \psset{n=1.5} \begin{center} \begin{pspicture}(0,-10)(15,10) \psframe*[linecolor=eau](0,-10)(15,0) \psset{xObservateur=7,yObservateur=-5,eyewidth=0.10} \pscircle*[linecolor=lightgray](10,2){1} \RefractionPscircle[linecolor=blue,fillstyle=solid,fillcolor=CercleEau](10,2){1} \EyePoisson \RefractionPsline[linecolor=blue,linewidth=0.5mm](2,5)(13,5)(13,1)(2,1)(2,5) \psline[linecolor=red,linewidth=0.5mm](2,5)(13,5)(13,1)(2,1)(2,5) \psgrid[subgriddiv=0,gridlabels=0,gridcolor=red,gridwidth=0.2mm](2,5)(13,1) \multido{\iY=5+-1}{5}{% \RefractionPsline[linecolor=blue,linewidth=0.2mm](2,\iY)(13,\iY)} \multido{\iX=2+1}{12}{% \RefractionPsline[linecolor=blue,linewidth=0.2mm](\iX,5)(\iX,1)} \pNodeI(13,5){V} {\psset{linecolor=blue}\qdisk(V){2pt}} \pnode(! xa ya ){A} {\psset{linecolor=red}\qdisk(A){2pt}} \pnode(! xb yb ){B} \pnode(! xB1 yB1){B1} \pnode(! xB2 yB2){B2} \pnode(! xI1 0){I1} \pnode(! xI2 0){I2} \psline[linecolor=red](B1)(I1)(A) \psline[linecolor=red](B2)(I2)(A) \psset{arrowsize=0.2} \pcline[nodesepB=2cm,linecolor=red]{->}(A)(I1) \pcline[nodesepB=2cm,linecolor=red]{->>}(A)(I2) \pcline[nodesepB=3cm,linecolor=red]{->}(I1)(B1) \pcline[nodesepB=3cm,linecolor=red]{->>}(I2)(B2) \psline[linestyle=dashed,linecolor=red](I2)(V) \psline[linestyle=dashed,linecolor=red](I1)(V) \Datas\ghostBranche\ghostMesange \RefractionBranche\RefractionMesange \end{pspicture} \end{center} \section{Image d'un texte par réfraction} C'est la commande \verb+\textRefraction+ qui permet d'afficher le texte. \begin{gbar} \begin{verbatim} \begin{center} \begin{pspicture}(-1,-5)(10,6) \psset{xObservateur=2,yObservateur=5,abscisseDirectionRegard=5} \psframe*[linecolor=eau](0,-5)(10,0) \EyeDraw \psgrid[subgriddiv=0,gridlabels=0,gridcolor=red](0,-5)(10,-1) \multido{\iY=-5+1}{5}{% \RefractionPsline[linecolor=blue](-1,\iY)(10,\iY)} \multido{\iX=-1+1}{12}{% \RefractionPsline[linecolor=blue](\iX,-5)(\iX,-1)} \textRefraction[fillstyle=solid,fillcolor=blue,linecolor=blue](4,-4){Tangente} \rput(4,-4){\color{red}\fontfamily{ptm}\fontsize{56.90}{56.90}\selectfont Tangente} \end{pspicture} \end{center} \end{verbatim} \end{gbar} \begin{center} \begin{pspicture}(-1,-5)(10,6) \psset{xObservateur=2,yObservateur=5,abscisseDirectionRegard=5} \psframe*[linecolor=eau](-1,-5)(10,0) \EyeDraw \psgrid[subgriddiv=0,gridlabels=0,gridcolor=red](-1,-5)(10,-1) \multido{\iY=-5+1}{5}{% \RefractionPsline[linecolor=blue](-1,\iY)(10,\iY)} \multido{\iX=-1+1}{12}{% \RefractionPsline[linecolor=blue](\iX,-5)(\iX,-1)} \textRefraction[fillstyle=solid,fillcolor=blue,linecolor=blue](4,-4){Réfraction} \rput(4,-4){\color{red}\fontfamily{ptm}\fontsize{56.90}{56.90}\selectfont Réfraction} \end{pspicture} \end{center} Les paramètres : \begin{gbar} \begin{itemize} \item \texttt{PSfont=Times-Roman} : type de fonte postscript. \item \texttt{fontscale=2} : taille des caractères en cm. \end{itemize} \end{gbar} \end{document}