Viviani's Theorem Dynamic Illustration

Viviani's Theorem Dynamic Illustration
Loading the math board and drawing, please wait…
2017-12-03 10:35
In collections Geometry Review
This example dynamically demonstrates Viviani's Theorem without words or numbers. It uses GeoGebra commands such as Polygon, Dilate, Segment, Circle, Intersect, Rotate, Vector, Centroid, CircleArc, PointIn, Line, OrthogonalLine, Angle, Midpoint, Translate to construct the illustration, suitable for middle school and above students to learn geometric transformations and triangle properties.

GeoGebra Commands & Parameters

  1. Polygon(A, B, 3) → poly1, a, b, c, C
  2. Dilate(A, If[0 < d ≤ 1, 1 - d, 0], B) → A'
  3. Segment(A, A') → e
  4. Dilate(B, If[1 < d ≤ 2, 2 - d, 0], C) → B'
  5. Dilate(C, If[2 < d ≤ 3, 3 - d, 0], A) → C'
  6. Segment(A, B) → h
  7. Segment(A, C) → i
  8. Segment(B, C) → j
  9. Circle(A, (0.15 * h)) → k
  10. Intersect(k, i, 1) → D
  11. Intersect(k, h, 1) → E
  12. Rotate(A, If[3.5 < d ≤ 4.5, ((d - 3.5) * pi / 3), 1.0471975511965976], A) → A'_1
  13. Rotate(A', If[3.5 < d ≤ 4.5, ((d - 3.5) * pi / 3), 1.0471975511965976], A) → A''
  14. Segment(A'_1, A'') → e'
  15. Rotate(A, If[4.5 < d ≤ 5.5, ((-(d - 4.5)) * pi / 3), -1.0471975511965976], B) → A'_2
  16. Rotate(A', If[4.5 < d ≤ 5.5, ((-(d - 4.5)) * pi / 3), -1.0471975511965976], B) → A''_1
  17. Segment(A'_2, A''_1) → e'_1
  18. Dilate(A, If[6 < d ≤ 7, 7 - d, 0], B) → A'_3
  19. Vector(A, A'_3) → u
  20. Circle(B, (0.15 * h)) → r
  21. Intersect(r, j, 1) → F
  22. Intersect(r, h, 1) → K
  23. Dilate(B, If[8 < d ≤ 9, 9 - d, 0], C) → B'_1
  24. Vector(B, B'_1) → v
  25. Centroid(poly1) → L
  26. Circle(L, B) → p
  27. CircleArc(L, B, A) → q
  28. CircleArc(L, A, B) → t
  29. Rotate(B, If[5.5 < d ≤ 6.5, (((d - 5.5) * 4) * pi / 3), (4 * pi / 3)], L) → B'_2
  30. Rotate(A, If[6.5 < d ≤ 7.5, (((d - 6.5) * 2) * pi / 3), (2 * pi / 3)], L) → A'_4
  31. PointIn(poly1) → R
  32. Line(A, B) → p_1
  33. Line(B, C) → q_1
  34. Line(C, A) → r_1
  35. OrthogonalLine(R, p_1) → s_1
  36. OrthogonalLine(R, q_1) → t_1
  37. OrthogonalLine(R, r_1) → a_1
  38. Intersect(r_1, a_1) → S
  39. Intersect(t_1, q_1) → T
  40. Intersect(p_1, s_1) → U
  41. Angle(B, U, R) → α
  42. Angle(C, T, R) → β
  43. Angle(R, S, A) → γ
  44. Midpoint(A, B) → V
  45. Segment(R, T) → l
  46. Segment(R, S) → m
  47. Segment(R, U) → n
  48. Line(C, V) → s
  49. Circle(C, m) → c_1
  50. Intersect(c_1, s) → M, N
  51. Circle(N, l) → d_1
  52. Intersect(d_1, s) → O, P
  53. Dilate(R, If[7 < d ≤ 8, 8 - d, 0], S) → R'
  54. Segment(R, R') → f_1
  55. Dilate(R, If[8 < d ≤ 9, 9 - d, 0], T) → R'_1
  56. Segment(R, R'_1) → g_1
  57. Angle(C, V, B) → δ
  58. Dilate(R, If[9 < d ≤ 10, 10 - d, 0], U) → R'_2
  59. Segment(R, R'_2) → h_1
  60. Dilate(C, If[11 < d ≤ 12, 12 - d, 0], N) → C'_1
  61. Dilate(N, If[12 < d ≤ 13, 13 - d, 0], P) → N'
  62. Dilate(P, If[13 < d ≤ 14, 14 - d, 0], V) → P'
  63. Segment(C, C'_1) → i_1
  64. Segment(N, N') → j_1
  65. Segment(P, P') → k_1
  66. Dilate(R, If[15 < d ≤ 16, 16 - d, 0], N) → R'_3
  67. Vector(R, R'_3) → w
  68. Translate(R, w) → R'_4
  69. Translate(R', w) → R''
  70. Rotate(R'_4, If[16 < d ≤ 17, ((-(d - 16)) * pi / 3), ((-pi)) / 3], N) → Q
  71. Dilate(R, If[17 < d ≤ 18, 18 - d, 0], P) → R'_5
  72. Vector(R, R'_5) → u_1
  73. Translate(R, u_1) → R'_6
  74. Translate(R'_1, u_1) → W
  75. Rotate(R'_6, If[18 < d ≤ 19, ((d - 18) * pi / 3), pi / 3], P) → Z
  76. Rotate(W, If[18 < d ≤ 19, ((d - 18) * pi / 3), pi / 3], P) → W'
  77. Dilate(R, If[19 < d ≤ 20, 20 - d, 0], P) → R'_7
  78. Vector(R, R'_7) → v_1
  79. Translate(R, v_1) → R'_8
  80. Translate(R'_2, v_1) → A_1
  81. Segment(R'_8, A_1) → e_1
  82. Dilate(R', If[15 < d ≤ 16, 16 - d, 0], C) → R''_{1}
  83. Vector(R', R''_{1}) → w_1
  84. Translate(R, w_1) → R'_{9}
  85. Translate(R', w_1) → R''_{2}
  86. Segment(R'_{9}, R''_{2}) → f_2
  87. Rotate(R'_{9}, If[16 < d ≤ 17, ((-(d - 16)) * pi / 3), ((-pi)) / 3], R''_{1}) → B_1
  88. Rotate(R''_{2}, If[16 < d ≤ 17, ((-(d - 16)) * pi / 3), ((-pi)) / 3], R''_{1}) → C_1
  89. Segment(B_1, C_1) → l_1
  90. Dilate(R'_1, If[17 < d ≤ 18, 18 - d, 0], N) → D_1
  91. Vector(R'_1, D_1) → b_1
  92. Translate(R, b_1) → R'_{10}
  93. Translate(R'_1, b_1) → E_1
  94. Segment(R'_{10}, E_1) → m_1
  95. Rotate(R'_{10}, If[18 < d ≤ 19, ((d - 18) * pi / 3), pi / 3], N) → F_1
  96. Rotate(E_1, If[18 < d ≤ 19, ((d - 18) * pi / 3), pi / 3], N) → G_1
  97. Segment(F_1, G_1) → n_1