在下一个 MWE 中,我尝试使用由节点之间的边缘绘制的路径(一个圆圈)进行剪辑,但没有成功。automata
不过,使用 绘制它并不是必需的。但重点是:
能够使用路径剪辑(自定义)弯曲边缘
例如,像在 MWE 中一样,可以用节点之间的边来绘制路径。此后的圆应该被路径裁剪掉。
因此,我猜解决方案是将节点重新声明为坐标,在它们之间绘制路径并像往常一样进行剪辑。但这样我就失去了使用边缘选项(弯曲角度)进行绘制的可能性
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{automata}
\begin{document}
\begin{tikzpicture}
\node (A) at (1,1) {a};
\node (B) at (2,2) {b};
\node (C) at (3,1) {c};
\path[draw]
(A) edge[bend right=-30,red,->] (B)
(B) edge[bend right=-30,blue,dashed] (C)
(C) edge[bend right=-30,green,dotted] (A);
\begin{scope}[xshift=3cm]
\node (A) at (1,1) {a};
\node (B) at (2,2) {b};
\node (C) at (3,1) {c};
\path[clip]
(A) edge[bend right=-30,red,->] (B)
(B) edge[bend right=-30,blue,dashed] (C)
(C) edge[bend right=-30,green,dotted] (A);
\path[fill=blue!50] (2, 1.7) circle (.8);
\end{scope}
\end{tikzpicture}
\end{document}
哪里出了问题?为什么圆圈没有被路径裁剪掉?其他流程能做好吗?添加-- cycle
它也没有用。
想要的效果(这里是手动调整的)是这样的:
解决方案可能不需要使用automata
,只要我可以独立地在每个边缘弯曲(的替代品)。
\path[clip]
(A) edge[bend right=-30,red,->] (B)
(B) edge[bend right=-30,blue,dashed] (C)
(C) edge[bend right=-30,green,dotted] (A) -- cycle;
\path[fill=blue!50] (2, 1.7) circle (.8);
答案1
只是为了证明这是可以做到的:
未加评论
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{automata}
\begin{document}
\begin{tikzpicture}
\begin{scope}[xshift=3cm]
\node (A) at (1,1) {a};
\node (B) at (2,2) {b};
\node (C) at (3,1) {c};
\begin{scope}
\path[draw]
(A)
edge [bend right=-30,red,->]
coordinate[pos=1] (Bl)
coordinate[pos=0] (At)
(B)
(B)
edge [bend right=-30,blue,dashed]
coordinate[pos=1] (Ct)
coordinate[pos=0] (Br)
(C)
(C)
edge [bend right=-30,green,dotted]
coordinate[pos=1] (Ar)
coordinate[pos=0] (Cl)
(A);
\path[
clip,
%draw,
%green
]
(At) to [bend right=-30] (Bl)
to [bend right=-10] (Br) to [bend right=-30]
(Ct) to (Cl)
to [bend right=-30] (Ar)
to (At) to cycle
;
\fill[opacity=0.1] (2, 1.7) circle (.8);
\end{scope}
\end{scope}
\end{tikzpicture}
\end{document}