Simplified Model of Light Reflection in a Corner

Simplified Model of Light Reflection in a Corner
Loading the math board and drawing, please wait…
2014-07-02 05:48
In collections Light
This example demonstrates a simplified model of light reflection in a corner. By adjusting the angle of the corner and the incident angle of the light, observe the changes in the path of the reflected light. Core mathematical concepts include the law of reflection, vectors, and angles. GeoGebra commands such as UnitVector, Ray, and Intersect are used in the construction. Suitable for middle school and above students to learn about geometric reflection and vectors.

GeoGebra Commands & Parameters

  1. UnitVector(xAxis) → X
  2. Corner(imgWhite, 3) → crn3
  3. DynamicCoordinates(P', x(Corner[4] + P'' / ppu), y(Corner[4] + P'' / ppu)) → P
  4. Polygon(P, p2, p3, p4) → panel, pnl1, pnl2_1, pnl3, pnl4
  5. Polygon(P2, P2 + (w, 0), P2 + (w, h), P2 + (0, h)) → pnl2, a_1, b_1, c, d_1
  6. Midpoint(auxSl1, auxSl2) → auxSl3
  7. Segment(auxSl1, auxSl2) → d
  8. Point(d) → sl'
  9. If(sgn(x(sl' - Midpoint[d])) ≤ 0, auxSl1, auxSl2) → sl''
  10. DynamicCoordinates(sl', x(sl''), y(sl'')) → sl
  11. If(sgn(x(sl' - Midpoint[d])) ≤ 0, 1, 2) → dexSl
  12. Intersect(xAxis, yAxis) → O'
  13. Ray(O, X) → l0
  14. Arc1(O, aux1, O - X) → rngα
  15. Point(rngα) → P_α
  16. Vector(O, P_α) → u1
  17. Ray(O, P_α) → l1
  18. Angle2(aux1, O, P_α) → α
  19. Angle(O + (2 * X), O, O + (2 * (P_α - O))) → α'
  20. Point(l0) → X0
  21. Arc1(X0, X0 + X, X0 - X) → rngθ
  22. Point(rngθ) → L0
  23. Vector(X0, L0) → R0
  24. Arc1(X0, X0 + X, L0) → arcθ
  25. Angle2(X0 + X, X0, L0) → θ
  26. Min(128, floor(abs(θ / α))) → m
  27. Mod(m, 2) → m'
  28. Max(0, floor(xm)) → j
  29. Mod(j, 2) → j'
  30. Sequence(k, k, 0, m) → nk
  31. Zip((k, f(k)), k, nk) → bounces
  32. Zip(O + (k1 * If[Mod[k2, 2] ≟ 0, X, u1]), k1, times, k2, nk) → Xk
  33. Take(Xk, 2, m + 1) → Xk'
  34. PolyLine(Xk) → rayPath
  35. Vector(If[m' ≟ 0, z_1, conjugate(z_1)]) → Rm
  36. Element(Xk', m) → Xm
  37. Ray(Xm, Rm) → rayPathTerm
  38. Sequence((2 * k), k, 0, floor(m / 2)) → kev
  39. Sequence((2 * k) - 1, k, 1, ceil(m / 2)) → kod
  40. Zip((k, f(k)), k, kev) → yev
  41. Element(bounces, y(DexEv) + 1) → MaxEv
  42. Element(bounces, x(DexEv) + 1) → mnEv
  43. SegmentLabel1((-1, y(mnEv)), (-1, y(MaxEv)), 0.25, 0.12, 0.07, 0, 0.5) → lbl_t, lblRngt'
  44. Element(Xk, j + j' + 1) → A'
  45. Element(Xk, y(DexEv) + 1) → B'
  46. SegmentLabel1(A', B', -0.25, 0.12, 0.07, 0, 0.5) → lblt2, lblRngt
  47. Zip((k, f(k)), k, kod) → yod
  48. Element(bounces, x(DexOd) + 1) → mnOd
  49. Element(bounces, y(DexOd) + 1) → MaxOd
  50. SegmentLabel1(((-0.5), y(mnOd)), ((-0.5), y(MaxOd)), 0.25, 0.12, 0.07, 0, 0.5) → lbl_τ, lblRngτ'
  51. Element(Xk', j - j' + 1) → C'
  52. Element(Xk', y(DexOd)) → D'
  53. SegmentLabel1(C', D', 0.25, 0.12, 0.07, 0, 0.5) → lblτ2, lblRngτ
  54. Point(list1) → A
  55. Mod(IndexOf[A, list1] - 1, 2) → dex4
  56. Point(list1') → B