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