PYthagore encore et encore
Author: Daniel Mentrard
Date: Février 2008

A

B

C

a

b

c

Animación = 0 (slider from 0 to 5, step 0.1)
a_1: (1.0 + sgn(1.0 - Animación)) / 2.0
a_2: (1.0 + sgn(2.0 - Animación)) / 2.0
a_3: (1.0 + sgn(3.0 - Animación)) / 2.0
a_4: (1.0 + sgn(4.0 - Animación)) / 2.0
b_1: a_1 * a_2 * a_3 * a_4
b_2: (1.0 - a_1) * a_2 * a_3 * a_4
b_3: (1.0 - a_1) * (1.0 - a_2) * a_3 * a_4
b_4: (1.0 - a_1) * (1.0 - a_2) * (1.0 - a_3) * a_4
b_5: (1.0 - a_1) * (1.0 - a_2) * (1.0 - a_3) * (1.0 - a_4)
c_1: b_1 * Animación + b_2 + b_3 + b_4 + b_5
c_2: b_2 * (Animación - 1.0) + b_3 + b_4 + b_5
c_3: b_3 * (Animación - 2.0) + b_4 + b_5
c_4: b_4 * (Animación - 3.0) + b_5
c_5: b_5 * (Animación - 4.0)
A = (10.308333333333337, -7.4)
B = (3, 5)
c = Semicircle(A, B)
C = Point(c)
P, c_6, a, b = Polygon(A, B, C)
d = Circle(B, a)
e = Circle(C, a)
D, E = Intersect(e, OrthogonalLine[C, a])
F, G = Intersect(d, OrthogonalLine[B, a])
Q, c_7, b_6, f, d_1 = Polygon(C, B, F, D)
H, I = Intersect(Circle[C, b], OrthogonalLine[C, b])
J, K = Intersect(Circle[A, b], OrthogonalLine[A, b])
R, a_5, c_8, i, k = Polygon(A, C, I, K)
L, M = Intersect(Circle[A, c_6], OrthogonalLine[A, c_6])
N, O = Intersect(Circle[B, c_6], OrthogonalLine[B, c_6])
S, a_6, m, o, b_7 = Polygon(A, M, O, B)
g = Circle(A, Segment[A, C])
h = Ray(K, A)
T = Intersect(g, h, 2.0)
j = Ray(M, T)
l = Segment(T, A)
U = Intersect(j, c_6)
n = OrthogonalLine(O, j)
W = Intersect(j, n)
p = LineBisector(W, M)
Q_1, o_2, w_1, m_2 = Polygon(W, M, O)
A' = Rotate(A, c_1 * 90.0°, A)
T' = Rotate(T, c_1 * 90.0°, A)
U' = Rotate(U, c_1 * 90.0°, A)
V', u', a', t' = Polygon(A', T', U')
q = Circle(T, Segment[A, C])
Z = Intersect(q, j, 1.0)
r = OrthogonalLine(Z, j)
A_1 = Intersect(a_6, r)
A_1' = Rotate(A_1, c_3 * 180.0°, A)
Z' = Rotate(Z, c_3 * 180.0°, A)
T'_2 = Rotate(T, c_3 * 180.0°, A)
O' = Translate(O, Vector[c_3 * Vector[O, B]])
B' = Translate(B, Vector[c_3 * Vector[O, B]])
A'_1 = Rotate(A, c_2 * 180.0°, A)
A'_2 = Rotate(A, c_2 * 180.0°, A)
A_2 = Rotate(A_1, c_2 * 180.0°, A)
Z'_1 = Rotate(Z, c_2 * 180.0°, A)
T'_1 = Rotate(T, c_2 * 180.0°, A)
A'_4 = Rotate(A, c_3 * 180.0°, A)
A_3 = Rotate(A_1, c_3 * 180.0°, A)
Z'_2 = Rotate(Z, c_3 * 180.0°, A)
T'_3 = Rotate(T, c_3 * 180.0°, A)
R_1, a'_4, a_{10}, z'_2, t'_3 = Polygon(A'_4, A_3, Z'_2, T'_3)
B'_1 = Translate(B, Vector[c_2 * Vector[O, B]])
U'_2 = Translate(U, Vector[c_2 * Vector[O, B]])
W'_1 = Translate(W, Vector[c_2 * Vector[O, B]])
O'_1 = Translate(O, Vector[c_2 * Vector[O, B]])
S_1, b'_1, u'_2, w'_1, o'_1 = Polygon(B'_1, U'_2, W'_1, O'_1)
B_1 = Intersect(f, d_1)
s = Segment(N, M)
e_1 = LineBisector(N, M)
C_1 = Rotate(Translate[A_1, c_4 * Vector[M, N]], c_4 * 90.0°, N)
D_1 = Rotate(Translate[M, c_4 * Vector[M, N]], c_4 * 90.0°, N)
E_1 = Rotate(Translate[Z, c_4 * Vector[M, N]], c_4 * 90.0°, N)
T_1, e_2, c_9, d_2 = Polygon(C_1, D_1, E_1)
F_1 = Rotate(Translate[O, c_5 * Vector[W, F]], c_5 * (-(90.0)°), F)
G_1 = Rotate(Translate[M, c_5 * Vector[W, F]], c_5 * (-(90.0)°), F)
H_1 = Rotate(Translate[W, c_5 * Vector[W, F]], c_5 * (-(90.0)°), F)
U_1, h_1, f_1, g_1 = Polygon(F_1, G_1, H_1)
poly1, a_7, u'_1, t'_1 = Polygon(U', T', A)
poly2, b'_2, o'_2, w'_2, u'_3 = Polygon(B'_1, O'_1, W'_1, U'_2)
poly3, t'_2, z', a_1', a_8 = Polygon(T'_2, Z', A_1', A)
poly4, c_{10}, e_3, d_3 = Polygon(E_1, D_1, C_1)
poly5, t, a1, b1 = Polygon(F_1, G_1, H_1)
α = Angle(A, C, B)
V = Midpoint(B, A)
A1 = Midpoint(B, C)
B1 = Midpoint(C, A)