F

         Datos Witelo
Incidencia    Refracción
      10°                7,75°   
      20°                15,5° 
      30°                22,5°
      40°                29°
      50°                35°
      60°                40,5°
      70°                45,5°

Datos Witelo

Datos Snell-Descartes

F

β_1: 80°
O = Intersect(xAxis, yAxis)
B = Point(Ray[O, Vector[(0, -1)]])
l = OrthogonalLine(B, yAxis)
A = Mirror(B, xAxis)
A' = Rotate(A, β_1, B)
α_1: 50°
f = Line(B, A')
B' = Rotate(B, α_1, A)
B'' = Mirror(B', yAxis)
g = Line(A, B'')
C = Intersect(g, f)
c = Hyperbola(A, B, A')
M_2, M = Intersect(c, l)
e = Segment(M, B)
D, E = Intersect(c, yAxis)
r = If(y(B) > -2, (2 * Distance[E, B] / 3), 1)
h = Segment(A, C)
i = Segment(C, B)
a = false
G = DatosWitelo(xAxis, B, 10°, 7.75°)
H = DatosWitelo(xAxis, B, 20°, 15.5°)
I = DatosWitelo(xAxis, B, 30°, 22.5°)
J = DatosWitelo(xAxis, B, 40°, 29°)
K = DatosWitelo(xAxis, B, 50°, 35°)
L = DatosWitelo(xAxis, B, 60°, 40.5°)
M_1 = DatosWitelo(xAxis, B, 70°, 45.5°)
b = false
ControlTamaño: (0, -2.7)
m = OrthogonalLine(ControlTamaño, yAxis)
n21 = 1.33 (slider from 0 to 3, step 0.01)
U, V = Intersect(c, m)
p = Segment(U, V)
S = Point(p)
q = OrthogonalLine(S, xAxis)
T, W = Intersect(c, q)
lugar2 = Locus(W, S)
lugar3 = Locus(T, S)
Z: (0, y(B) - 0.7)
n = Line(Z, xAxis)
A_1, B_1 = Intersect(c, n)
s = Segment(A_1, B_1)
C_1 = Point(s)
t = OrthogonalLine(C_1, xAxis)
D_1, E_1 = Intersect(c, t)
lugar4 = Locus(E_1, C_1)
lugar5 = Locus(D_1, C_1)
P' = Mirror(ControlTamaño, xAxis)
Z' = Mirror(Z, xAxis)
f_1 = Segment(Z', Z)
h_1 = OrthogonalLine(V, xAxis)
i_1 = OrthogonalLine(A_1, xAxis)
F_1 = Intersect(i_1, xAxis)
G_1 = Intersect(h_1, xAxis)
H_1 = Mirror(F_1, yAxis)
I_1 = Mirror(G_1, yAxis)
j_1 = Segment(F_1, H_1)
k_1 = Segment(G_1, I_1)
o = false
P = Point(e)
m_1 = OrthogonalLine(P, xAxis)
J_1, K_1 = Intersect(c, m_1)
lugar6 = Locus(K_1, P)
F = Point(lugar6)
j = Segment(F, B)
k = Segment(F, A)
α = Angle(A, B, F)
β = Angle(F, A, B)
L_1: (0, 4)
N_1 = Mirror(L_1, O)
g_1 = Segment(L_1, N_1)
d = Circle(B, r)
N, Q = Intersect(d, yAxis)
R, O_1 = Intersect(d, l)
c_1 = CircleArc(B, Q, O_1)
P_1 = Point(c_1)
γ = Angle(P_1, B, O)
texto1: "α = " + α + "
β = " + β + ""
Snell: asind((1 / n21 * sin(γ)))
F' = DatosWitelo(xAxis, B, γ, Snell)
l_1 = Segment(B, F')
n_1 = Segment(F', A)
lugar1 = Locus(F', P_1)

Tool: Datos Witelo (command DatosWitelo)
DatosWitelo[ <EjeX>, <B>, <Incidencia>, <Refracción> ]
Input: xAxis, B, β_1, α_1
Output: C

A = Mirror(B, xAxis)
α_1: 50°
β_1: 80°
A' = Rotate(A, β_1, B)
f = Line(B, A')
B' = Rotate(B, α_1, A)
B'' = Mirror(B', yAxis)
g = Line(A, B'')
C = Intersect(g, f)