Ignorando la rotación en decoraciones pgf

Ignorando la rotación en decoraciones pgf

Editar:Estoy interesado en cómo este problema podría o no resolverse usando decoraciones pgf, no en cómo dibujar esta forma específica.


Estoy intentando usar decoraciones de líneas pgf para dibujar líneas de puntos, donde los puntos son cuadrados, como en:

Comportamiento correcto de la línea

Sin embargo, pgf rota automáticamente el entorno en el que se dibujan los cuadrados como en el siguiente código:

\documentclass{article}
\usepackage{tikz}

\usetikzlibrary{calc,decorations}

\pgfdeclaredecoration{Squares}{initial}{
  \state{initial}[width=10pt]{
    \fill (0cm,0cm) rectangle (5pt,5pt);
  }
  \state{final}{
    \pgfpathlineto{\pgfpointdecoratedpathlast}
  }
}

\begin{document}
\begin{center}
  \begin{tikzpicture}
    \draw[decorate,decoration=Squares] (0,0) -- (5,5);
  \end{tikzpicture}
\end{center}
\end{document}

que produce esto:

ingrese la descripción de la imagen aquí

¿Hay alguna forma de compensar la rotación automática o, alternativamente, desactivarla?

Respuesta1

Gire su \fillcomando de decoración en sentido contrario a la rotación al ingresar el código de decoración (dado por \pgfdecoratedangle):

\documentclass[tikz]{standalone}

\usetikzlibrary{calc,decorations}

\pgfdeclaredecoration{Squares}{initial}{
  \state{initial}[width=10pt]{
    \fill[rotate=-\pgfdecoratedangle] (0cm,0cm) rectangle (5pt,5pt);
  }
  \state{final}{
    \pgfpathlineto{\pgfpointdecoratedpathlast}
  }
}

\begin{document}
  \begin{tikzpicture}
    \draw[decorate,decoration=Squares] (0,0) -- (1,5);
    \draw[decorate,decoration=Squares] (0,0) -- (5,5);
    \draw[decorate,decoration=Squares] (0,0) to[out=0,in=-90] (5,5);
    \draw[decorate,decoration=Squares] (0,0) -- (5,1);
  \end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada