Viviani's Theorem Demonstration

Viviani's Theorem Demonstration
Loading the math board and drawing, please wait…
2019-03-27 04:04
This example demonstrates Viviani's theorem within a triangle, showing that the sum of the distances from the centroid to the three sides equals one-third of the triangle's altitude. Key math concepts include centroid, altitude, distance, and Viviani's theorem. Construction involves commands like Circle, Point, Translate, Polygon, OrthogonalLine, Intersect, Line, Segment, Centroid, Max, Rotate, Midpoint, and Vector to build the triangle, altitudes, centroid, and related segments. Suitable for high school mathematics students and teachers to understand and verify the theorem.

GeoGebra Commands & Parameters

  1. Circle(V, W) → c_1
  2. Point(c_1, b_1 / 8) → D
  3. Translate(D, Vector[(c * Vector[(4, 0)])]) → D'
  4. Translate(A, Vector[(c * Vector[(4, 0)])]) → A'
  5. Point(xAxis) → B
  6. Translate(B, Vector[(c * Vector[(4, 0)])]) → B'
  7. Polygon(A, B, 3) → poly1, f, g, h, C
  8. OrthogonalLine(D, Segment[A, C]) → j
  9. Intersect(j, Segment[A, C]) → F
  10. Translate(F, Vector[(c * Vector[(4, 0)])]) → F'
  11. OrthogonalLine(D, Segment[B, C]) → i
  12. Intersect(i, Segment[B, C]) → E
  13. Translate(E, Vector[(c * Vector[(4, 0)])]) → E'
  14. Line(D', Rotate[E', 30°, D']) → p
  15. Line(D', Rotate[E', (-(30°)), D']) → q
  16. Translate(C, Vector[(c * Vector[(4, 0)])]) → C'_1
  17. Segment(A', C'_1) → s
  18. Intersect(s, Line[D', Rotate[F', (-(30°)), D']]) → K
  19. Intersect(q, s) → P
  20. Translate(C, Vector[(c * Vector[(4, 0)])]) → C'
  21. Segment(B', C') → r
  22. Intersect(p, r) → H
  23. Intersect(q, r) → O
  24. Centroid(Polygon[O, P, C'_1]) → N
  25. Intersect(q, s) → J
  26. Polygon(K, D', J) → t1, j_2, k_2, d'
  27. Centroid(t1) → L
  28. Max(Min[a, 1], 0) → b
  29. Segment(D, ((1 - b) * D) + (b * F)) → n
  30. Translate(poly1, Vector[(c * Vector[(4, 0)])]) → poly1'
  31. OrthogonalLine(D, Segment[A, B]) → k
  32. Intersect(k, Segment[A, B]) → G
  33. Segment(D, ((1 - b) * D) + (b * G)) → l
  34. Segment(D, ((1 - b) * D) + (b * E)) → m
  35. Translate(m, Vector[(c * Vector[(4, 0)])]) → m'
  36. Translate(G, Vector[(c * Vector[(4, 0)])]) → G'
  37. Translate(A, Vector[(c * Vector[(4, 0)])]) → A'_1
  38. Translate(B, Vector[(c * Vector[(4, 0)])]) → B'_1
  39. Segment(A'_1, B'_1) → t
  40. Intersect(q, r) → I
  41. Segment(K, ((1 - d) * K) + (d * J)) → j_1
  42. Segment(H, ((1 - d) * H) + (d * I)) → k_1
  43. Polygon(H, I, D') → t2, l_1, h_2, i_2
  44. Centroid(t2) → M
  45. Rotate(Rotate[K, ((-e) * 120°), L], ((-o) * 120°), N) → K'
  46. Rotate(Rotate[J, ((-e) * 120°), L], ((-o) * 120°), N) → J'
  47. Rotate(Rotate[D', ((-e) * 120°), L], ((-o) * 120°), N) → D''
  48. Translate(Rotate[H, ((-o) * 120°), N], Vector[((0.5 * u) * Vector[K', H])]) → H'
  49. Translate(Rotate[I, ((-o) * 120°), N], Vector[((0.5 * u) * Vector[K', H])]) → I'
  50. Translate(Rotate[D', ((-o) * 120°), N], Vector[((0.5 * u) * Vector[K', H])]) → D''_1
  51. Intersect(p, t) → Q
  52. Line(D', Rotate[G', 30°, D']) → m_1
  53. Intersect(m_1, t) → R
  54. Segment(R, ((1 - d) * R) + (d * Q)) → q_1
  55. Midpoint(Segment[A, B]) → S
  56. Midpoint(Segment[C, B]) → T
  57. Midpoint(Segment[C, A]) → U
  58. Polygon(D', R, Q) → t3, q_2, r_1, r_2
  59. Translate(D', Vector[(u * Vector[G, S])]) → D''_2
  60. Translate(R, Vector[(u * Vector[G, S])]) → R'
  61. Translate(Q, Vector[(u * Vector[G, S])]) → Q'
  62. Segment(A, B) → s_1
  63. Segment(C, B) → t_1
  64. Segment(C, A) → a_1
  65. Line(D', t) → f_1
  66. Intersect(s, f_1) → Z
  67. Intersect(r, k_1) → A_1
  68. Intersect(r, k_1) → B_1
  69. Intersect(f_1, r) → C_1
  70. Rotate(Polygon[Z, C_1, ((1 - e) * C') + (e * Mirror[C', Segment[Z, C_1]])], ((-u) * 60°), C_1) → t4
  71. Vector((x(C) - x(D), 0)) → v
  72. Segment(Z, ((1 - d) * Z) + (d * C_1)) → g_1
  73. Rotate(Segment[Translate[D', Vector[(o * Vector[F', Z])]], Translate[D_1, Vector[(o * Vector[F', Z])]]], ((-u) * 60°), C_1) → m'_1
  74. Rotate(Translate[n, Vector[(c * Vector[(4, 0)]) + (o * Vector[F', Z])]], ((-u) * 60°), C_1) → n'
  75. Translate(l, Vector[(c * Vector[(4, 0)]) + (w * v)]) → l'