Refraction on Parallel Surfaces - 3 Mediums
Loading the math board and drawing, please wait…
This GeoGebra example demonstrates the refraction of light across three parallel interfaces between different media, visually tracing the path of a ray as it bends according to Snell's law at each boundary. The core mathematical concepts include the law of refraction, angle relationships, properties of parallel lines, and geometric optics ray tracing. The construction utilizes GeoGebra commands such as Segment, Point, Intersect, Line, OrthogonalLine, Angle, If, Rotate, Polygon, Vector, Circle, AngularBisector, Mirror, Textfield, Ray, Distance, and Midpoint to build the layered media, normals, incident and refracted rays, and angle labels. Interactive sliders or text fields allow users to adjust refractive indices and the incident angle, enabling dynamic exploration of how the refracted angle changes across media. This resource is suitable for high school physics or introductory university optics courses, as well as for interdisciplinary lessons connecting geometry and physics. It helps students visualize the continuous application of Snell's law and understand the behavior of light through parallel-sided transparent layers.
GeoGebra Commands & Parameters
Segment(A, B) → fPoint(f) → CIntersect(xAxis, yAxis) → DPoint(yAxis) → EPoint(yAxis) → FLine(E, F) → gOrthogonalLine(D, g) → hIntersect(h, f) → GAngle(C, D, G) → αAngle(G, D, C) → βIf(α > 90°, β, α) → γPoint(h) → KRotate(K, (-a), D) → K'_1Line(D, K'_1) → h_1Angle(K'_1, D, K) → θPolygon(R, S, T, U) → poly2, r, s, t_1, u_1Intersect(h_1, t_1) → WRotate(K, a, D) → K'Line(D, K') → g_1Intersect(g_1, t_1) → VVector(C, D) → uCircle(D, 1.2) → cAngularBisector(C, D, G) → iIntersect(c, i, 2) → HMirror(C, h) → C'Vector(D, C') → vAngularBisector(C', D, G) → jIntersect(c, j, 2) → IAngle(C', D, G) → δAngle(G, D, C') → εIf(δ > 90°, ε, δ) → ζCircle(D, 1.8) → dIntersect(d, j, 2) → JAngle(K, D, K') → ηAngularBisector(K'_1, D, K) → kAngularBisector(K, D, K') → lIntersect(c, k, 2) → LIntersect(c, l, 2) → MVector(D, K'_1) → wVector(D, K') → bPolygon(N, O, P, Q) → poly1, n, o, p, qTextfield(n_1) → InputBox1Textfield(n_2) → InputBox2Line(C, D) → mOrthogonalLine(C, m) → f_1Circle(C, 0.6) → eIntersect(e, f_1, 2) → ZIntersect(e, f_1, 1) → A_1Vector(D, V) → v_1Vector(D, W) → w_1Rotate(B_1, (-e_2), W) → C_1Angle(C_1, W, B_1) → νPoint(h) → D_1Point(h) → E_1Segment(D_1, E_1) → i_1Vector(W, C_1) → a_1Rotate(G_1, γ, V) → F_1Angle(G_1, V, F_1) → ξVector(V, F_1) → b_1Ray(C, D) → j_1Segment(H_1, I_1) → k_1Segment(J_1, K_1) → l_1AngularBisector(F_1, V, G_1) → m_1AngularBisector(B_1, W, C_1) → p_1Circle(W, 1) → c_1Circle(V, 1) → d_1Intersect(d_1, m_1, 2) → L_1Intersect(c_1, p_1, 2) → M_1Angle(D, W, J_1) → οAngle(H_1, V, D) → ρAngularBisector(J_1, W, D) → q_1AngularBisector(D, V, H_1) → r_1Intersect(d_1, r_1, 2) → N_1Intersect(c_1, q_1, 2) → O_1Intersect(t_1, j_1) → P_1OrthogonalLine(P_1, j_1) → s_1Line(W, C_1) → e_1Intersect(s_1, e_1) → Q_1Distance(P_1, Q_1) → distanceP1Q1Textfield(t) → InputBox3Midpoint(P_1, Q_1) → R_1Vector(P_1, Q_1) → u_2Vector(Q_1, P_1) → v_2Line(F_1, V) → f_2Intersect(f_2, s_1) → S_1Midpoint(P_1, S_1) → T_1Vector(S_1, P_1) → w_2Vector(P_1, S_1) → a_2Distance(P_1, S_1) → o_1Distance(P_1, S_1) → b_2Point(r) → U_1Point(t_1) → V_1Vector(U_1, V_1) → c_2Vector(V_1, U_1) → d_2Polygon(W_1, Z_1, A_2, B_2) → poly3, w_3, z_1, a_3, b_3Line(J_1, K_1) → g_2Mirror(D, g_2) → D'Vector(W, D') → h_2Segment(C_2, D_2) → i_2Rotate(C_2, ζ, D') → F_2Angle(C_2, D', F_2) → σRay(D', F_2) → k_2Point(k_2) → G_2Vector(H_2, I_2) → l_2AngularBisector(C_2, D', F_2) → m_2Circle(D', 2) → p_2Intersect(p_2, m_2, 2) → J_2Angle(J_1, W, D') → τAngularBisector(J_1, W, D') → q_2Intersect(c_1, q_2, 2) → K_2Textfield(n_3) → InputBox4Angle(D_2, D', W) → ϕAngularBisector(W, D', D_2) → r_2Intersect(p_2, r_2, 2) → L_2Line(B, A) → s_2Intersect(s_2, k_2) → N_2Vector(D', N_2) → j_2