Snell's Law with Spherical and Parabolic Lenses

Snell's Law with Spherical and Parabolic Lenses
Loading the math board and drawing, please wait…
2016-02-12 07:59
This example demonstrates how parallel light rays refract through spherical and parabolic lenses, tracking each ray's path using Snell's Law upon entering and exiting the lens. Key math concepts include Snell's Law, refraction indices, and angle calculations. GeoGebra commands like Point, If, Sequence, and Zip are used to construct the ray paths. Suitable for high school and above students learning optical principles and geometric constructions.

GeoGebra Commands & Parameters

  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