角内光线反射简化模型

角内光线反射简化模型
几何画板及绘图内容加载中,请稍等……
2014-07-02 05:48
所属专题 Light
本范例展示了光线在角内反射的简化模型。通过调整角的大小和光线的入射角度,观察反射光线的路径变化。涉及的核心数学概念包括反射定律、向量和角度。使用了UnitVector、Ray、Intersect等GeoGebra命令进行构造。适合初中及以上学生学习几何反射和向量概念。

GeoGebra 命令及参数

  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