Tikz 仅填充三个形状中的 A - B - C

Tikz 仅填充三个形状中的 A - B - C

我正在尝试绘制一个可以表示为三个形状上的布尔运算的图形:A、B、C。该图形是A - B - C(或A - (B U C))。但是,我不知道如何使用\clipTikz 中的或其他命令来绘制它。

例如,以下是改编自TikZ 示例,下面第一张图片是代码生成的,但第二张才是我想要的。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes,backgrounds}
\begin{document}
\pagestyle{empty}
\def\firstcircle{(0,0) circle (1.5cm)}
\def\secondcircle{(45:2cm) circle (1.5cm)}
\def\thirdcircle{(0:2cm) circle (1.5cm)}

\begin{tikzpicture}
    \draw \firstcircle node[below] {$A$};
    \draw \secondcircle node [above] {$B$};
    \draw \thirdcircle node [below] {$C$};
    \begin{scope}
      \clip \firstcircle;
      \fill[red] \secondcircle;
    \end{scope}
    \begin{scope}
      \clip \firstcircle;
      \clip \secondcircle;
      \fill[green] \thirdcircle;
    \end{scope}
\end{tikzpicture}

\end{document}

_

编辑:具体来说,我不是要画维恩图,而是要从三个基本形状中画出一些形状,但实现需要:

  1. 允许任何形状(不仅仅是圆形)
  2. 透明(不能使用白色)
  3. 图像边框不包括 B 和 C

以这个新图像为例

新图片

答案1

至于您更新的问题:这可以通过反向剪辑奇偶剪辑技巧。假设我们想要三角形(-4,0) -| (0,2) -- cycle减去矩形(-1,-0.5) rectangle (1,0.5)减去圆形(0.5,1) circle[radius=1cm]。那么我们需要

  1. 添加三角形的路径以获得一些非空的图片(但我们不画出来),
  2. 添加矩形reverse clip'(实际上有一个微妙之处:外部路径的方向很重要,这就是为什么有“其他”方向的版本),
  3. even odd reverse clip为圆圈添加一个。

瞧。

\documentclass[tikz,border=3mm]{standalone}
\tikzset{current reverse clip/.style={insert path={{% https://tex.stackexchange.com/a/127045
   ([xshift=-10cm,yshift=-10cm]current bounding box.south east)  -|
  ([xshift=10cm,yshift=10cm]current bounding box.north west) -| cycle
  }}},
  current reverse clip'/.style={insert path={{% https://tex.stackexchange.com/a/127045
   ([xshift=-10cm,yshift=-10cm]current bounding box.south east)  -|
  ([xshift=10cm,yshift=10cm]current bounding box.north west) -| cycle
  }}},
  even odd clip/.code={% https://tex.stackexchange.com/a/76216
  \pgfseteorule}}
\begin{document}
\begin{tikzpicture}
\path (-4,0) -| (0,2) -- cycle;
\clip[overlay] (-1,-0.5) rectangle (1,0.5) [current reverse clip'];
\clip[overlay,even odd clip] (0.5,1) circle[radius=1cm] [current reverse clip];
\draw[left color=red,right color=blue]  (-4,0) -| (0,2) -- cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

我要提一下,有一个实验库venn可以找到这里。这包含上述风格的一些变体。保存这个文件就像tikzlibraryvenn.code.tex在 LaTeX 可以找到它的地方一样,例如与你编译的文件相同的目录。手册可以在这里,您可以在这里找到更多剪辑示例。使用此库获取原始问题的图表非常简单

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{venn}
\begin{document}
\begin{tikzpicture}[Venn diagram={style={fill=blue},offset angle=60}]
 \Venn{-B,-C,A}
\end{tikzpicture}
\end{document}

在此处输入图片描述

或者你可以使用也许更直观的语法

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{venn}
\begin{document}
\begin{tikzpicture}[Venn diagram={style={fill=blue},offset angle=60}]
 \Venn{op={(A)/(BuC)}}
\end{tikzpicture}
\end{document}

顺便说一句,如果您对语法有抱怨,或者说,如果您愿意\Venn{op={(A)-(BuC)}},现在是给出这种反馈的时候了。

相关内容