Ignorando a rotação nas decorações pgf

Ignorando a rotação nas decorações pgf

Editar:Estou interessado em saber como esse problema pode ou não ser resolvido usando decorações pgf, e não em como desenhar essa forma específica.


Estou tentando usar decorações de linha pgf para desenhar linhas pontilhadas, onde os pontos são quadrados, como em:

Comportamento correto da linha

No entanto, o pgf gira automaticamente o ambiente em que os quadrados são desenhados, como no código a seguir:

\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 gera isso:

insira a descrição da imagem aqui

Existe uma maneira de compensar a rotação automática ou desativá-la?

Responder1

Gire seu \fillcomando de decoração no sentido oposto à rotação ao inserir o código de decoração (fornecido 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}

insira a descrição da imagem aqui

informação relacionada