Solución:
El ancho de los triángulos de fondo es 2 ^ orden * tamaño de paso, por lo que puede calcular el tamaño del paso en función del ancho total deseado:
documentclass[border=5mm]{standalone}
usepackage{tikz}
usetikzlibrary{lindenmayersystems}
begin{document}%
deftrianglewidth{2cm}%
pgfdeclarelindenmayersystem{Sierpinski triangle}{
symbol{X}{pgflsystemdrawforward}
symbol{Y}{pgflsystemdrawforward}
rule{X -> X-Y+X+Y-X}
rule{Y -> YY}
}%
foreach level in {0,...,3}{%
tikzset{
l-system={step=trianglewidth/(2^level), order=level, angle=-120}
}%
begin{tikzpicture}
fill [black] (0,0) -- ++(0:trianglewidth) -- ++(120:trianglewidth) -- cycle;
draw [draw=none] (0,0) l-system
[l-system={Sierpinski triangle, axiom=X},fill=white];
end{tikzpicture}
}%
end{document}
Una forma alternativa de usar decoraciones. Depende un poco de cómo se dibuje el triángulo inicial (es decir, la dirección del camino), y el anidamiento de las decoraciones debe hacerse manualmente.
documentclass[border=5pt]{standalone}
usepackage{tikz}
usetikzlibrary{decorations}
% Not sure this follows any proper defition of
% Sirpinksi triangle. It just works.
pgfdeclaredecoration{quasi-sirpinski}{do}{%
state{do}[width=pgfdecoratedinputsegmentlength, next state=do]{%
pgfpathmoveto{pgfpointpolar{-60}{pgfdecoratedinputsegmentlength/2}}%
pgfpathlineto{pgfpointorigin}%
pgfpathlineto{pgfpoint{pgfdecoratedinputsegmentlength/2}{0pt}}%
pgfpathclose%
}
}
begin{document}
tikz
fill (0,0) -- ++(60:3) -- ++(-60:3) -- cycle;
tikz[decoration=quasi-sirpinski]
fill decorate { (0,0) -- ++(60:3) -- ++(-60:3) -- cycle };
tikz[decoration=quasi-sirpinski]
fill decorate { decorate {
(0,0) -- ++(60:3) -- ++(-60:3) -- cycle } };
tikz[decoration=quasi-sirpinski]
fill decorate { decorate { decorate {
(0,0) -- ++(60:3) -- ++(-60:3) -- cycle } } };
tikz[decoration=quasi-sirpinski]
fill decorate { decorate { decorate { decorate {
(0,0) -- ++(60:3) -- ++(-60:3) -- cycle } } } };
end{document}
documentclass[pstricks]{standalone}
usepackage{pst-fractal}
begin{document}
multido{iA=1+1}{5}{%
begin{pspicture}(3,2.8)
psSier[linecolor=blue!70,fillcolor=red!40](0,0){3cm}{iA}
end{pspicture}}
multido{iA=1+1}{5}{%
begin{pspicture}(3,2.7)psSier(0,0){3cm}{iA}
end{pspicture}}
end{document}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)