AccueilđŸ‡«đŸ‡·Chercher

Arbre de Pythagore

L'arbre de Pythagore est une fractale plane construite à l'aide de carrés. Elle porte le nom de Pythagore car chaque triplet de carrés en contact enclot un triangle rectangle, une configuration traditionnellement utilisée pour illustrer le théorÚme de Pythagore.

L'arbre
L'arbre

Construction

La construction de l'arbre de Pythagore dĂ©bute avec un simple carrĂ©. Sur ce carrĂ© sont construits deux autres carrĂ©s, dont chaque cĂŽtĂ© est plus petit d'un facteur œ√2 par rapport au carrĂ© de l'Ă©tape prĂ©cĂ©dente, tels que les sommets des carrĂ©s soient en contact. La procĂ©dure est appliquĂ©e rĂ©cursivement Ă  chaque carrĂ©, jusqu'Ă  l'infini. L'illustration ci-dessous illustre les premiĂšres itĂ©rations de la construction.

Construction de l'arbre de Pythagore, ordre 1
Construction de l'arbre de Pythagore, ordre 1
Ordre 2
Ordre 2
Ordre 3
Ordre 3
Ordre 4
Ordre 4
Ordre 0 Ordre 1 Ordre 2 Ordre 3

Code pour la construction de l'arbre de Pythagore classique par récursivité

Les coordonnées sont sous la forme abscisse,ordonnée.

PremiÚre itération de l'arbre de Pythagore sous forme classique.
Schéma arbre de Pythagore, angles à 45°


A = (X1 + X2) / 2 - (Y2 - (Y2 + Y1) /2)
B = (Y1 + Y2) / 2 + (X2 - (X2 + X1) /2)
C = X1- (B - Y1)
D = Y1 + (A - X1)
E = A - (B - Y1)
F = B + (A - X1)
G = A - (Y2 - B)
H = B + (X2 - A)
I = X2 - (Y2 - B)
J = Y2 + (X2 - A)

Il suffit de connaĂźtre X1, Y1, X2 et Y2 pour pouvoir calculer les autres.

À l'itĂ©ration suivante, on effectuera ces calculs deux fois : la premiĂšre fois avec (X1,Y1,X2,Y2) = (C,D,E,F) et la seconde avec (X1,Y1,X2,Y2) = (G,H,I,J).

Aire

La ne itĂ©ration ajoute 2n carrĂ©s de cĂŽtĂ© (œ√2)n, pour une aire totale de 1. Ainsi, l'aire totale de l'arbre semble a priori tendre vers l'infini. Cependant, certains des carrĂ©s se superposent Ă  partir de la 5e itĂ©ration, l'arbre possĂšde donc une aire finie et tient dans un rectangle de 6×4.

Variations

En conservant la contrainte de former un triangle rectangle à partir de trois carrés, mais en donnant des tailles différentes à chacun des carrés ajoutés à chaque itération, il est possible de créer des formes fractales similaires à l'arbre de Pythagore. L'illustration suivante illustre une telle variation

Ordre 0
Ordre 0
Ordre 1
Ordre 1
Ordre 2
Ordre 2
Ordre 5
Ordre 5
Ordre 0 Ordre 1 Ordre 2 Ordre 5

Code pour la construction de l'arbre de Pythagore avec angles différents de 45°

Schéma de la construction de l'arbre de Pythagore, angle différent de 45°
Schéma de la construction de l'arbre de Pythagore, angle différent de 45°

α (alpha) est l'angle que l'on donne au départ, il ne varie jamais. Le triangle est toujours rectangle, mais plus isocÚle rectangle comme il l'était dans la forme classique de l'arbre de Pythagore, avec alpha = 45°.

ÎČ (beta) est l'angle situĂ© entre le segment [X1Y1X2Y2] et l'horizontale, ici reprĂ©sentĂ©e par le trait bleu.

H est le point d'intersection de la droite (X1Y1X2Y2) et de la hauteur h issue de AB. Seul le nom du point est donné car on ne va pas calculer ses coordonnées.

HX1Y1 est la distance entre le point de coordonnées (X1,Y1) et le point H.

ABX1Y1 est la distance entre le point de coordonnées (A,B) et le point de coordonnées (X1,Y1).

Pseudo-code

# On peut utiliser les nombres complexes pour calculer beta
# j le nombre complexe
angle beta = argument du nombre complexe X2 + Y2j - (X1 + Y1j)
distance HX1Y1 = distance X1Y1X2Y2 * cosinus(alpha°)ÂČ # voir dĂ©monstration plus bas
distance ABX1Y1 = HX1Y1 / cosinus(alpha°) #simple théorÚme de Pythagore
A = X1 + ABX1Y1 * cos(alpha + beta) # théorÚme de Pythagore avec le triangle rectangle qui a pour hypoténuse ABX1Y1 et dont un des cÎtés adjacents est situé sur l'horizontale (sur le trait bleu), et l'autre est donc situé sur la verticale.
B = Y1 + ABX1Y1 * sin(alpha + beta) # mĂȘme raisonnement
C = X1 - (B - Y1)
D = Y1 + (A - X1)
E = A - (B - Y1)
F = B + (A - X1)
G = A - (Y2 - B)
H = B + (X2 - A)
I = X2 - (Y2 - B)
J = Y2 + (X2 - A)

DĂ©monstration HX1Y1

Code en Python 3

Python travaille avec les radians, donc 90 degrés = pi/2 radians

from math import sqrt, cos, sin, tan, pi
from cmath import phase
beta = phase(X2 + Y2 * 1j - (X1 + Y1 * 1j))
HX1Y1 = sqrt((Y2 - Y1)**2 + (X2 - X1)**2) * cos(alpha)**2
ABX1Y1 = HX1Y1 / cos(alpha)
A = X1 + ABX1Y1 * cos(alpha + beta)
B = Y1 + ABX1Y1 * sin(alpha + beta)
C = X1 - (B - Y1)
D = Y1 + (A - X1)
E = A - (B - Y1)
F = B + (A - X1)
G = A - (Y2 - B)
H = B + (X2 - A)
I = X2 - (Y2 - B)
J = Y2 + (X2 - A)

Voir aussi

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.