Math'art: Trace of balls in the ellipsoidal billiard
Loading the math board and drawing, please wait…
This example demonstrates the artistic trace of a ball moving inside an elliptical billiard table, where each reflection off the boundary follows the law of reflection. The core mathematical concept is the optical property of an ellipse: any ray emanating from one focus reflects off the ellipse and passes through the other focus. The construction uses GeoGebra commands such as Ellipse to define the boundary, Point and PointIn to place foci and interior points, Ellipse_Reflect to compute reflected paths, Sequence to iterate multiple reflections, and PolyLine to connect the traced segments. Vectors are used to indicate direction. This is suitable for high school and above, serving as a visual tool to explore conic sections, reflection laws, and iterative sequences, while also showcasing the beauty of mathematical art.
GeoGebra Commands & Parameters
Ellipse(F_1, F_2, a / 2) → cPoint(c) → BPointIn(c) → AEllipse_Reflect(c, A1, A2) → A3Ellipse_Reflect(c, A2, A3) → A4Ellipse_Reflect(c, A3, A4) → A5Ellipse_Reflect(c, A4, A5) → A6Ellipse_Reflect(c, A5, A6) → A7Ellipse_Reflect(c, A6, A7) → A8Ellipse_Reflect(c, A7, A8) → A9Ellipse_Reflect(c, A8, A9) → A10Ellipse_Reflect(c, A9, A10) → A11Ellipse_Reflect(c, A10, A11) → A12Ellipse_Reflect(c, A11, A12) → A13Ellipse_Reflect(c, A12, A13) → A14Ellipse_Reflect(c, A13, A14) → A15Ellipse_Reflect(c, A14, A15) → A16Ellipse_Reflect(c, A15, A16) → A17Ellipse_Reflect(c, A16, A17) → A18Ellipse_Reflect(c, A17, A18) → A19Ellipse_Reflect(c, A18, A19) → A20Ellipse_Reflect(c, A19, A20) → A21Ellipse_Reflect(c, A20, A21) → A22Ellipse_Reflect(c, A21, A22) → A23Ellipse_Reflect(c, A22, A23) → A24Ellipse_Reflect(c, A23, A24) → A25Ellipse_Reflect(c, A24, A25) → A26Ellipse_Reflect(c, A25, A26) → A27Ellipse_Reflect(c, A26, A27) → A28Ellipse_Reflect(c, A27, A28) → A29Ellipse_Reflect(c, A28, A29) → A30Ellipse_Reflect(c, A29, A30) → A31Ellipse_Reflect(c, A30, A31) → A32Ellipse_Reflect(c, A31, A32) → A33Ellipse_Reflect(c, A32, A33) → A34Ellipse_Reflect(c, A33, A34) → A35Ellipse_Reflect(c, A34, A35) → A36Ellipse_Reflect(c, A35, A36) → A37Ellipse_Reflect(c, A36, A37) → A38Ellipse_Reflect(c, A37, A38) → A39Ellipse_Reflect(c, A38, A39) → A40Ellipse_Reflect(c, A39, A40) → A41Ellipse_Reflect(c, A40, A41) → A42Ellipse_Reflect(c, A41, A42) → A43Ellipse_Reflect(c, A42, A43) → A44Ellipse_Reflect(c, A43, A44) → A45Ellipse_Reflect(c, A44, A45) → A46Ellipse_Reflect(c, A45, A46) → A47Ellipse_Reflect(c, A46, A47) → A48Ellipse_Reflect(c, A47, A48) → A49Ellipse_Reflect(c, A48, A49) → A50Ellipse_Reflect(c, A49, A50) → A51Sequence(Cell[1, i], i, 1, floor(n) + 1) → list1PolyLine(list1) → bVector(Element[list1, floor(n) + 1], P) → uEllipse_Reflect(c, A50, A51) → A52Ellipse_Reflect(c, A51, A52) → A53Ellipse_Reflect(c, A52, A53) → A54Ellipse_Reflect(c, A53, A54) → A55Ellipse_Reflect(c, A54, A55) → A56Ellipse_Reflect(c, A55, A56) → A57Ellipse_Reflect(c, A56, A57) → A58Ellipse_Reflect(c, A57, A58) → A59Ellipse_Reflect(c, A58, A59) → A60Ellipse_Reflect(c, A59, A60) → A61Ellipse_Reflect(c, A60, A61) → A62Ellipse_Reflect(c, A61, A62) → A63Ellipse_Reflect(c, A62, A63) → A64Ellipse_Reflect(c, A63, A64) → A65Ellipse_Reflect(c, A64, A65) → A66Ellipse_Reflect(c, A65, A66) → A67Ellipse_Reflect(c, A66, A67) → A68Ellipse_Reflect(c, A67, A68) → A69Ellipse_Reflect(c, A68, A69) → A70Ellipse_Reflect(c, A69, A70) → A71Ellipse_Reflect(c, A70, A71) → A72Ellipse_Reflect(c, A71, A72) → A73Ellipse_Reflect(c, A72, A73) → A74Ellipse_Reflect(c, A73, A74) → A75Ellipse_Reflect(c, A74, A75) → A76Ellipse_Reflect(c, A75, A76) → A77Ellipse_Reflect(c, A76, A77) → A78Ellipse_Reflect(c, A77, A78) → A79Ellipse_Reflect(c, A78, A79) → A80Ellipse_Reflect(c, A79, A80) → A81Ellipse_Reflect(c, A80, A81) → A82Ellipse_Reflect(c, A81, A82) → A83Ellipse_Reflect(c, A82, A83) → A84Ellipse_Reflect(c, A83, A84) → A85Ellipse_Reflect(c, A84, A85) → A86Ellipse_Reflect(c, A85, A86) → A87Ellipse_Reflect(c, A86, A87) → A88Ellipse_Reflect(c, A87, A88) → A89Ellipse_Reflect(c, A88, A89) → A90Ellipse_Reflect(c, A89, A90) → A91Ellipse_Reflect(c, A90, A91) → A92Ellipse_Reflect(c, A91, A92) → A93Ellipse_Reflect(c, A92, A93) → A94Ellipse_Reflect(c, A93, A94) → A95Ellipse_Reflect(c, A94, A95) → A96Ellipse_Reflect(c, A95, A96) → A97Ellipse_Reflect(c, A96, A97) → A98Ellipse_Reflect(c, A97, A98) → A99Ellipse_Reflect(c, A98, A99) → A100Ellipse(F_1 - (0.25, 0), F_2 + (0.25, 0), (a + 1.5) / 2) → d