我需要填充由 4 个圆弧定义的区域,我知道这些圆弧的中心和半径。
我无法创建该区域的轮廓并填充它。
这是带有圆圈的 MWE,但图片尺寸太大:
\documentclass[tikz,border=5]{standalone}
\usepackage{amsmath}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\def\RI{1};
\def\RE{6};
\def\RL{5};
\draw[name path=CI] circle[radius=\RI];
\draw[name path=CE,blue] (0,0) circle [radius=\RE];
\draw[name path=CR,green] (0,\RI+\RL) circle[radius=\RL];
\draw[name path=CL,red] (0,-\RI-\RL) circle[radius=\RL];
\node[purple] at (-\RI/2-\RE/2,0) {\tiny Color here};
\path[purple,ultra thick,intersection segments={of=CR and CE,sequence={L2[reverse]--R3}},name path=P1,->,dashed];
\path[purple,ultra thick,intersection segments={of=P1 and CL,sequence={L1--R2[reverse]}},name path=P2,->,dashed];
\fill[purple,ultra thick,intersection segments={of=P2 and CI,sequence={L2--R2[reverse]}},name path=P3,->,dashed];
\end{tikzpicture}
\end{document}
但是当我尝试做同样的事情来arc
获得更小的输出时,我无法构建这个fill
区域。
\begin{tikzpicture}
\def\RI{1};
\def\RE{6};
\def\RL{5};
\draw[name path=CI] circle[radius=\RI];
\draw[name path=CE,blue] ++(0,\RE) arc [start angle=90, end angle=270,radius=\RE];
\draw[name path=CR,green] (-\RL,\RI+\RL) arc [start angle=180, end angle=270,radius=\RL];
\draw[name path=CL,red] (0,-\RI) arc [start angle=90, end angle=180,radius=\RL];
\node[purple] at (-\RI/2-\RE/2,0) {\tiny Color here};
% \path[purple,ultra thick,intersection segments={of=CR and CE,sequence={L2[reverse]--R3}},name path=P1,->,dashed];
% \path[purple,ultra thick,intersection segments={of=P1 and CL,sequence={L1--R2[reverse]}},name path=P2,->,dashed];
% \fill[purple,ultra thick,intersection segments={of=P2 and CI,sequence={L2--R2[reverse]}},name path=P3,->,dashed];
\end{tikzpicture}
编辑1:使用overlay
来自的解决方案@Qrrbrbirlbel评论
如果我使用命令overlay
上的选项\draw
,顶部似乎没问题,但底部不行。我认为问题出在它intersection segment
没有overlay
选项,但我知道如何设置它。我的目标是仔细查看该fill
区域。
\begin{tikzpicture}
\def\RI{1}
\def\RE{6}
\def\RL{5}
\draw[name path=CI] circle[radius=\RI];
\draw[name path=CE,blue,overlay] (0,0) circle [radius=\RE];
\draw[name path=CR,green,overlay] (0,\RI+\RL) circle[radius=\RL];
\draw[name path=CL,red,overlay] (0,-\RI-\RL) circle[radius=\RL];
\node[purple] at (-\RI/2-\RE/2,0) {\tiny Color here};
\path[purple,ultra thick,intersection segments={of=CR and CE,sequence={L2[reverse]--R3}},name path=P1,->,dashed,overlay];
\path[purple,ultra thick,intersection segments={of=P1 and CL,sequence={L1--R2[reverse]}},name path=P2,->,dashed,overlay];
\fill[purple,ultra thick,intersection segments={of=P2 and CI,sequence={L2--R2[reverse]}},name path=P3,->,dashed];
\end{tikzpicture}
答案1
序列需要更改为
- P1:
L2[reverse]--R2
和 - P2:
L1--R1[reverse]
因为现在您有不同的交叉点和不同的路径分段。蓝色圆圈 (CE) 与绿色圆圈 (CR) 相交两次,但您需要第三个线段 ( R3
),但现在您只有一个交叉点,因此它们总共只有两个线段,您需要最后一个线段:R2
。
P2 和蓝色与红色的交点也是同样的道理。由于绿色和红色与黑色相切,因此 P3 的顺序无需改变。
代码
\documentclass[tikz, border=5pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}
\def\RI{1} \def\RE{6} \def\RL{5} % no ; here
\draw[name path=CI] circle[radius=\RI];
\draw[name path=CE, blue] (0,\RE)
arc [start angle= 90, end angle=270, radius=\RE];
\draw[name path=CR, green] (-\RL,\RI+\RL)
arc [start angle=180, end angle=270, radius=\RL];
\draw[name path=CL, red] (0,-\RI)
arc [start angle= 90, end angle=180, radius=\RL];
\path[name path=P1,
intersection segments={of=CR and CE, sequence={L2[reverse]--R2}}];
\path[name path=P2,
intersection segments={of=P1 and CL, sequence={L1--R1[reverse]}}];
\fill[purple, name path=P3, % naming not really necessary
intersection segments={of=P2 and CI, sequence={L2--R2[reverse]}}];
\end{tikzpicture}
\end{document}