斯涅尔定律与球面和抛物面透镜

斯涅尔定律与球面和抛物面透镜
几何画板及绘图内容加载中,请稍等……
2016-02-12 07:59
①本范例演示平行光线通过球面和抛物面透镜时的折射现象;②涉及的核心数学概念包括斯涅尔定律、折射率、角度计算;③作图要点——使用了Point, If, Sequence, Zip等GeoGebra命令和对象来追踪光线在透镜进入和离开时的折射路径;④适合高中及以上学生学习和理解光学原理及几何作图。

GeoGebra 命令及参数

  1. Point(xAxis) → A
  2. Point(yAxis) → B
  3. Point(yAxis) → C
  4. If(toptype ≟ 0, "top=planar", If[toptype ≟ 1, "top=spherical", If[toptype ≟ 2, "top=parabolic", "top=hyperbolic"]]) → text1
  5. If(bottomtype ≟ 0, "bottom=planar", If[bottomtype ≟ 1, "bottom=spherical", If[bottomtype ≟ 2, "bottom=parabolic", "bottom=hyperbolic"]]) → text2
  6. Sequence(((-0.95 * x(A)) + (n * spaces), (1.2 * y(B))), n, 0, rays - 1, 1) → sources
  7. Zip((x(a), top(x(a))), a, sources) → toppoints
  8. Zip(Tangent[a, top], a, toppoints) → toptan
  9. Zip(OrthogonalLine[a, b], a, toppoints, b, toptan) → topnorm
  10. Zip(Line[a, b], a, sources, b, toppoints) → incoming
  11. Zip(abs(asin(sin(Angle[a, b]))), a, incoming, b, topnorm) → inangles
  12. Zip(asind((n_{out} / n_{lens} * sin(a))), a, inangles) → crossangle
  13. Zip(Line[a, Rotate[(x(a), -10), ((-sgn(x(a))) * (b - c)), a]], a, toppoints, b, inangles, c, crossangle) → crossing
  14. Zip(Intersect[bottom, a, (29.420552056733573, -1.7023774529930544)], a, crossing) → bottompoints
  15. Zip(Tangent[a, bottom], a, bottompoints) → bottomtan
  16. Zip(OrthogonalLine[a, b], a, bottompoints, b, bottomtan) → bottomnorm
  17. Zip(abs(asin(sin(Angle[b, a]))), a, bottomnorm, b, crossing) → bottomangle
  18. Zip(asin((n_{lens} / n_{out} * sin(a))), a, bottomangle) → outangle
  19. Zip(Rotate[Intersect[a, Line[(0, (20 * y(C))), xAxis]], ((-sgn(x(b))) * (d - c)), b], a, crossing, b, bottompoints, c, bottomangle, d, outangle) → outpoints
  20. Zip(PolyLine[a, b, c, d], a, sources, b, toppoints, c, bottompoints, d, outpoints) → paths