Simplified Model of Light Reflection in a Corner
Loading the math board and drawing, please wait…
In collections
Light
This example demonstrates a simplified model of light reflection in a corner. By adjusting the angle of the corner and the incident angle of the light, observe the changes in the path of the reflected light. Core mathematical concepts include the law of reflection, vectors, and angles. GeoGebra commands such as UnitVector, Ray, and Intersect are used in the construction. Suitable for middle school and above students to learn about geometric reflection and vectors.
GeoGebra Commands & Parameters
UnitVector(xAxis) → XCorner(imgWhite, 3) → crn3DynamicCoordinates(P', x(Corner[4] + P'' / ppu), y(Corner[4] + P'' / ppu)) → PPolygon(P, p2, p3, p4) → panel, pnl1, pnl2_1, pnl3, pnl4Polygon(P2, P2 + (w, 0), P2 + (w, h), P2 + (0, h)) → pnl2, a_1, b_1, c, d_1Midpoint(auxSl1, auxSl2) → auxSl3Segment(auxSl1, auxSl2) → dPoint(d) → sl'If(sgn(x(sl' - Midpoint[d])) ≤ 0, auxSl1, auxSl2) → sl''DynamicCoordinates(sl', x(sl''), y(sl'')) → slIf(sgn(x(sl' - Midpoint[d])) ≤ 0, 1, 2) → dexSlIntersect(xAxis, yAxis) → O'Ray(O, X) → l0Arc1(O, aux1, O - X) → rngαPoint(rngα) → P_αVector(O, P_α) → u1Ray(O, P_α) → l1Angle2(aux1, O, P_α) → αAngle(O + (2 * X), O, O + (2 * (P_α - O))) → α'Point(l0) → X0Arc1(X0, X0 + X, X0 - X) → rngθPoint(rngθ) → L0Vector(X0, L0) → R0Arc1(X0, X0 + X, L0) → arcθAngle2(X0 + X, X0, L0) → θMin(128, floor(abs(θ / α))) → mMod(m, 2) → m'Max(0, floor(xm)) → jMod(j, 2) → j'Sequence(k, k, 0, m) → nkZip((k, f(k)), k, nk) → bouncesZip(O + (k1 * If[Mod[k2, 2] ≟ 0, X, u1]), k1, times, k2, nk) → XkTake(Xk, 2, m + 1) → Xk'PolyLine(Xk) → rayPathVector(If[m' ≟ 0, z_1, conjugate(z_1)]) → RmElement(Xk', m) → XmRay(Xm, Rm) → rayPathTermSequence((2 * k), k, 0, floor(m / 2)) → kevSequence((2 * k) - 1, k, 1, ceil(m / 2)) → kodZip((k, f(k)), k, kev) → yevElement(bounces, y(DexEv) + 1) → MaxEvElement(bounces, x(DexEv) + 1) → mnEvSegmentLabel1((-1, y(mnEv)), (-1, y(MaxEv)), 0.25, 0.12, 0.07, 0, 0.5) → lbl_t, lblRngt'Element(Xk, j + j' + 1) → A'Element(Xk, y(DexEv) + 1) → B'SegmentLabel1(A', B', -0.25, 0.12, 0.07, 0, 0.5) → lblt2, lblRngtZip((k, f(k)), k, kod) → yodElement(bounces, x(DexOd) + 1) → mnOdElement(bounces, y(DexOd) + 1) → MaxOdSegmentLabel1(((-0.5), y(mnOd)), ((-0.5), y(MaxOd)), 0.25, 0.12, 0.07, 0, 0.5) → lbl_τ, lblRngτ'Element(Xk', j - j' + 1) → C'Element(Xk', y(DexOd)) → D'SegmentLabel1(C', D', 0.25, 0.12, 0.07, 0, 0.5) → lblτ2, lblRngτPoint(list1) → AMod(IndexOf[A, list1] - 1, 2) → dex4Point(list1') → B