Euclid's Pythagorean Proof
Author: Scott Farrar
Date: 29 November 2013

drag the slider at the bottom to observe an illustration of Euclid's Pythagorean Theorem Steps

Area preserving transformations

Red

Green

Half of b^2

Half of a^2

Half of left rectangle

Half of right rectangle

Shear

Rotate

Shear

Rotate

Shear

Shear

A = (-3.1666570646069525, 2.6386759898689647)
C = (4.1909034245032855, 6.425022908241485)
a = Segment(A, C)
b = OrthogonalLine(C, a)
B = Point(b)
steps = -0.5 (slider from -0.5 to 6.6, step 0.01)
η: ((steps - 4.1) * 90)°
ζ: ((steps - 1) * 90)°
poly2, a_1, b_2, g, h, F, G = Polygon(A, C, 4)
c = Segment(A, B)
d = Segment(C, B)
poly1, b_1, c_1, e, f, D, E = Polygon(C, B, 4)
poly3, c_2, a_2, i, j, H, I = Polygon(B, A, 4)
k = OrthogonalLine(C, i)
l = Segment(G, B)
m = Segment(A, D)
n = Segment(C, I)
α = 0.6632251157578453 rad (slider from 0 to 1.5707963267948966, step 0.017453292519943295)
β = 0.4188790204786391 rad (slider from 0 to 1.5707963267948966, step 0.017453292519943295)
poly4, a_3, g_1, c_3 = Polygon(G, B, A)
C'_1 = Rotate(B, -ζ, A)
A'_1 = Rotate(A, -α, A)
G' = Rotate(G, -ζ, A)
poly4', a', g', c' = Polygon(G', C'_1, A'_1)
poly5, c_4, d_1, a_4 = Polygon(D, A, B)
D' = Rotate(D, η, B)
C' = Rotate(B, η, B)
A' = Rotate(A, η, B)
poly5', c'_1, d', a'_1 = Polygon(D', A', C')
p = Line(G, A)
q = Line(D, B)
J = Intersect(p, q)
γ = Angle(B, J, A)
δ = Angle(A, C, B)
r = Line(C, c)
s = Line(H, A)
t = Line(I, B)
K = Intersect(r, s)
L = Intersect(r, t)
o = true
u = true
X = Intersect(k, c)
Y = Intersect(k, i)
e_1 = Segment(C, X)
f_1 = Segment(X, Y)
ε = Angle(C, X, A)
poly6, a_5, g_2, c_5 = Polygon(G, C, A)
poly7, b_3, d_2, c_6 = Polygon(D, C, B)
v = true
w = true
poly8, h_1, M, a_6 = Polygon(X, A, H)
z = true
poly9, i_1, N, b_4 = Polygon(X, B, I)
j_1 = true
k_1 = Segment(G, B)
l_1 = Segment(C, H)
p_1 = Circle(C, steps * b_1)
O = Intersect(p_1, b_1)
poly10, a_7, g_3, o_1 = Polygon(G, O, A)
q_1 = Circle(C, (steps - 2) * e_1)
P = Intersect(q_1, e_1, 1)
poly11, h_2, a_8, p_2 = Polygon(A, P, H)
r_1 = Circle(C, (steps - 3.1) * a_1)
Q = Intersect(a, a_1)
R = Intersect(a, a_1)
S = Intersect(a, a_1)
T = Intersect(a, a_1)
U = Intersect(r_1, a)
poly12, b_5, u_1, d_3 = Polygon(U, D, B)
s_1 = Circle(C, e_1 * (steps - 5.1))
V = Intersect(s_1, e_1, 1)
poly13, i_2, b_6, v_1 = Polygon(B, V, I)
W = Intersect(s_1, e_1, 2)
poly14, i_3, b_7, w_1 = Polygon(B, W, I)