TikZ 自定义锯齿形图案

TikZ 自定义锯齿形图案

我正在尝试创建一个由锯齿线组成的自定义图案。感谢 TikZ 手册和装饰(使用随机步骤)填充图案我快到了:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing, patterns,shapes}
\begin{document}
\pgfdeclarepatternformonly{zigzag}
{\pgfpointorigin}{\pgfpoint{1cm}{1cm}}
{\pgfpoint{0.3cm}{0.3cm}}
{
\tikz\draw[decoration = {zigzag,segment length = 2mm, amplitude = 2mm}, decorate] (0,0) -- ++(3,0);
}
\begin{tikzpicture}
\node[draw=black,pattern=zigzag,regular polygon,regular polygon sides=5,minimum size=10mm] at (0,0.5){};
\end{tikzpicture}
\end{document}

上面的代码产生了这样的结果:
在此处输入图片描述
但是我想要的是这样的结果:
在此处输入图片描述
我希望锯齿线更“放松”。我把参数弄乱了,\pgfdeclarepatternformonly但我无法获得我喜欢的锯齿线。

另外,我不明白的用途++是什么(0,0) -- ++(3,0)

更多细节

我想要的锯齿线由此代码生成,
\draw[decoration = {zigzag,segment length = 3mm, amplitude = 1mm},decorate] (0,0)--(1,0);
在此处输入图片描述
但它没有按预期工作。当插入到前面的代码中时,它会产生以下效果: 在此处输入图片描述


已解决(但我仍然不明白为什么)

因此,我通过反复试验解决了我的问题。产生我想要的模式的代码是这样的:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing, patterns,shapes}
\begin{document}
\pgfdeclarepatternformonly{zigzag}
{\pgfpointorigin}{\pgfpoint{2cm}{2cm}}{\pgfpoint{0.35cm}{0.15cm}}
{
\tikz\draw[decoration = {zigzag,segment length = 0.35cm, amplitude = 0.9mm},decorate,very thin] (0,1.5) -- (2.9,1.5);
}
\begin{tikzpicture}
\node[draw=black,pattern=zigzag,regular polygon,regular polygon sides=5,minimum size=10mm] at (0,0){};
\end{tikzpicture}
\end{document}

在此处输入图片描述

不幸的是,我仍然对我所做的事情不太理解,所以我将接受正确的答案,以解释为什么该代码有效。

答案1

我曾试图用一个例子来解释为什么会发生这种情况。主要问题是如何平铺图片。这些图块不像边界框,所以它们可以重叠,即使图块内绘制的图片更大。因此,为了能够啮合牙齿,您需要将图块尺寸缩小到比图块图片更小的某个框。

这里要拼贴的图案的原子可以是装饰路径,也可以是手工绘制的锯齿线,比如只有两条线。然后这些瓷砖应该根据瓷砖尺寸而不是瓷砖图片缝合在一起。因此,拼贴时需要小心一点。

我用装饰选项做了一个示例,并在其中添加了一些注释。您不需要在重复图案内嵌套另一个 TikZ 图片,因此为了简单起见,我将它们转换为较低级别的命令。此外,我还标记了 2mm 图例来判断装饰的长度。如果需要,您还可以将硬编码数字转换为图案选项。

\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.pathmorphing, patterns,shapes,arrows}

\pgfdeclarepatternformonly{zigzagpat}
{\pgfpointorigin}
{\pgfpoint{8mm}{2mm}} % Upper right corner so the box is 8x2 mm
{\pgfpoint{8mm}{1mm}} % The tile size is smaller than the picture itself 
                      % So the teeth are getting closer
{
\pgfdecoration{{zigzag}{\pgfdecoratedpathlength}{%Setting up the decoration for the full path
                        \pgfdecorationsegmentlength=4mm      % The zigzag thread width
                        \pgfdecorationsegmentamplitude=1mm   % The zigzag thread height
                   }
              }
\pgfpathmoveto{\pgfpoint{0cm}{1mm}}        % So first we move 1 mm up
\pgfpathlineto{\pgfpoint{8mm}{1mm}}        % And draw a straight horizontal line to the end of our box
\endpgfdecoration                          % Close the decoration environment
\pgfusepathqstroke                         % Now draw the decorated path
}


\begin{document}

\begin{tikzpicture}
\node[draw=black,pattern=zigzagpat,regular polygon,regular polygon sides=5,minimum size=10mm] at (0,0){};
\draw[|-|,red] (0,-1mm) -- ++(0,2mm);
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容