如何使用旋转的合成 Tikz 图片

如何使用旋转的合成 Tikz 图片

我正在尝试绘制一个平铺图案,使用更简单的元素构建它pic

这是我的代码的简化版本

\documentclass[tikz,border=2mm]{standalone}
\usepackage{tikz}

\begin{document}

\tikzset{
  one/.pic = {
    \draw [thin,blue] (0,0) -- (1,0) -- (1,1) -- cycle;
    \draw [red] (1,0) -- ({1/(2+sqrt(2)},{1/(2+sqrt(2)}); 
    },
  two/.pic = {
    \path pic {one} pic[rotate=90,yscale=-1] {one};
    }
  }

\begin{tikzpicture}
    % pic one
    \path pic {one} ;
\end{tikzpicture}

\begin{tikzpicture}
    % pic two
    \path pic {two} ;
\end{tikzpicture}

\begin{tikzpicture}
    % pic two
    \path pic {one} pic[rotate=90,yscale=-1] {one};
    % pic two with extra 90 degree rotation
    \path pic [rotate=90] {one} pic[rotate=180,yscale=-1] {one};
\end{tikzpicture}

\begin{tikzpicture}
    % pic two
    \path pic {two};
    % pic two with extra 90 degree rotation
    \path pic[rotate=90] {two};
    % this doesn't do what I expected
\end{tikzpicture}

\end{document}

它画了四幅图。第一幅是基本元素。

在此处输入图片描述

pic第二个是使用第一个元素绘制的第二个元素的旋转和反射

在此处输入图片描述

第三个仅使用第一个 pic 元素来绘制第二个 pic 元素的两个副本,其中一个旋转了 90 度。

在此处输入图片描述

第四个尝试做同样的事情,使用第二个pic并将其旋转 90 度。

为什么不起作用?我怎样才能绘制旋转版本pic {two}?有没有更好的方法?

(我实际上正在尝试绘制一个更复杂的图案;这是一个简化版本。)

在此处输入图片描述

编辑并添加:

这是我正在尝试制作的最终“图案”的一个版本。它不是填充意义上的 Tikz“图案”,尽管我认为它可以是(抱歉造成混淆)。它是基于伊斯兰设计原则的几何图案。这是原文。

在此处输入图片描述

答案1

如果要转换pic嵌套在另一个中的pic,则需要添加transform shape。如果添加该键,则得到

\documentclass[tikz,border=2mm]{standalone}
\usepackage{tikz}

\begin{document}

\tikzset{
  one/.pic = {
    \draw [thin,blue] (0,0) -- (1,0) -- (1,1) -- cycle;
    \draw [red] (1,0) -- ({1/(2+sqrt(2)},{1/(2+sqrt(2)}); 
    },
  two/.pic = {
    \path pic {one} pic[rotate=90,yscale=-1] {one};
    }
  }

\begin{tikzpicture}
    % pic one
    \path pic {one} ;
\end{tikzpicture}

\begin{tikzpicture}
    % pic two
    \path pic {two} ;
\end{tikzpicture}

\begin{tikzpicture}
    % pic two
    \path pic {one} pic[rotate=90,yscale=-1] {one};
    % pic two with extra 90 degree rotation
    \path pic [rotate=90] {one} pic[rotate=180,yscale=-1] {one};
\end{tikzpicture}

\begin{tikzpicture}
    % pic two
    \path pic {two};
    % pic two with extra 90 degree rotation
    \path[transform shape] pic[rotate=90] {two};
    % this doesn't do what I expected
\end{tikzpicture}

\end{document}

在此处输入图片描述

既然你想设计一个模式:你知道patterns.meta最近添加到 pgfmanual 中的库的文档吗?这可能是更简单的方法。

相关内容