Posición aparente de un objeto debajo del agua

Primero, vamos a resolver una situación más simple. Dado el ángulo de incidencia, determinaremos la posición aparente de un objeto vista por un nadador que se encuentra en la dirección del rayo refractado
El objeto está situado en el origen a una profundidad h. Del objeto parte un rayo (color rojo) que forma un ángulo de incidencia θi. El rayo refractado forma un ángulo θr con la normal. De acuerdo con la ley de la refracción
nsinθi=sinθr
siendo n=1.33 el índice de refracción del agua y 1 el índice de refracción del aire. El ángulo de refracción θr es mayor que el incidente θi.
La dirección del rayo refractado y su prolongación pasa por el punto (xs,h) y su pendiente es 1/tanθr. Sabiendo que xs=htanθi. La ecuación de esta recta es
Del objeto parte un rayo (color azul) que forma un ángulo de incidencia θ'i. El rayo refractado forma un ángulo θ'r con la normal.
La dirección del rayo refractado y su prolongación pasa por el punto (x's,h) y su pendiente es 1/tanθ'r. Sabiendo que x's=htanθ'i. La ecuación de esta recta es
Las prolongaciones de los rayos refractados se cortan el en punto señalado en color azul de coordenadas
Esta es la posición (xa, ya) aparente del objeto visto por un observador que se encuentra en la dirección del rayo refractado. Donde θ'i=θi+δ, siendo δ un incremento de ángulo pequeño.
Representamos la posición aparente (xa, ya) de un objeto situado en el origen, para varios ángulos de incidencia
La profundidad del objeto es h=1 m, el incremento de ángulo δ=0.01 grados. Las flechas indican la dirección del rayo refractado, la dirección de observación del objeto
n=1.33; %índice de refracción del agua delta=0.01*pi/180; %0.01 grado h=1; %profundidad hold on %piscina x=[0,0,1.1,1.1]; y=[0,1,1,0]; fill(x,y,'c') plot(0,0,'ro','markersize',4,'markeredgecolor','r','markerfacecolor','r') for aIn=(0:5:45)*pi/180 aRe=asin(n*sin(aIn)); %ángulo de refracción aRe_p=asin(n*sin(aIn+delta)); %ángulo de refracción xa=sin(aIn)^3*(n^2-1)*h/cos(aIn)^3; ya=(1-(1-n^2*sin(aIn)^2)^(3/2)*h/(n*cos(aIn)^3)); plot(xa,ya,'ro','markersize',4,'markeredgecolor','r','markerfacecolor','r') xs=h*tan(aIn); line([0,xs],[0,h],'color','k') line([xs,xa],[h,ya],'lineStyle','--','color','k') quiver(xs,h,0.25*sin(aRe),0.25*cos(aRe)); end hold off xlim([0,1.1]) xlabel('x') ylabel('y') title('Refracción')
Se fija la posición del observador
En esta sección vamos a describir la posición aparente de los objetos sumergidos en una piscina respecto de un nadador situado en el borde

El eje Y coincide con la posición del nadador y el eje X con la superficie del agua. La posición de los ojos del nadador es (0,y0) y la posición del objeto sumergido (punto de color rojo) en el agua es (xb, yb), la posición aparente del objeto (punto de color azul) es (xa, ya)
Un rayo incidente procedente del objeto, se refracta en un punto de la superficie de separación de los dos medios situado a xs, formando un ángulo θi con la normal. El rayo refractado llega a los ojos del observador formando un ángulo θr con la normal.
Conocida la posición del objeto (xb, yb) y la de los ojos del nadador (0,y0), a partir de la ley de la refracción, nsinθi=sinθr, vamos a calcular la posición xs donde se refracta el rayo de luz procedente del objeto y los ángulo de incidencia θi y el refractado θr. En la figura vemos que
Eliminado xs y utilizando la ley de la refracción
Resolvemos esta ecuación transcendente, para calcular θr, después xs y θi
La ecuación de la dirección del rayo refractado y su prolongación es
Para determinar la posición aparente del objeto, precisamos trazar un rayo más de ángulo de refracción θ'r= θr+δ, (siendo δ un ángulo muy pequeño, infinitesimal) y hallar la intersección de la prolongación de los dos rayos refractados, tal como se muestra exageradamente en la figura. Las ecuaciones de las rectas de color rojo y azul son, respectivamente

Despejamos la posición aparente xa e ya que es el punto de intersección de las dos rectas
Calculamos la ordenada ya
Hacemos la aproximación
El resultado final es
Calculamos la abscisa xa
El resultado final es
Cálculo de la posición aparente de un objeto sumergido
Sea y0=1.5 la altura de los ojos de nadador, la posición del objeto (xb, yb) es (5,-2)m
Resolvemos la ecuación transcendente para calcular el ángulo del rayo refractado θr y la posición xs en la superficie del agua donde se refracta el rayo incidente
y posteriormente, las posición aparente (xa, ya) de un objeto situado en la posición (xb, yb)
Trazamos el rayo incidente, el refractado y su prolongación hasta la posición aparente del objeto
n=1.33; %índice de refracción del agua xb=5; %distancia al objeto yb=-2; %profundidad y0=1.5; %observador f=@(x) xb-y0*x/sqrt(1-x^2)+yb*x/sqrt(n^2-x^2); % x es sin(th) th_r=asin(fzero(f,[0,0.99])); hold on %piscina x=[0,5,5,0]; y=[0,0,-2,-2]; hold on fill(x,y,'c') plot(xb,yb,'ro','markersize',6,'markeredgecolor','r','markerfacecolor','r') plot(0,y0,'ko','markersize',4,'markeredgecolor','k','markerfacecolor','k') xa=xb+yb*(n^2-1)*sin(th_r)^3/(n^2-sin(th_r)^2)^(3/2); ya=yb*n^2*cos(th_r)^3/(n^2-sin(th_r)^2)^(3/2); plot(xa,ya,'bo','markersize',4,'markeredgecolor','b','markerfacecolor','b') xs=y0*tan(th_r); line([xb,xs],[yb,0],'color','k') line([0,xs],[y0,0],'color','k') line([xs,xa],[0,ya],'lineStyle','--','color','k') hold off xlabel('x') ylabel('y') title('Refracción')
Elaboramos un script para dibujar la apariencia de un objeto de forma circular de radio 0.5 situado en el fondo de una piscina. La posición del centro del objeto es (5,-2) m y el observador está en el borde de la piscina a y0=1.5
n=1.33; %índice de refracción del agua y0=1.5; %observador %objeto t=(1:360)*pi/180; Xb=[0.5*cos(t),0]+5; Yb=[0.5*sin(t),0]-2; %piscina x=[0,5.6,5.6,0]; y=[0,0,-2.6,-2.6]; hold on fill(x,y,'c') %observador plot(0,y0,'ko','markersize',4,'markeredgecolor','k','markerfacecolor','k') for i=1:length(Xb) xb=Xb(i); yb=Yb(i); f=@(x) xb-y0*x/sqrt(1-x^2)+yb*x/sqrt(n^2-x^2); th_r=asin(fzero(f,[0,0.99])); plot(xb,yb,'ro','markersize',2,'markeredgecolor','r','markerfacecolor','r') xa=xb+yb*(n^2-1)*sin(th_r)^3/(n^2-sin(th_r)^2)^(3/2); ya=yb*n^2*cos(th_r)^3/(n^2-sin(th_r)^2)^(3/2); plot(xa,ya,'bo','markersize',2,'markeredgecolor','b','markerfacecolor','b') end xs=y0*tan(th_r); line([xb,xs],[yb,0],'color','k') line([0,xs],[y0,0],'color','k') line([xs,xa],[0,ya],'lineStyle','--','color','k') hold off xlabel('x') ylabel('y') title('Refracción')
Finalmente, dibujamos la forma aparente del fondo de una piscina vista por el nadador situado en el borde. La forma real está descrita por la función
n=1.33; %índice de refracción del agua y0=1.5; %observador g=@(x) (-0.9-0.5*x/15.5).*(x<15.5)+(-1.6*x+21.02).*(x>=15.5 && x<18.2)/2.7 -3*(x>=18.2 && x<=25); xb=0:0.1:25; yb=zeros(1,length(xb)); xa=zeros(1,length(xb)); ya=zeros(1,length(xb)); for i=1:length(xb) yb(i)=g(xb(i)); end %yb=fliplr(yb); for i=1:length(xb) f=@(x) xb(i)-y0*x/sqrt(1-x^2)+yb(i)*x/sqrt(n^2-x^2); if sign(f(0))==sign(f(0.99)) break; else th_r=asin(fzero(f,[0,0.99])); end xa(i)=xb(i)+yb(i)*(n^2-1)*sin(th_r)^3/(n^2-sin(th_r)^2)^(3/2); ya(i)=yb(i)*n^2*cos(th_r)^3/(n^2-sin(th_r)^2)^(3/2); end hold on %observador plot(0,y0,'ko','markersize',4,'markeredgecolor','k','markerfacecolor','k') fill([25,0,xb],[0,0,yb],'c') plot(xa(1:i-1),ya(1:i-1),'r') hold off xlabel('x') ylabel('y') title('Refracción')
Invertimos el perfil de la piscina, de modo que la parte más profunda esté más cerca del observador
Utilizamos la función
... for i=1:length(xb) yb(i)=g(xb(i)); end yb=fliplr(yb); for i=1:length(xb) ...
El nadador no aprecia el fondo de la piscina a partir de cierta distancia xb de alrededor 6 m, para la cual ya se hace casi cero
Referencias
Kenneth S. Mendelson. Apparent shape of a swimming pool. Am. J. Phys. 78 (12). December 2010, pp.1254-1257
R Arizaga, N Cap, H Rabal, M Trivi. Image distortion due to refraction by planar surfaces. Eur. J. Phys. 31 (2010) pp. 115-127