Arbre de Pythagore

Auteur ou autrice : Maxime Chupin.

Mise en ligne le 25 juillet 2025

Image du résultat de l’exemple

Représentation d’un arbre de Pythagore par une fonction MetaPost récursive. Cette production fait suite au live Twitch de MicMath sur le sujet.

Code


%@author: Chupin Maxime
%@date: 2025-07-26 
%@description: d’après le live de MicMath et le code python qu’il a produit
% https://www.youtube.com/watch?v=BCR7IhRFNDo

u:= 1cm;
beta := 30;
color arbreC;
arbreC := (0.6,0.4,0.4);

% transformation géométrique rotation et homothétie
vardef similitude(expr A,B,alpha,mu)=
    save C,D;
    pair C,D;
    C := (xpart B-xpart A,ypart B-ypart A);
    D := (mu*((xpart C)*cosd(alpha)+(ypart C)*sind(alpha)),mu*(-(xpart
    C)*sind(alpha)+(ypart C)*cosd(alpha)));
    (xpart A + xpart D,ypart A+ypart D)
enddef;

% la fonction récursive qui dessine l’arbre
vardef arbre(expr A,B,n)=
    % A et B sont deux pairs MetaPost définissant le segment de 
    % base définissant le carrée de base de l’arbre
    % n est la profondeur de récursion souhaitée
    save C,D,E;
    pair C,D,E;
    % C est la rotation de A autour de B d’angle -90
    C := similitude(B,A,-90,1);
    % D est la rotation de B autour de A d’angle 90
    D := similitude(A,B,90,1);
    % on dessine le carré obtenu
    fill (A--B--C--D--cycle) withcolor arbreC;
    % test pour arrêter la récursion
    if(n>0):
        % on calcule le point E qui est le troisième point du triangle
        % rectangle en E, EDC, ou angle(EDC)=beta
        E := similitude(D,C,beta,cosd(beta));
        % on dessine l’arbre issu du segment DE
        arbre(D,E,n-1);
        % on dessine l’arbre issu du segment EC
        arbre(E,C,n-1);
    fi
enddef;

beginfig(1);
pair A,B;
A := (0,0);
B := (-u,0);
arbre(A,B,14);
endfig;
end.

Mots clés : fractalrécursionpythagoretrianglecarréarbre

Cet exemple fait partie de la collection d’exemples Figures fractales.

Fichiers

Télécharger l’archive complète