具有重复形式的 tikz 曲线

具有重复形式的 tikz 曲线

有人可以使用 tikz 循环和周期功能重写代码以获得底部所附的形状吗?或者,添加您的技巧,使丝带的末端看起来更自然。

\documentclass[a4paper]{article}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
     \draw [line width=1pt] foreach \x in {0,8}
     {(0+\x,0) .. controls (1+\x,.9) and (3+\x,-.3) .. (4+\x,0)
     .. controls (5+\x,.3) and (7+\x,-.9) .. (8+\x,0)};
    \draw[step=1cm] (0,-5) grid (16,5);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

我们可以通过填充表单的某个区域来创建它,而不是剪切路径来删除线端。

为此,我们需要将路径向右绘制一次(但比预期线宽高一半),然后向后绘制(但比预期线宽低一半)。由于您的路径是对称的,因此我们可以简单地旋转它。

我们可以使用原始 TikZ 选项来实现这一点:

\fill[red] (0,0)
  foreach \flip in {
    {shift=(up:.5cm)},
    {shift=(down:.5cm),rotate around={180:(right:8)}}
  } { [style/.expand once=\flip]
    -- (0,0) foreach \x in {0,8}{
      .. controls (1+\x,.9) and (3+\x,-.3) .. (4+\x,0)
      .. controls (5+\x,.3) and (7+\x,-.9) .. (8+\x,0)
    }
  } -- cycle;

在此处输入图片描述

或者我们可以使用安德鲁·史黛西calligraphy图书馆\usetikzlibrary{calligraphy})基于他的spath3图书馆

\pen (up:.5cm) -- (down:.5cm);
\calligraphy[pen colour=red] (0,0)
  foreach \x in {0,8}{
    .. controls (1+\x,.9) and (3+\x,-.3) .. (4+\x,0)
    .. controls (5+\x,.3) and (7+\x,-.9) .. (8+\x,0)
  };

在此处输入图片描述

你可以用这种方法做很多事情:

\pen (up:.2cm) -- (down:.2cm) (up:.4cm) (down:.4cm);
\calligraphy[pen colour=red, light] (0,0)
  foreach \x in {0,8}{
    .. controls (1+\x,.9) and (3+\x,-.3) .. (4+\x,0)
    .. controls (5+\x,.3) and (7+\x,-.9) .. (8+\x,0)
  };
\pen (0,0);
\calligraphy[pen colour=orange, heavy] (0,0)
  foreach \x in {0,8}{
    .. controls (1+\x,.9) and (3+\x,-.3) .. (4+\x,0)
    .. controls (5+\x,.3) and (7+\x,-.9) .. (8+\x,0)
  };

在此处输入图片描述

答案2

{0,8,...,24}据我所知,它已经是代码中的无缝循环。例如,您可以使用 tikz 语法通过指定一个集合来迭代所需的步骤。

为了使功能区末端看起来像您的屏幕截图一样,您可以简单地从两侧裁剪它。

\documentclass[border=20pt]{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \def\iterations{5}
    \pgfmathsetmacro{\ribbonLength}{\iterations*8}

    \clip (1,-5) rectangle (\ribbonLength,5);

     \draw [red, line width=20pt] foreach \x in {0,8,...,\ribbonLength}
     {(0+\x,0) .. controls (1+\x,.9) and (3+\x,-.3) .. (4+\x,0)
     .. controls (5+\x,.3) and (7+\x,-.9) .. (8+\x,0)};
    
    \draw[step=1cm] (0,-5) grid (16,5);
    
\end{tikzpicture}

\end{document}

在此处输入图片描述

只需改变\iterations变量来指定重复的次数。

相关内容