Geometric Puzzle Demonstration of the Pythagorean Theorem

Geometric Puzzle Demonstration of the Pythagorean Theorem
Loading the math board and drawing, please wait…
2012-07-24 19:22
This GeoGebra example dynamically demonstrates the classic Pythagorean theorem puzzle, offering an intuitive geometric proof of the relationship between the squares of the sides of a right triangle through dissection and translation of shapes. Core mathematical concepts involved include the properties of right triangles, polygon areas, geometric translations, and trigonometric functions (sine). To construct this model, a combination of basic commands like Semicircle, Polygon, and Segment is used, integrated with precise geometric tools such as Intersect, Distance, and OrthogonalLine. The dynamic puzzle logic and block transformations are controlled using conditional statements (If) and translation commands (Translate). This example is ideal for middle school and higher geometry classrooms, inquiry-based learning, or teacher lesson planning, providing an excellent visual aid for understanding geometric proofs.

GeoGebra Commands & Parameters

  1. Semicircle(A, B) → z
  2. Point(z) → C
  3. Polygon(C, B, 4) → poly4, c_3, b_2, h, i, H, I
  4. Polygon(A, C, 4) → poly3, a_2, c_2, f, g, F, G
  5. Polygon(A, B, C) → poly1, c, a, b
  6. Polygon(B, A, 4) → poly2, b_1, a_1, d, e, D, E
  7. Segment(A, E) → j
  8. Segment(B, D) → k
  9. Segment(A, F) → l
  10. Segment(C, G) → m
  11. Segment(C, H) → p
  12. Segment(B, I) → q
  13. Intersect(j, k) → J
  14. Intersect(l, m) → K
  15. Intersect(p, q) → L
  16. Angle(A, C, B) → α
  17. Distance(L, D) → n_d
  18. Distance(L, E) → n_e
  19. Distance(L, B) → n_b
  20. Distance(L, A) → n_a
  21. Distance(K, J) → n_k
  22. Line(L, c) → n_1
  23. OrthogonalLine(L, n_1) → t
  24. Intersect(n_1, b_2) → M
  25. Intersect(t, h) → N
  26. Intersect(n_1, i) → O
  27. Intersect(t, c_3) → P
  28. If(n ≤ 0, 0, If[n < n_d, n / n_d, 1]) → nd
  29. Translate(L, Vector[nd * Vector[L, D]]) → LD
  30. Polygon(LD, Translate[LD, Vector[L, M]], Translate[LD, Vector[L, H]], Translate[LD, Vector[L, N]]) → poly5, ld, r, s, c_1
  31. If(n ≤ n_d, 0, If[n < n_d + n_e, (n - n_d) / n_e, 1]) → ne
  32. Translate(L, Vector[ne * Vector[L, E]]) → LE
  33. Polygon(LE, Translate[LE, Vector[L, N]], Translate[LE, Vector[L, I]], Translate[LE, Vector[L, O]]) → poly6, le, d_1, e_1, f_1
  34. If(n ≤ n_d + n_e, 0, If[n < n_d + n_e + n_k, (n - n_e - n_d) / n_k, 1]) → nk
  35. Translate(K, Vector[nk * Vector[K, J]]) → KJ
  36. Polygon(Translate[KJ, Vector[K, A]], Translate[KJ, Vector[K, C]], Translate[KJ, Vector[K, F]], Translate[KJ, Vector[K, G]]) → poly7, g_1, h_1, i_1, j_1
  37. If(n ≤ n_k + n_e + n_d, 0, If[n < n_k + n_e + n_d + n_a, (n - n_k - n_e - n_d) / n_a, 1]) → na
  38. Translate(L, Vector[na * Vector[L, A]]) → LA
  39. Polygon(LA, Translate[LA, Vector[L, P]], Translate[LA, Vector[L, B]], Translate[LA, Vector[L, M]]) → poly8, la, k_1, l_1, m_1
  40. If(n ≤ n_a + n_k + n_d + n_e, 0, If[n < n_a + n_k + n_d + n_e + n_b, (n - n_a - n_k - n_d - n_e) / n_b, 1]) → nb
  41. Translate(L, Vector[nb * Vector[L, B]]) → LB
  42. Polygon(LB, Translate[LB, Vector[L, O]], Translate[LB, Vector[L, C]], Translate[LB, Vector[L, P]]) → poly9, lb, p_1, q_1, r_1

AI Drawing Prompt Reference

Draw a semicircle and pick a point on it to form a right triangle with the diameter endpoints. Construct outward squares on each side of the triangle, then join corresponding vertices of the squares to create intersecting segments. Locate the intersection points of these segments. Finally, animate a step‑by‑step translation of the dissected pieces from the two smaller squares along the segments toward the large square on the hypotenuse, showing how the pieces reassemble to prove that the sum of the areas of the two smaller squares equals the area of the largest square.
The prompt above was compiled from the original drawing commands and is for reference only.