我想画多段“波浪”路径,所以我尝试了标准snake
装饰和非常有前途的complete sines
但在这两种情况下,线段端点都不会被保留。
以下是我所指的一个例子。第一个矩形是用单段路径绘制的,看起来很棒(尤其是complete sines
底部的那个)。但是,当一次绘制两个段或整个矩形时,波浪段不会在预期的段端点处结束。
\documentclass[margin=3mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\input{sine.tex} %% From https://tex.stackexchange.com/a/60757/2113
\begin{document}
\begin{tikzpicture}
\tikzset
{ wavy/.style={red, decorate, sharp corners, decoration={snake, amplitude=0.4mm}}
, siny/.style={blue, decorate, sharp corners, decoration={complete sines, amplitude=1mm}}
}
\newcommand{\test}[1]{
\begin{scope}[shift={(0,0)}]
\draw (0,0) -- ++ (1,0);
\draw[#1] (0,0) -- ++ (1,0);
\draw (1,0) -- ++ (0,1);
\draw[#1] (1,0) -- ++ (0,1);
\draw (1,1) -- ++ (-1,0);
\draw[#1] (1,1) -- ++(-1,0);
\draw (0,1) -- (0,0);
\draw[#1] (0,1) -- (0,0);
\end{scope}
\begin{scope}[shift={(2,0)}]
\draw (0,0) -- ++ (1,0) -- ++ (0,1);
\draw[#1] (0,0) -- ++ (1,0) -- ++ (0,1);
\end{scope}
\begin{scope}[shift={(4,0)}]
\draw (0,0) rectangle ++ (1,1);
\draw[#1] (0,0) rectangle ++ (1,1);
\end{scope}
}
\begin{scope}[shift={(0,0)}]
\test{wavy}
\end{scope}
\begin{scope}[shift={(0,-2)}]
\test{siny}
\end{scope}
\end{tikzpicture}
\end{document}
有没有办法获得与第一列匹配的结果?我想通过这些路径进行剪辑,所以我认为我需要将它们绘制为一个多段路径。
答案1
至少对于snake
,如果我将段分解成自己的块,它似乎有效decorate{}
:
\documentclass[margin=3mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\newcommand{\segmentrect}[3]{
decorate{ #1 -- ++ (#2,0) }
decorate{ -- ++ (0,#3) }
decorate{ -- ++ ({-(#2)},0) }
decorate{ -- cycle }
}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle ++ (1,1);
\draw[decoration={snake, amplitude=0.4mm,segment length=2mm},red]
\segmentrect{(0,0)}{1}{1};
\end{tikzpicture}
\end{document}
不幸的是,同样的方法导致complete sines
了彻底的灾难:
\documentclass[margin=3mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\input{sine.tex} %% From https://tex.stackexchange.com/a/60757/2113
\newcommand{\segmentrect}[3]{
decorate{ #1 -- ++ (#2,0) }
decorate{ -- ++ (0,#3) }
decorate{ -- ++ ({-(#2)},0) }
decorate{ -- cycle }
}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle ++ (1,1);
\draw[decoration={complete sines},blue]
\segmentrect{(0,0)}{1}{1};
\end{tikzpicture}
\end{document}