全内反射模拟
几何画板及绘图内容加载中,请稍等……
①本范例演示光线在不同介质界面上的全内反射现象;②涉及折射定律、临界角、三角函数、向量运算等核心数学概念;③通过 GeoGebra 命令 If, Sequence, Join, Point, CircleArc, Segment, Vector, Length, Polygon, Textfield, Angle 等实现光线路径、角度测量与动态演示;④适合高中物理光学教学与大学基础物理实验演示。
GeoGebra 命令及参数
If(n1 > n2, asin(n2 / n1), 0) → thetacIf(n1 ≤ n2, (radius, 0), ((radius * cos(π / 2 - thetac)), (radius * sin(π / 2 - thetac)))) → CircleRightIf(n1 ≤ n2, ((-radius), 0), ((radius * cos(π / 2 + thetac)), (radius * sin(π / 2 + thetac)))) → CircleLeftSequence(((radius * cos((i * π / N))), (radius * sin((i * π / N)))), i, 0, N) → CirclePointsJoin({CirclePoints, CriticalAngles}) → AllPointsPoint(yAxis) → InterfacePoint(AllPoints) → IncidentTailCircleArc(Interface, CircleRight, CircleLeft) → CircleSegment(Interface, IncidentTail) → IncidentSegmentVector(IncidentTail, Interface) → IncidentLength(Incident) → MagSegment((0, 0), (0, AxisHeight)) → YAxisUpIf(x(IncidentTail) ≤ 0, Angle[YAxisUp, IncidentSegment], Angle[IncidentSegment, YAxisUp]) → AASegment(Interface, RefractedHead) → RefractedSegmentSegment((0, 0), (0, (-AxisHeight))) → YAxisDownIf(xR ≥ 0, Angle[YAxisDown, RefractedSegment], Angle[RefractedSegment, YAxisDown]) → BBPoint(xAxis) → Corner1Point(xAxis) → Corner4Polygon(Corner1, Corner4, Corner3, Corner2) → medium, a, b, c, dVector(Interface, RefractedHead) → RefractedTextfield(n1) → InputBox1Textfield(n2) → InputBox2Vector(Interface, ReflectedHead) → ReflectedSegment(Interface, ReflectedHead) → ReflectedSegmentIf(x(ReflectedHead) ≤ 0, Angle[YAxisUp, ReflectedSegment], Angle[ReflectedSegment, YAxisUp]) → AAReflVector(Interface, RefractedHead) → TIRIf(x(IncidentTail) ≤ 0, Angle[YAxisUp, IncidentSegment], Angle[IncidentSegment, YAxisUp]) → AACritIf(x(ReflectedHead) ≤ 0, Angle[YAxisUp, ReflectedSegment], Angle[ReflectedSegment, YAxisUp]) → AAReflCritIf(xR ≥ 0, Angle[YAxisDown, RefractedSegment], Angle[RefractedSegment, YAxisDown]) → BBCritPolygon(Corner1_2, Corner4_2, Corner3_2, Corner2_2) → mediumn1, corner1_2, corner4_2, corner3_2, corner2_2Segment(Interface, (0, (-radius))) → YAxisSegment(Interface, (radius, 0)) → XAxisAngle(YAxis, XAxis) → BBCrit2Vector(Interface, RefractedHead) → TIR2