TiKz 删除两个圆之间的交点

TiKz 删除两个圆之间的交点

我正在尝试制作一个图表,但是重叠部分让我很困扰。如何移除它,以便两个圆无缝相交。

\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\draw[color=orange!80, fill=yellow!30, thick] (-0.5, 0) circle (1);
\draw[color=orange!80, fill=yellow!30, thick]  ( 0.5, 0) circle (1);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

如果你想要的结果类似于Thruston 的回答是,Z,你能做的就是改变Zarko 的回答首先描边两个圆圈,然后填充内部,为交叉部分着色。我还添加了一些 TeX 宏以避免重复路径。

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
    \newcommand\twocircles{%
        % notice that the "circle(1)" syntax is deprecated
        (-0.5, 0) circle[radius=1] ( 0.5, 0) circle[radius=1]%
    }
    \draw[orange!80, thick] \twocircles;
    \fill[yellow!30] \twocircles;
\end{tikzpicture}
\end{document}

在此处输入图片描述

请注意,此解决方案中的边框宽度减半,因为第二fill条指令也擦除了一半。

答案2

  • 您的问题没有完全清楚您想要做什么。
  • 我想,您可能正在寻找以下内容:

在此处输入图片描述

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\draw[fill=yellow!30]
        (-0.5, 0) circle (1)
        ( 0.5, 0) circle (1);
\draw[orange!80, thick] 
        (-0.5, 0) circle (1)
        ( 0.5, 0) circle (1);
\end{tikzpicture}

\end{document}

附录: 正如@Qrrbrbirlbel 在他的评论中所建议的那样(非常感谢您的提示),提出的解决方案不需要两条单独的路径:

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}
\path[draw=orange!80, fill=yellow!30, thick, radius=1] 
                      (-0.5, 0) circle[] (0.5, 0) circle[];
   \end{tikzpicture}
\end{document}

结果和以前一样!

答案3

您可以将边界绘制为两个圆弧并填充内部:

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw[thick, orange!80, fill=yellow!30] (45:1) arc (45:315:1) arc (-135:135:1)--cycle;
\end{tikzpicture}

\end{document}

答案4

或许像这样?

在此处输入图片描述

我已经做过了元帖子包裹在内luamplib,所以您需要用 来编译它lualatex

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
    path a, b, c;
    a = fullcircle scaled 200 shifted 60 left;
    b = fullcircle scaled 200 rotated 180 shifted 60 right;
    c = buildcycle(a, b); 

    color orange, yellow;
    orange = (1, 0.546, 0);
    yellow = (1, 1, 0.7);

    fill c withcolor yellow;
    draw c withpen pencircle scaled 2 withcolor orange;

endfig;
\end{mplibcode}
\end{document}

我使用了方便的buildcycle宏将两个圆圈连接成一条封闭的路径。

相关内容