全内反射模拟

全内反射模拟
几何画板及绘图内容加载中,请稍等……
2020-03-10 00:40
①本范例演示光线在不同介质界面上的全内反射现象;②涉及折射定律、临界角、三角函数、向量运算等核心数学概念;③通过 GeoGebra 命令 If, Sequence, Join, Point, CircleArc, Segment, Vector, Length, Polygon, Textfield, Angle 等实现光线路径、角度测量与动态演示;④适合高中物理光学教学与大学基础物理实验演示。

GeoGebra 命令及参数

  1. If(n1 > n2, asin(n2 / n1), 0) → thetac
  2. If(n1 ≤ n2, (radius, 0), ((radius * cos(π / 2 - thetac)), (radius * sin(π / 2 - thetac)))) → CircleRight
  3. If(n1 ≤ n2, ((-radius), 0), ((radius * cos(π / 2 + thetac)), (radius * sin(π / 2 + thetac)))) → CircleLeft
  4. Sequence(((radius * cos((i * π / N))), (radius * sin((i * π / N)))), i, 0, N) → CirclePoints
  5. Join({CirclePoints, CriticalAngles}) → AllPoints
  6. Point(yAxis) → Interface
  7. Point(AllPoints) → IncidentTail
  8. CircleArc(Interface, CircleRight, CircleLeft) → Circle
  9. Segment(Interface, IncidentTail) → IncidentSegment
  10. Vector(IncidentTail, Interface) → Incident
  11. Length(Incident) → Mag
  12. Segment((0, 0), (0, AxisHeight)) → YAxisUp
  13. If(x(IncidentTail) ≤ 0, Angle[YAxisUp, IncidentSegment], Angle[IncidentSegment, YAxisUp]) → AA
  14. Segment(Interface, RefractedHead) → RefractedSegment
  15. Segment((0, 0), (0, (-AxisHeight))) → YAxisDown
  16. If(xR ≥ 0, Angle[YAxisDown, RefractedSegment], Angle[RefractedSegment, YAxisDown]) → BB
  17. Point(xAxis) → Corner1
  18. Point(xAxis) → Corner4
  19. Polygon(Corner1, Corner4, Corner3, Corner2) → medium, a, b, c, d
  20. Vector(Interface, RefractedHead) → Refracted
  21. Textfield(n1) → InputBox1
  22. Textfield(n2) → InputBox2
  23. Vector(Interface, ReflectedHead) → Reflected
  24. Segment(Interface, ReflectedHead) → ReflectedSegment
  25. If(x(ReflectedHead) ≤ 0, Angle[YAxisUp, ReflectedSegment], Angle[ReflectedSegment, YAxisUp]) → AARefl
  26. Vector(Interface, RefractedHead) → TIR
  27. If(x(IncidentTail) ≤ 0, Angle[YAxisUp, IncidentSegment], Angle[IncidentSegment, YAxisUp]) → AACrit
  28. If(x(ReflectedHead) ≤ 0, Angle[YAxisUp, ReflectedSegment], Angle[ReflectedSegment, YAxisUp]) → AAReflCrit
  29. If(xR ≥ 0, Angle[YAxisDown, RefractedSegment], Angle[RefractedSegment, YAxisDown]) → BBCrit
  30. Polygon(Corner1_2, Corner4_2, Corner3_2, Corner2_2) → mediumn1, corner1_2, corner4_2, corner3_2, corner2_2
  31. Segment(Interface, (0, (-radius))) → YAxis
  32. Segment(Interface, (radius, 0)) → XAxis
  33. Angle(YAxis, XAxis) → BBCrit2
  34. Vector(Interface, RefractedHead) → TIR2