Viviani's Theorem: Sum of Perpendicular Distances in an Equilateral Triangle

Viviani's Theorem: Sum of Perpendicular Distances in an Equilateral Triangle
Loading the math board and drawing, please wait…
2012-10-25 09:14
This GeoGebra example demonstrates Viviani's Theorem, which states that for any point inside or on the boundary of an equilateral triangle, the sum of the perpendicular distances from the point to the three sides equals the triangle's altitude. Core mathematical concepts include equilateral triangles, perpendicular distance from a point to a line, triangle altitude, area decomposition, and geometric invariants. The construction uses GeoGebra commands such as Ray, Point, Polygon, PointIn, OrthogonalLine, Intersect, Segment, Line, If, Rotate, Translate, and Angle, with objects A, B, C, P, p_1, p_2, p_3, F, G, H and polygons poly1, poly2, poly3 to build the dynamic diagram. It is suitable for high school geometry instruction, theorem verification, and interactive geometric exploration.

GeoGebra Commands & Parameters

  1. Ray(A, B) → baseRay
  2. Point(baseRay) → C
  3. Polygon(A, C, 3) → poly1, l_3, l_1, l_2, D
  4. PointIn(poly1) → P
  5. OrthogonalLine(P, l_2) → p_1
  6. OrthogonalLine(P, l_1) → p_2
  7. OrthogonalLine(P, l_3) → p_3
  8. Intersect(p_1, l_2) → F
  9. Intersect(p_3, baseRay) → G
  10. Intersect(p_2, l_1) → H
  11. Segment(F, P) → h_4
  12. Segment(H, P) → h_5
  13. Segment(G, P) → h_3
  14. Line(P, l_3) → horizon
  15. Intersect(horizon, l_2) → I
  16. Intersect(horizon, l_1) → J
  17. Polygon(I, P, 3) → poly2, e_3, e_2, e_1, K
  18. Polygon(P, J, 3) → poly3, f_3, f_1, f_2, L
  19. OrthogonalLine(K, e_3) → p_4
  20. OrthogonalLine(L, f_3) → p_5
  21. Intersect(p_4, h_4) → M
  22. Intersect(p_5, h_5) → N
  23. If(k ≤ 1, k, 1) → k_1
  24. If(k ≥ 1, If[k ≥ 2, 1, k - 1], 0) → k_2
  25. Rotate(poly2, ((k_1 * 120))°, M) → poly2'
  26. Rotate(poly3, (((-k_2) * 120))°, N) → poly3'
  27. Rotate(F, ((k_1 * 120))°, M) → F'
  28. Rotate(P, ((k_1 * 120))°, M) → P_r1
  29. Segment(F', P_r1) → h_2
  30. Rotate(H, (((-k_2) * 120))°, N) → H'
  31. Rotate(P, (((-k_2) * 120))°, N) → P_r2
  32. Segment(H', P_r2) → h_7
  33. If(k ≥ 2, k - 2, 0) → k_3
  34. Translate(poly3', Vector[(k_3 * Vector[L, D])]) → poly3''
  35. Translate(H', Vector[(k_3 * Vector[L, D])]) → H''
  36. Translate(P_r2, Vector[(k_3 * Vector[L, D])]) → P_t
  37. Segment(H'', P_t) → h_1
  38. Angle(P, G, A) → α
  39. Angle(P, F, D) → β
  40. Angle(P, H, C) → γ

AI Drawing Prompt Reference

Draw an equilateral triangle, pick an arbitrary interior point, and drop perpendiculars from the point to each side to obtain three foot points; connect the point to the three feet forming three perpendicular segments. Then construct three small equilateral triangles on these segments, rotate each small triangle 120° about its corresponding foot, and translate them so the three perpendicular segments line up end‑to‑end into a single segment coinciding with the altitude of the large triangle, visually demonstrating Viviani's theorem that the sum of the three perpendicular distances equals the triangle's height.
The prompt above was compiled from the original drawing commands and is for reference only.