有没有办法在 tikz 中获取两个封闭路径的“集合并集”?
为了说明我的意思,请考虑以下 MWE
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\path[fill=cyan] (0,1)--(3,1)--(3,2)--(0,2)--cycle;
\path[fill=orange] (1,0)--(1,3)--(2,3)--(2,0)--cycle;
\end{tikzpicture}
\end{document}
我想从这两条路径中得到一条包含红色路径和蓝色路径并集的路径。在本例中,这对应于下面的黑线:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\path[fill=cyan] (0,1)--(3,1)--(3,2)--(0,2)--cycle;
\path[fill=orange] (1,0)--(1,3)--(2,3)--(2,0)--cycle;
\path[draw,line width=1.5pt] (0,1)--(1,1)--(1,0)--(2,0)--(2,1)--(3,1)--(3,2)--(2,2)--(2,3)--(1,3)--(1,2)--(0,2)--cycle;
\end{tikzpicture}
\end{document}
但对于任何一对路径,我当然想自动获取它。
答案1
它不是完全自动的(你必须选择“部分”),但你可以使用spath3
和intersections
Ti来实现钾Z 库。
例如:
\documentclass[tikz,border=1.618mm]{standalone}
\usetikzlibrary{intersections,spath3}
\begin{document}
\begin{tikzpicture}
\path[fill=cyan ,spath/save=A] (0,1)--(3,1)--(3,2)--(0,2)--cycle;
\path[fill=orange,spath/save=B] (1,0)--(1,3)--(2,3)--(2,0)--cycle;
% spath3 operatios
\tikzset
{
spath/split at intersections={A}{B},
spath/get components of={A}\Acpts,
spath/get components of={B}\Bcpts
}
% the set union:
\draw[thick,
spath/use=\getComponentOf\Acpts{2},
spath/use={\getComponentOf\Bcpts{2},reverse,weld},
spath/use={\getComponentOf\Acpts{4},weld},
spath/use={\getComponentOf\Bcpts{4},reverse,weld},
] -- cycle ;
\end{tikzpicture}
\end{document}