提问于:
浏览数:
3783
以最新版本[TikZ&PGFnote-3-1-4b](https://www.latexstudio.net/archives/51804.html "TikZ&PGFnote-3-1-4b.pdf")为例。
第85页描述剪切路径指的是“被剪刀裁剪”,第86页则补充道多个剪切路径的效果会被“累计”,同时以举出下例。
![](https://pics.latexstudio.net/data/images/202003/e78107ce999dc67.png)
按“剪刀裁剪”的理解,第4行`\path[clip] (0,0) circle (1cm);`表示把左下角的圆剪下来,第5行`\path[clip] (1,0) circle (1cm);`表示把右下角的圆剪下来。我自己也实际剪了一下,这两次累计的剪刀操作将画布分割成4个部分,如下图。
![](https://pics.latexstudio.net/data/images/202003/3ff4d834f1cd6c5.png)
第6行`\fill[red] (60:1)circle(1cm);`表示画了上面的圆并填充红色。如下图。
![](https://pics.latexstudio.net/data/images/202003/5aaf5f817568526.png)
![](https://pics.latexstudio.net/data/images/202003/de9ce55268ce406.png)
我想问的问题是,大家都是平等地被剪下来的,凭什么就只填充纸片③?只填充纸片①不行么?
我用实际画画的过程联想到,这可能跟填充的起始点位置有关。画画填充颜色时总要有一个下笔点,然后就开始疯狂涂涂涂直至涂满,如果我把大纸剪成4张纸片取出来,那我就只能涂满我下笔的时候选中的那张纸片。所以我猜想,会不会是`\fill`填充命令默认的下笔点刚好在纸片③内,所以导致只有纸片③被填充了。所以只要修改一下某个我不知道的下笔点选项的值,就可以实现只填充纸片①②④了。
这个想法对么?另外,要实现填充纸片①②④的话,具体怎么操作呢?
2 回答
0
附录:下面是我裁剪的示例,本来想测试用多条直线裁剪的效果的,但居然发现用直线路径裁剪之后,并不能被用于后续填充,后来改成曲线裁剪之后就发现,原来并不能理解成“用剪刀裁剪”,而应该理解成“闭合路径内部空间的交集”
```tex
\documentclass[tikz]{standalone}
\newcommand{\drawY}[1]{%
\draw plot (\x,#1);
\draw plot (\x,-#1);
\draw (0,0) circle (1);
\fill[red] plot (\x,#1);
\clip plot (\x,#1);
\fill[green] (0,0) circle (1);
}
\begin{document}
%第1页 y=±x和单位圆
\begin{tikzpicture}[domain=-1:1]
\drawY{\x}
\end{tikzpicture}
%第2页 y=±x^2和单位圆
\begin{tikzpicture}[domain=-1:1]
\drawY{\x*\x}
\end{tikzpicture}
%第3页 y=±x^3和单位圆
\begin{tikzpicture}[domain=-1:1]
\drawY{\x*\x*\x}
\end{tikzpicture}
%第4页 y=±abs(x)和单位圆
\begin{tikzpicture}[domain=-1:1]
\drawY{{abs(\x)}}
\end{tikzpicture}
\end{document}
```
![](https://pics.latexstudio.net/data/images/202003/3883dc84fe889d0.png)
用Adobe Acrobat DC仔细放大图1的细节处能发现,原来图1也是有填充的,只是填充到了直线围成空间中,更进一步佐证了clip操作应理解为“闭合路径内部空间的交集”,而非“被剪刀裁剪”。
![](https://pics.latexstudio.net/data/images/202003/aa2e123d536f1f6.png)
![](https://pics.latexstudio.net/data/images/202003/88375612adab767.png)
0
你这究根问底的精神头令人佩服!
我有时候也像你这样,常常在一个问题上纠结,后来我觉,这样做的学习效率不算高。令初学者困惑的原因可能很多,例如,手册或者其他资料的解释本身不适合初学者的理解范围,因为手册基本上是用自然语言来解释程序处理的,就像用自然语言难以解释数学过程一样,难免令初学者感到困惑。
我建议尽量通读手册,英文原文,不要太依赖别人的资料,在一个问题上不要太纠结,多向别人请教。读得越多,问的越多,理解就越多。比如你提的这个问题,如果你往后读到“非零规则”、“奇偶规则”,应该能更好地理解颜色是如何填充的。
当你理解了,基本会用了,再去读源代码。当你看明白一段源代码后,你就知道,用自然语言解释一段程序的处理过程是多么不容易。
再说你的问题,我是这么理解的,TikZ 一般不使用“画布”这个说法(有画布变换这个说法),因为 TikZ 不会先设置一个画布,然后在画布上画图,它只是收集坐标点和坐标点之间的那些构建路径的“手段”,所以你问题中第一个图片的④可以不考虑。
如果没有 clip, fill, 你问题中的 ①、②、③都可以不考虑,因为这些内部区域不是构建路径的坐标点,也不是构建路径的“手段”。在使用 clip, fill 后,才需要判断路径的内部区域,判断的依据是非零规则或者奇偶规则。
如果你想填充④,就得先构建一个包含④的路径,然后再想办法填充它。
建议你先去读一下关于非零规则、奇偶规则的内容。
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。