Proof without words: Area of a parallelogram by Daniel Mentrard

Proof without words: Area of a parallelogram by Daniel Mentrard
Loading the math board and drawing, please wait…
2019-12-31 01:24
① This example demonstrates the area of a parallelogram equals base times height through a dynamic geometric visualization, offering a proof without words. ② Core mathematical concepts include parallelogram area, base and height, translation transformation, vectors, and area-preserving geometric constructions. ③ Construction highlights: from the summary, commands such as Point, Segment, DynamicCoordinates, Sequence, Sort, Intersect, Join, Take, Element, Midpoint, RotateText, Angle, Mirror, OrthogonalLine, Vector, and Translate are used to create points, segments, vectors, and dynamic objects. Through translation and mirroring, the parallelogram is transformed into a rectangle, visually showing that the area remains unchanged. ④ Suitable for middle school geometry lessons, teacher demonstrations, and student exploration of area formulas, as well as for math outreach illustrating the elegance of proof without words.

GeoGebra Commands & Parameters

  1. Point(Line[B, B + (1, 0)]) → P
  2. Point(Ray[B, B + (1, 0)]) → C
  3. Segment(B, C) → h
  4. DynamicCoordinates(Z, If[x(Z) > x(B) + 0.2, x(Z), x(B) + 0.2], y(Z)) → A
  5. Sequence(B + (i * (c, d)), i, 0, n) → list1
  6. Sequence(C + (i * (c, d)), i, 0, n) → list2
  7. Sort(Union[list1, list2]) → list3
  8. Intersect(b, OrthogonalLine[Element[list3, (2 * n) + 2], b]) → E
  9. Join({Sequence[Translate[Polygon[Element[list3, i], Element[list3, i + 1], Element[list3, i + 2]], Vector[(If[i ≤ floor(Animation), 1, If[i ≟ floor(Animation) + 1, Animation - floor(Animation), 0]] * Vector[Element[list3, i], (x(P), y(Element[list3, i]))])]], i, 1, (2 * n)], {Translate[Polygon[Element[list3, (2 * n) + 1], Element[list3, (2 * n) + 2], E, A], Vector[(If[Animation ≤ (2 * n), 0, If[floor(Animation) ≟ (2 * n), Animation - floor(Animation), 1]] * Vector[Element[list3, (2 * n) + 1], (x(P), y(Element[list3, (2 * n) + 1]))])]], Translate[Polygon[Element[list3, (2 * n) + 2], E, D], Vector[(If[Animation ≤ (2 * n) + 1, 0, If[floor(Animation) ≟ (2 * n) + 1, Animation - floor(Animation), 1]] * Vector[Element[list3, (2 * n) + 2], (x(P), y(Element[list3, (2 * n) + 2]))])]]}}) → list6
  10. Take(Join[{Sequence[Polygon[Element[list3, i], Element[list3, i + 1], Element[list3, i + 2]], i, 1, (2 * n)], {Polygon[Element[list3, (2 * n) + 1], Element[list3, (2 * n) + 2], E, A], Polygon[Element[list3, (2 * n) + 2], E, D]}}], 1, floor(Animation)) → list4
  11. Segment(Intersect[b, OrthogonalLine[P, a]], P) → f
  12. Segment(A, B) → e
  13. Segment(B, C) → g
  14. Segment(C, D) → i
  15. Segment(D, A) → j
  16. Segment(P, P + C - B) → l
  17. Element(list6, A1) → B1
  18. Element(list6, A2) → B2
  19. Element(list6, A3) → B3
  20. Element(list6, A4) → B4
  21. Element(list6, A5) → B5
  22. Element(list6, A6) → B6
  23. Element(list6, A7) → B7
  24. Element(list6, A8) → B8
  25. Element(list6, A9) → B9
  26. Element(list6, A10) → B10
  27. Element(list6, A11) → B11
  28. Element(list6, A12) → B12
  29. Element(list6, A13) → B13
  30. Element(list6, A14) → B14
  31. Element(list6, A15) → B15
  32. Element(list6, A16) → B16
  33. Element(list6, A17) → B17
  34. Element(list6, A18) → B18
  35. Element(list6, A19) → B19
  36. Element(list6, A20) → B20
  37. Element(list6, A1) → C1
  38. Element(list6, A2) → C2
  39. Element(list6, A3) → C3
  40. Element(list6, A4) → C4
  41. Element(list6, A5) → C5
  42. Element(list6, A6) → C6
  43. Element(list6, A7) → C7
  44. Element(list6, A8) → C8
  45. Element(list6, A9) → C9
  46. Element(list6, A10) → C10
  47. Element(list6, A11) → C11
  48. Element(list6, A12) → C12
  49. Element(list6, A13) → C13
  50. Element(list6, A14) → C14
  51. Element(list6, A15) → C15
  52. Element(list6, A16) → C16
  53. Element(list6, A17) → C17
  54. Element(list6, A18) → C18
  55. Element(list6, A19) → C19
  56. Element(list6, A20) → C20
  57. Midpoint(f) → F
  58. RotateText("Hauteur", 90°) → texte1
  59. Angle(Intersect[b, OrthogonalLine[P, a]], P, B) → α
  60. Intersect(f, b) → G
  61. Mirror(B, P) → B'
  62. Angle(B', P, G) → β
  63. Element(list4, A1) → D1
  64. Element(list4, A2) → D2
  65. Element(list4, A3) → D3
  66. Element(list4, A4) → D4
  67. Element(list4, A5) → D5
  68. Element(list4, A6) → D6
  69. Element(list4, A7) → D7
  70. Element(list4, A8) → D8
  71. Element(list4, A9) → D9
  72. Element(list4, A10) → D10
  73. Element(list4, A11) → D11
  74. Element(list4, A12) → D12
  75. Element(list4, A13) → D13
  76. Element(list4, A14) → D14
  77. Element(list4, A15) → D15
  78. Element(list4, A16) → D16
  79. Element(list4, A17) → D17
  80. Element(list4, A18) → D18
  81. Element(list4, A19) → D19
  82. Element(list4, A20) → D20
  83. Midpoint(G, J) → K
  84. OrthogonalLine(D, b) → k
  85. Intersect(a, k) → L
  86. Segment(D, L) → m
  87. Angle(P, L, D) → γ
  88. Vector(L, P) → u
  89. Translate(D, Vector[(Animation / ((2 * n) + 2) * u)]) → D'
  90. Translate(L, Vector[(Animation / ((2 * n) + 2) * u)]) → L'
  91. Segment(D', L') → m'
  92. Midpoint(m) → M
  93. RotateText("Hauteur", 90°) → texte6