Snell's Law with Spherical and Parabolic Lenses
Loading the math board and drawing, please wait…
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
Point(xAxis) → APoint(yAxis) → BPoint(yAxis) → CIf(toptype ≟ 0, "top=planar", If[toptype ≟ 1, "top=spherical", If[toptype ≟ 2, "top=parabolic", "top=hyperbolic"]]) → text1If(bottomtype ≟ 0, "bottom=planar", If[bottomtype ≟ 1, "bottom=spherical", If[bottomtype ≟ 2, "bottom=parabolic", "bottom=hyperbolic"]]) → text2Sequence(((-0.95 * x(A)) + (n * spaces), (1.2 * y(B))), n, 0, rays - 1, 1) → sourcesZip((x(a), top(x(a))), a, sources) → toppointsZip(Tangent[a, top], a, toppoints) → toptanZip(OrthogonalLine[a, b], a, toppoints, b, toptan) → topnormZip(Line[a, b], a, sources, b, toppoints) → incomingZip(abs(asin(sin(Angle[a, b]))), a, incoming, b, topnorm) → inanglesZip(asind((n_{out} / n_{lens} * sin(a))), a, inangles) → crossangleZip(Line[a, Rotate[(x(a), -10), ((-sgn(x(a))) * (b - c)), a]], a, toppoints, b, inangles, c, crossangle) → crossingZip(Intersect[bottom, a, (29.420552056733573, -1.7023774529930544)], a, crossing) → bottompointsZip(Tangent[a, bottom], a, bottompoints) → bottomtanZip(OrthogonalLine[a, b], a, bottompoints, b, bottomtan) → bottomnormZip(abs(asin(sin(Angle[b, a]))), a, bottomnorm, b, crossing) → bottomangleZip(asin((n_{lens} / n_{out} * sin(a))), a, bottomangle) → outangleZip(Rotate[Intersect[a, Line[(0, (20 * y(C))), xAxis]], ((-sgn(x(b))) * (d - c)), b], a, crossing, b, bottompoints, c, bottomangle, d, outangle) → outpointsZip(PolyLine[a, b, c, d], a, sources, b, toppoints, c, bottompoints, d, outpoints) → paths