Arbre de Pythagore

Auteur ou autrice : Maxime Chupin.

Mise en ligne le 6 janvier 2026

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 fractalesLive Mathsdrop

Fichiers

Télécharger l’archive complète