我一直在尝试围绕交叉点旋转一条线。问题(我认为)在于交叉点位于先前的范围(我需要它才能获得正确的剪辑),而新范围不知道(交叉点-1)是什么。我一直在尝试以下操作:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\clip (0,0) circle (5);
\begin{scope}
\clip [name path=clipA] (0,0) -- (-30:25) -- (-150:25) -- cycle;
\fill[name path=SpeciesA, blue, line cap = round] (-0.2,0) -- (-0.2,-4) -- (0.2,-4) -- node[sloped, below] {Species A} (0.2,0) -- cycle;
\tikz\name intersections={of=clipA and SpeciesA}
\end{scope}
\begin{scope}
\clip [(0,0) -- (-30:25) -- (90:25) -- cycle;
\fill[blue!60!red, line cap = round, rotate around={150:(intersection-1)}]
(-0.2,0) -- node[rotate= 150, sloped, below] {Species C} (-0.2,-3) -- (0.2, -3) -- (0.2, 0) -- cycle;
\end{scope}
\begin{scope}
\clip (0,0) -- (-150:25) -- (90:25) -- cycle;
\fill[blue!60!green, line cap = round, rotate=210] (-0.2,0) -- (-0.2,-3) -- (0.2, -3) -- node[rotate= 210, sloped, below] {Species B} (0.2, 0) -- cycle ;
\end{scope}
\end{tikzpicture}
\end{document}
正如我所说,LaTeX 似乎不知道 (intersection-1) 是什么,我们到达那里。有什么建议吗?
谢谢
答案1
您可以使用name path global
而不是name path
来使路径可用于在不同范围内查找交点。请注意,您不应name intersection
像使用宏一样使用\tikz
,而应将其用作\path
命令(或类似命令)中的选项。
正如 percusse 指出的那样,除了使用,name path global
您还可以使用 在命名线的范围内找到交点path[name intersections={of=clipA and SpeciesA}];
。交点是节点,因此它们可以全局使用(甚至在其他tikzpicture
s 中!)如intersection-1
、intersection-2
等等。
参考:
代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\clip (0,0) circle (5);
\begin{scope}
\clip [name path global=clipA] (0,0) -- (-30:25) -- (-150:25) -- cycle;
\fill[name path global=SpeciesA, blue, line cap = round] (-0.2,0) -- (-0.2,-4) -- (0.2,-4) -- node[sloped, below] {Species A} (0.2,0) -- cycle;
% \tikz \end{scope}
\begin{scope}
\clip (0,0) -- (-30:25) -- (90:25) -- cycle;
\fill[name intersections={of=clipA and SpeciesA},blue!60!red, line cap = round, rotate around={150:(intersection-1)}]
(-0.2,0) -- node[rotate= 150, sloped, below] {Species C} (-0.2,-3) -- (0.2, -3) -- (0.2, 0) -- cycle;
\end{scope}
\begin{scope}
\clip (0,0) -- (-150:25) -- (90:25) -- cycle;
\fill[blue!60!green, line cap = round, rotate=210] (-0.2,0) -- (-0.2,-3) -- (0.2, -3) -- node[rotate= 210, sloped, below] {Species B} (0.2, 0) -- cycle ;
\end{scope}
\end{tikzpicture}
\end{document}
答案2
是(intersection-1)
的,但您的代码中有两个问题。如果您删除它们,您的代码就可以编译成功。
1) \tikz\name intersections={of=clipA and SpeciesA}
?为什么\tikz
在这里以及\name
???
2)\clip [(0,0) -- (-30:25) -- (90:25) -- cycle;
为什么[(?
下面的这段代码编译通过
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\clip (0,0) circle (5);
\begin{scope}
\clip [name path=clipA] (0,0) -- (-30:25) -- (-150:25) -- cycle;
\fill[name path=SpeciesA, blue, line cap = round]
(-0.2,0) -- (-0.2,-4) -- (0.2,-4) -- node[sloped, below] {Species A} (0.2,0) -- cycle;
\path[name intersections={of=clipA and SpeciesA}];
\end{scope}
\begin{scope}
\clip (0,0) -- (-30:25) -- (90:25) -- cycle;
\fill[blue!60!red, line cap = round, rotate around={150:(intersection-1)}]
(-0.2,0) -- node[rotate= 150, sloped, below] {Species C} (-0.2,-3) -- (0.2, -3) -- (0.2, 0) -- cycle;
\end{scope}
\begin{scope}
\clip (0,0) -- (-150:25) -- (90:25) -- cycle;
\fill[blue!60!green, line cap = round, rotate=210]
(-0.2,0) -- (-0.2,-3) -- (0.2, -3) -- node[rotate= 210, sloped, below] {Species B} (0.2, 0) -- cycle ;
\end{scope}
\end{tikzpicture}
\end{document}