Source

verbatimtex
%&latex
\documentclass{article}
\usepackage[frenchb]{babel}
\usepackage{lmodern}
\begin{document}
etex

input geometriesyr16;

vardef spidron(expr long,pas)=
save $; picture$;
pair M[];
M1=u*(long,1);
M2-M1=u*(-(long-1),0);
for k=1 upto pas:
if (k mod 2)=1:
M[2+k]=demidroite(M[k],rotation(M[k+1],M[k],-30))%
intersectionpoint demidroite(M[k+1],rotation(M[k],M[k+1],30));
else:
M[k+2]=rotation(M[k+1],M[k],60);
fi;
endfor;
$=image( for k=1 upto pas: trace polygone(M[k],M[k+1],M[k+2]); endfor; );$
enddef;

figuremainlevee(-u,-15u,15u,15u);
trace spidron(12,10);
trace appelation(M2,M1,2mm,btex 12~cm etex);
trace Codeangle(M1,M2,M3,0,btex 30\degres etex);
trace Codeangle(M3,M1,M2,0,btex 30\degres etex);
trace Codelongueur(M2,M3,M3,M4,M4,M2,2);
trace Codeangle(M3,M4,M5,0,btex 30\degres etex);
trace Codeangle(M5,M3,M4,0,btex 30\degres etex);
trace Codelongueur(M4,M5,M5,M6,M6,M4,4);
trace Codeangle(M7,M5,M6,0,btex 30\degres etex);
trace Codeangle(M5,M6,M7,0,btex 30\degres etex);
trace Codelongueur(M7,M8,M8,M6,M6,M7,3);
finmainlevee;
end