Processing math: 100%
К основному контенту

Визуализация законов преломления света

На рисунке представлена визуализация законов Снеллиуса и Френеля на границе воздуха (n = 1) и воды (n = 1.33).
Линиями показаны направления преломления, цветом обозначен коэффициент отражения.



Обозначим через α угол между нормалью к поверхности раздела двух сред и падающим лучом, через β -- угол между нормалью и преломленным лучом.
Связь между углами α и β выражается хорошо известным законом Снеллиуса: sinαsinβ=n2n1.
Здесь n1=1 -- показатель преломления воздуха, n2=1.33 -- показатель преломления воды.
Из неравенства sinα1 вытекает sinβn1n2.
При прохождении света из воды в воздух под углом падения β, sinβ>n1n2, имеет место эффект полного внутреннего отражения.

При переходе светового луча из среды i в среду j при угле падения α, cosα=ν, угол преломления равен β, cosβ=ψij(ν), а коэффициент отражения (доля отраженного излучения) равен Rij(ν).
Согласно законам Снеллиуса и Френеля, ψij(ν)={1n2ij(1ν2),если1n2ij(1ν2)>0,0,иначе,
Rij(ν)=12{[ψij(ν)nijνψij(ν)+nijν]2+[nijψij(ν)νnijψij(ν)+ν]2},
где nij=ni/nj.

psi[nij_, nu_] := Sqrt[Max[1 - nij^2 (1 - nu^2), 0]];

R[nij_, nu_] := 0.5*(
    ((psi[nij, nu] - nij*nu)/(psi[nij, nu] + nij*nu))^2
     + ((nij*psi[nij, nu] - nu)/(nij*psi[nij, nu] + nu))^2
    );

n1 = 1; n2 = 1.33; n12 = n1/n2;

x[nu_] := Sqrt[1 - nu^2]; y[nu_] := nu;

M = 6;

nuk[k_] := Cos[Pi*k/(2*M)];

DrawLine[xx_, yy_] := ParametricPlot[{xx*t, yy*t}, {t, 0, 1}];

Show[
 ParametricPlot[{{x[nu], y[nu]}, {-x[nu], 
    y[nu]}, {x[
     psi[n12, nu]], -y[psi[n12, nu]]}, {-x[psi[n12, nu]], -y[
      psi[n12, nu]]}}, {nu, 0, 1}, PlotStyle -> Thickness[0.02], 
  ColorFunction -> Function[{x, y, nu}, Hue[R[n12, nu]]]],
 Table[DrawLine[x[nuk[k]], y[nuk[k]]], {k, 0, M}],
 Table[DrawLine[-x[nuk[k]], y[nuk[k]]], {k, 0, M}],
 Table[DrawLine[x[psi[n12, nuk[k]]], -y[psi[n12, nuk[k]]]], {k, 0, M}],
 Table[DrawLine[-x[psi[n12, nuk[k]]], -y[psi[n12, nuk[k]]]], {k, 0, 
   M}]]

Угол преломления в зависимости от угла падения:

Plot[ArcCos[psi[n12, Cos[alpha/180*Pi]]]/Pi*180, {alpha, 0, 90}, 
 PlotRange -> All]


Коэффициент отражения в зависимости от угла падения:

Plot[R[n12, Cos[alpha/180*Pi]], {alpha, 0, 90}, PlotRange -> All]


Убедимся в соответствии коэффициентов отражения при прохождении луча из воздуха в воду и обратно.

Plot[{R[n12, nu], R[n2/n1, psi[n12, nu]]}, {nu, 0, 1}, PlotRange -> All]


Комментарии