Auteur ou autrice : Maxime Chupin.
Mise en ligne le 6 janvier 2026

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.