有人可以使用 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
变量来指定重复的次数。