Saltar al contenido

¿Cómo crear un triángulo de Sierpinski en LaTeX?

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}

ingrese la descripción de la imagen aquí

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}

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *