Math'art: Trace of balls in the ellipsoidal billiard

Math'art: Trace of balls in the ellipsoidal billiard
Loading the math board and drawing, please wait…
2020-03-12 05:24
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

  1. Ellipse(F_1, F_2, a / 2) → c
  2. Point(c) → B
  3. PointIn(c) → A
  4. Ellipse_Reflect(c, A1, A2) → A3
  5. Ellipse_Reflect(c, A2, A3) → A4
  6. Ellipse_Reflect(c, A3, A4) → A5
  7. Ellipse_Reflect(c, A4, A5) → A6
  8. Ellipse_Reflect(c, A5, A6) → A7
  9. Ellipse_Reflect(c, A6, A7) → A8
  10. Ellipse_Reflect(c, A7, A8) → A9
  11. Ellipse_Reflect(c, A8, A9) → A10
  12. Ellipse_Reflect(c, A9, A10) → A11
  13. Ellipse_Reflect(c, A10, A11) → A12
  14. Ellipse_Reflect(c, A11, A12) → A13
  15. Ellipse_Reflect(c, A12, A13) → A14
  16. Ellipse_Reflect(c, A13, A14) → A15
  17. Ellipse_Reflect(c, A14, A15) → A16
  18. Ellipse_Reflect(c, A15, A16) → A17
  19. Ellipse_Reflect(c, A16, A17) → A18
  20. Ellipse_Reflect(c, A17, A18) → A19
  21. Ellipse_Reflect(c, A18, A19) → A20
  22. Ellipse_Reflect(c, A19, A20) → A21
  23. Ellipse_Reflect(c, A20, A21) → A22
  24. Ellipse_Reflect(c, A21, A22) → A23
  25. Ellipse_Reflect(c, A22, A23) → A24
  26. Ellipse_Reflect(c, A23, A24) → A25
  27. Ellipse_Reflect(c, A24, A25) → A26
  28. Ellipse_Reflect(c, A25, A26) → A27
  29. Ellipse_Reflect(c, A26, A27) → A28
  30. Ellipse_Reflect(c, A27, A28) → A29
  31. Ellipse_Reflect(c, A28, A29) → A30
  32. Ellipse_Reflect(c, A29, A30) → A31
  33. Ellipse_Reflect(c, A30, A31) → A32
  34. Ellipse_Reflect(c, A31, A32) → A33
  35. Ellipse_Reflect(c, A32, A33) → A34
  36. Ellipse_Reflect(c, A33, A34) → A35
  37. Ellipse_Reflect(c, A34, A35) → A36
  38. Ellipse_Reflect(c, A35, A36) → A37
  39. Ellipse_Reflect(c, A36, A37) → A38
  40. Ellipse_Reflect(c, A37, A38) → A39
  41. Ellipse_Reflect(c, A38, A39) → A40
  42. Ellipse_Reflect(c, A39, A40) → A41
  43. Ellipse_Reflect(c, A40, A41) → A42
  44. Ellipse_Reflect(c, A41, A42) → A43
  45. Ellipse_Reflect(c, A42, A43) → A44
  46. Ellipse_Reflect(c, A43, A44) → A45
  47. Ellipse_Reflect(c, A44, A45) → A46
  48. Ellipse_Reflect(c, A45, A46) → A47
  49. Ellipse_Reflect(c, A46, A47) → A48
  50. Ellipse_Reflect(c, A47, A48) → A49
  51. Ellipse_Reflect(c, A48, A49) → A50
  52. Ellipse_Reflect(c, A49, A50) → A51
  53. Sequence(Cell[1, i], i, 1, floor(n) + 1) → list1
  54. PolyLine(list1) → b
  55. Vector(Element[list1, floor(n) + 1], P) → u
  56. Ellipse_Reflect(c, A50, A51) → A52
  57. Ellipse_Reflect(c, A51, A52) → A53
  58. Ellipse_Reflect(c, A52, A53) → A54
  59. Ellipse_Reflect(c, A53, A54) → A55
  60. Ellipse_Reflect(c, A54, A55) → A56
  61. Ellipse_Reflect(c, A55, A56) → A57
  62. Ellipse_Reflect(c, A56, A57) → A58
  63. Ellipse_Reflect(c, A57, A58) → A59
  64. Ellipse_Reflect(c, A58, A59) → A60
  65. Ellipse_Reflect(c, A59, A60) → A61
  66. Ellipse_Reflect(c, A60, A61) → A62
  67. Ellipse_Reflect(c, A61, A62) → A63
  68. Ellipse_Reflect(c, A62, A63) → A64
  69. Ellipse_Reflect(c, A63, A64) → A65
  70. Ellipse_Reflect(c, A64, A65) → A66
  71. Ellipse_Reflect(c, A65, A66) → A67
  72. Ellipse_Reflect(c, A66, A67) → A68
  73. Ellipse_Reflect(c, A67, A68) → A69
  74. Ellipse_Reflect(c, A68, A69) → A70
  75. Ellipse_Reflect(c, A69, A70) → A71
  76. Ellipse_Reflect(c, A70, A71) → A72
  77. Ellipse_Reflect(c, A71, A72) → A73
  78. Ellipse_Reflect(c, A72, A73) → A74
  79. Ellipse_Reflect(c, A73, A74) → A75
  80. Ellipse_Reflect(c, A74, A75) → A76
  81. Ellipse_Reflect(c, A75, A76) → A77
  82. Ellipse_Reflect(c, A76, A77) → A78
  83. Ellipse_Reflect(c, A77, A78) → A79
  84. Ellipse_Reflect(c, A78, A79) → A80
  85. Ellipse_Reflect(c, A79, A80) → A81
  86. Ellipse_Reflect(c, A80, A81) → A82
  87. Ellipse_Reflect(c, A81, A82) → A83
  88. Ellipse_Reflect(c, A82, A83) → A84
  89. Ellipse_Reflect(c, A83, A84) → A85
  90. Ellipse_Reflect(c, A84, A85) → A86
  91. Ellipse_Reflect(c, A85, A86) → A87
  92. Ellipse_Reflect(c, A86, A87) → A88
  93. Ellipse_Reflect(c, A87, A88) → A89
  94. Ellipse_Reflect(c, A88, A89) → A90
  95. Ellipse_Reflect(c, A89, A90) → A91
  96. Ellipse_Reflect(c, A90, A91) → A92
  97. Ellipse_Reflect(c, A91, A92) → A93
  98. Ellipse_Reflect(c, A92, A93) → A94
  99. Ellipse_Reflect(c, A93, A94) → A95
  100. Ellipse_Reflect(c, A94, A95) → A96
  101. Ellipse_Reflect(c, A95, A96) → A97
  102. Ellipse_Reflect(c, A96, A97) → A98
  103. Ellipse_Reflect(c, A97, A98) → A99
  104. Ellipse_Reflect(c, A98, A99) → A100
  105. Ellipse(F_1 - (0.25, 0), F_2 + (0.25, 0), (a + 1.5) / 2) → d