Tikz——围绕交叉点旋转一条线

Tikz——围绕交叉点旋转一条线

我一直在尝试围绕交叉点旋转一条线。问题(我认为)在于交叉点位于先前的范围(我需要它才能获得正确的剪辑),而新范围不知道(交叉点-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}];。交点是节点,因此它们可以全局使用(甚至在其他tikzpictures 中!)如intersection-1intersection-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}

相关内容