Auteur ou autrice : Maxime Chupin.
Mise en ligne le 25 juillet 2025

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.