martes, 21 de junio de 2022

Dos cuerpos imposibles

Con la valiosa ayuda de TeXample.net he dibujado estos dos cuerpos imposibles (el ladrillo de Escher y el triángulo de Penrose) a modo de práctica, empleando la herramienta TickZ para LaTeX.

Los códigos son los siguientes:
% Ladrillo de Escher
\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{center}
    \begin{tikzpicture}[scale=4.5, line join=bevel]
	
      % \a and \b are two macros defining characteristic
      % dimensions of the impossible brick.
      \pgfmathsetmacro{\a}{0.18}
      \pgfmathsetmacro{\b}{1.37}

      \tikzset{%
        apply style/.code={\tikzset{#1}},
        brick_edges/.style={thick,draw=black},
        face_colourA/.style={fill=gray!50},
        face_colourB/.style={fill=gray!25},
        face_colourC/.style={fill=gray!90},
      }

      \foreach \theta/\v/\facestyleone/\facestyletwo in {%
        0/0/{brick_edges,face_colourA}/{brick_edges,face_colourC},
        180/-\a/{brick_edges,face_colourB}/{brick_edges,face_colourC}
      }{
      \begin{scope}[rotate=\theta,shift={(\v,0)}]
        \draw[apply style/.expand once=\facestyleone]  		
          ({-.5*\b},{1.5*\a}) --
          ++(\b,0)            --
          ++(-\a,-\a)         --
          ++({-\b+2*\a},0)    --
          ++(0,-{2*\a})       --
          ++(\b,0)            --
          ++(-\a,-\a)         --
          ++(-\b,0)           --
          cycle;
        \draw[apply style/.expand once=\facestyletwo] 
          ({.5*\b},{1.5*\a})  --
          ++(0,{-2*\a})       --
          ++(-\a,0)           --
          ++(0,\a)            --
          cycle;
        \end{scope}
      }
    \end{tikzpicture}
\end{center}
\end{document}
% Triángulo de Penrose
\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{center}
 \begin{tikzpicture}[scale=1, line join=bevel]
	
    % \a and \b are two macros defining characteristic
    % dimensions of the Penrose triangle.		
    \pgfmathsetmacro{\a}{2.5}
    \pgfmathsetmacro{\b}{0.9}

    \tikzset{%
      apply style/.code     = {\tikzset{#1}},
      triangle_edges/.style = {thick,draw=black}
    }

    \foreach \theta/\facestyle in {%
        0/{triangle_edges, fill = gray!50},
      120/{triangle_edges, fill = gray!25},
      240/{triangle_edges, fill = gray!90}%
    }{
      \begin{scope}[rotate=\theta]
        \draw[apply style/.expand once=\facestyle]
          ({-sqrt(3)/2*\a},{-0.5*\a})                     --
          ++(-\b,0)                                       --
            ({0.5*\b},{\a+3*sqrt(3)/2*\b})                -- % higher point	
            ({sqrt(3)/2*\a+2.5*\b},{-.5*\a-sqrt(3)/2*\b}) -- % rightmost point
          ++({-.5*\b},-{sqrt(3)/2*\b})                    -- % lower point
            ({0.5*\b},{\a+sqrt(3)/2*\b})                  --
          cycle;
        \end{scope}
      }	
	  \end{tikzpicture}
  \end{center}
 \end{document} 

-oOo-

Referencias y agradecimientos:
[1] https://texample.net/tikz/examples/

No hay comentarios:

Publicar un comentario