Perigal Pythagoras with Dilations and Vectors
Loading the math board and drawing, please wait…
①This example dynamically demonstrates Perigal's dissection proof of the Pythagorean theorem, using dilations and vector translations to rearrange the two smaller squares into the larger square. ②Core mathematical concepts include the Pythagorean theorem, dilation transformation, vector translation, area conservation, and geometric dissection. ③Construction highlights: using GeoGebra commands such as Segment, Midpoint, Semicircle, OrthogonalLine, Intersect, CircleArc, Point, Polygon, Line, Dilate, Vector, and Translate to build a right triangle with squares on each side and then move the pieces via dilation and vector operations. ④Suitable for middle and high school students learning about the Pythagorean theorem, geometric transformations, and dynamic mathematics, as well as for classroom demonstrations by teachers.
GeoGebra Commands & Parameters
Segment(A, B) → fMidpoint(f) → CSemicircle(A, B) → cOrthogonalLine(C, f) → gIntersect(c, g, 1) → DCircleArc(C, D, A) → dPoint(d) → ESegment(A, E) → hSegment(E, B) → iPolygon(A, E, 4) → poly1, j, k, l, m, F, GPolygon(E, B, 4) → poly2, n, p, q, r, H, IPolygon(B, A, 4) → poly3, s, t, a, b, J, KSegment(A, G) → eSegment(G, F) → f_1Segment(F, E) → g_1Segment(E, I) → h_1Segment(I, H) → i_1Segment(H, B) → j_1Segment(A, J) → k_1Segment(J, K) → l_1Segment(K, B) → m_1Segment(I, B) → n_1Midpoint(n_1) → LLine(L, k_1) → p_1Line(L, f) → q_1Intersect(q_1, h_1) → MIntersect(p_1, i_1) → NIntersect(q_1, j_1) → OIntersect(i, p_1) → PSegment(F, A) → r_1Segment(A, K) → s_1Midpoint(r_1) → QMidpoint(s_1) → RDilate(A, o, L) → A'Dilate(B, o, L) → B'Dilate(J, o, L) → J'Dilate(K, o, L) → K'Dilate(R, o, Q) → R'Vector(L, A') → uVector(L, B') → vVector(L, J') → wVector(L, K') → u_1Vector(Q, R') → v_1Polygon(M, L, N, I) → poly4, m_2, l_2, n_2, i_2Translate(M, w_1) → M'Translate(L, w_1) → L'Translate(N, w_1) → N'Translate(I, w_1) → I'Polygon(M', L', N', I') → poly4', m', l', n', i'Translate(M', u_1) → M''Translate(L', u_1) → L''Translate(N', u_1) → N''Translate(I', u_1) → I''Polygon(M'', L'', N'', I'') → poly4'', m'', l'', n'', i''Polygon(L, N, H, O) → poly5, l_3, n_3, h_2, o_1Translate(L, w) → L'_1Translate(N, w) → N'_1Translate(H, w) → H'Translate(O, w) → O'Polygon(L'_1, N'_1, H', O') → poly5', l'_1, n'_1, h', o'Polygon(E, M, L, P) → poly6, e_1, m_3, l_4, p_2Translate(E, v) → E'Translate(M, v) → M'_1Translate(L, v) → L'_2Translate(P, v) → P'Polygon(E', M'_1, L'_2, P') → poly6', e', m'_1, l'_2, p'Polygon(P, L, O, B) → poly7, p_3, l_5, o_2, b_1Translate(P, u) → P'_1Translate(L, u) → L'_3Translate(O, u) → O'_1Translate(B, u) → B'_1Polygon(P'_1, L'_3, O'_1, B'_1) → poly7', p'_1, l'_3, o'_1, b'_1Polygon(G, F, E, A) → poly8, g_2, f_2, e_2, a_1Translate(G, v_1) → G'Translate(F, v_1) → F'Translate(E, v_1) → E'_1Translate(A, v_1) → A'_1Polygon(G', F', E'_1, A'_1) → poly8', g', f', e'_1, a'_1