tikz 在两条线之间应用填充

tikz 在两条线之间应用填充

简单问题:

是否可以填充以下形状:

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{documet}
\begin{tikzpicture}
\draw [decorate,decoration = {snake,amplitude =.4mm, segment length = 5mm}] (0,0)--(10,0);
\draw (0,0)..controls(0,-1)and(10,-1)..(10,0);
\end{tikzpicture}
\end{document}

在此处输入图片描述

如果这个问题过于简单,请原谅。

答案1

填充复杂形状的典型方法是尝试将我们的区域想象为两个更简单的闭合路径的交点,然后填充其中一条路径的区域,同时剪切到另一条路径。

例如,您的区域可以看作是以下两条路径的交点:

\draw  (0,0) .. controls +(0,-1) and +(0,-1)..(10,0) -- (10,1) -- (0,1) --cycle ;
\draw [decorate,decoration = {snake,amplitude =.4mm, segment length = 5mm}] (0,0)--(10,0) -- (10,-1) -- (0,-1) -- cycle;

主意

因此,我们的想法是填充“波浪形矩形”,并将结果剪切到“弯曲的底部矩形”。执行此技巧的代码部分必须包含在内,scope以防止剪切应用于整个图形(以防它是更大图形的一部分)。

下面的代码实现了这个想法:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\clip  (0,0) .. controls +(0,-1) and +(0,-1)..(10,0) -- (10,1) -- (0,1) --cycle ;
\draw  [fill=orange!50, decorate,decoration = {snake,amplitude =.4mm, segment length = 5mm}] (0,0)--(10,0) -- (10,-1) -- (0,-1) --cycle ;
\end{scope}
\draw (0,0) ..controls +(0,-1)and +(0,-1)..(10,0);
\end{tikzpicture}
\end{document}

结果

答案2

在这个简单的例子中,您可以只使用一条填充的路径。

几点说明:

  • 该装饰是用 激活的decorate {<part of path that shall be decorated>},所以我们将(0,0) -- (10,0)其放入。

  • 控制语法理解我引入的相对坐标,因为我需要切换曲线的方向(现在从 到(10, 0)(0, 0)

  • 除了.. controls (<c1>) and (<c2>) ..语法之外,您还可以使用curve to路径。在本例中,将角度设置为 270 度,距离为1cm

    to[distance=1cm, out=270, in = 270] (water-start)
    
  • -- cycle一开始就做出了漂亮的线条。

  • 我还引入了两个坐标:

    • water-start
    • water-end

    由于water-start在路径中使用了两次,因此\coordinate如果您想从其他地方开始而不是路径中的两个值,现在只需要更改该行。

代码

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\coordinate (water-start) at (0,0);
\coordinate (water-end) at (10,0);
\draw[
    decoration={
        snake,
        amplitude =.4mm,
        segment length = 5mm
    },
    fill=blue
] decorate {(water-start) -- (water-end)}
%   .. controls +(0,-1) and +(0,-1) .. (water-start) % this is the same
   to[distance=1cm, out=270, in = 270] (water-start) % as this
   -- cycle
   ;
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

答案3

如 TIKZ/PGF-3.0 手册第节所述24.2 使用装饰路径命令装饰子路径这可以通过装饰路径命令来实现。

\draw[fill=orange!50] (0,0) -- (0,1) -- (1,1) decorate[decoration=snake] {-- (1,0)} -- cycle;

答案4

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\begin{document}
\begin{pspicture}[dimen=monkey](-4,-2)(4,0)
    \pscustom[fillstyle=solid,fillcolor=cyan]
    {
        \psplot[algebraic,plotpoints=150]{-4}{4}{.1*sin(2*Pi*x/(8/15))}
        \psellipticarcn(4,2){0}{180}
        \closepath
    }
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容