Proof without words: Area of a parallelogram by Daniel Mentrard
Loading the math board and drawing, please wait…
① 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
Point(Line[B, B + (1, 0)]) → PPoint(Ray[B, B + (1, 0)]) → CSegment(B, C) → hDynamicCoordinates(Z, If[x(Z) > x(B) + 0.2, x(Z), x(B) + 0.2], y(Z)) → ASequence(B + (i * (c, d)), i, 0, n) → list1Sequence(C + (i * (c, d)), i, 0, n) → list2Sort(Union[list1, list2]) → list3Intersect(b, OrthogonalLine[Element[list3, (2 * n) + 2], b]) → EJoin({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]))])]]}}) → list6Take(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)) → list4Segment(Intersect[b, OrthogonalLine[P, a]], P) → fSegment(A, B) → eSegment(B, C) → gSegment(C, D) → iSegment(D, A) → jSegment(P, P + C - B) → lElement(list6, A1) → B1Element(list6, A2) → B2Element(list6, A3) → B3Element(list6, A4) → B4Element(list6, A5) → B5Element(list6, A6) → B6Element(list6, A7) → B7Element(list6, A8) → B8Element(list6, A9) → B9Element(list6, A10) → B10Element(list6, A11) → B11Element(list6, A12) → B12Element(list6, A13) → B13Element(list6, A14) → B14Element(list6, A15) → B15Element(list6, A16) → B16Element(list6, A17) → B17Element(list6, A18) → B18Element(list6, A19) → B19Element(list6, A20) → B20Element(list6, A1) → C1Element(list6, A2) → C2Element(list6, A3) → C3Element(list6, A4) → C4Element(list6, A5) → C5Element(list6, A6) → C6Element(list6, A7) → C7Element(list6, A8) → C8Element(list6, A9) → C9Element(list6, A10) → C10Element(list6, A11) → C11Element(list6, A12) → C12Element(list6, A13) → C13Element(list6, A14) → C14Element(list6, A15) → C15Element(list6, A16) → C16Element(list6, A17) → C17Element(list6, A18) → C18Element(list6, A19) → C19Element(list6, A20) → C20Midpoint(f) → FRotateText("Hauteur", 90°) → texte1Angle(Intersect[b, OrthogonalLine[P, a]], P, B) → αIntersect(f, b) → GMirror(B, P) → B'Angle(B', P, G) → βElement(list4, A1) → D1Element(list4, A2) → D2Element(list4, A3) → D3Element(list4, A4) → D4Element(list4, A5) → D5Element(list4, A6) → D6Element(list4, A7) → D7Element(list4, A8) → D8Element(list4, A9) → D9Element(list4, A10) → D10Element(list4, A11) → D11Element(list4, A12) → D12Element(list4, A13) → D13Element(list4, A14) → D14Element(list4, A15) → D15Element(list4, A16) → D16Element(list4, A17) → D17Element(list4, A18) → D18Element(list4, A19) → D19Element(list4, A20) → D20Midpoint(G, J) → KOrthogonalLine(D, b) → kIntersect(a, k) → LSegment(D, L) → mAngle(P, L, D) → γVector(L, P) → uTranslate(D, Vector[(Animation / ((2 * n) + 2) * u)]) → D'Translate(L, Vector[(Animation / ((2 * n) + 2) * u)]) → L'Segment(D', L') → m'Midpoint(m) → MRotateText("Hauteur", 90°) → texte6