节点放置中的相对坐标

节点放置中的相对坐标

当我尝试\node使用语法中的相对坐标时:(x,y)++(a:r)它给了我一个错误,但是当我只指定第二个坐标时,就像++(a:r)(x,y)一个坐标隐含一样(0,0)。我希望我可以使用相对坐标将节点放置在某个点上。这是我的代码:

\documentclass[12pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}
    % Triangle ABC
    \draw (0,0)--++(60:2)--++(-60:2)--cycle;
        \foreach \c in {(0,0),++(60:2),++(0:2)}
    \draw[fill] \c circle (.05);
    \node [above] at ++(60:2) {\( A \)};
    \node [right] at ++(0:2) {\( B \)};
    \node [left] at (0,0) {\( C \)};
    % Triangle EFG
    \draw (4,0)--++(60:2)--++(-60:2)--cycle;
        \foreach \c in {(4,0),(4,0)++(60:2),(4,0)++(0:2)}
    \draw[fill] \c circle (.05);
    \node [above] at ++(60:2) {\( E \)};
    \end{tikzpicture}
\end{document}

E如果我能将其点写为 ,那么放置节点将非常容易(4,0)++(60:2)。如何在 中使用相对坐标指定它node

答案1

(0,0)如果没有事先指定,则相对位置确实从 开始\pgfpathmoveto。基本上, 的规则++(a)是:从此路径表达式的最后一个位置a向前移动,无论是按组件++(x,y)还是按角度移动,如++(a:r)。不过,您确实需要该锚点。

由于含义是从 ​​开始,因此(0,0)您应该考虑使用带有移位的范围或简单地使用\path (4,0) node[above] at (60:6) {}

一种选择:

\documentclass[12pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}
    % Triangle ABC
    \draw (0,0)--++(60:2)--++(-60:2)--cycle;
        \foreach \c in {(0,0),++(60:2),++(0:2)}
    \draw[fill] \c circle (.05);
    \node [above] at ++(60:2) {\( A \)};
    \node [right] at ++(0:2) {\( B \)};
    \node [left] at (0,0) {\( C \)};
    % Triangle EFG
    \draw (4,0)--++(60:2)--++(-60:2)--cycle;
        \foreach \c in {(4,0),(4,0)++(60:2),(4,0)++(0:2)}
    \draw[fill] \c circle (.05);
    \path (4,0) node [above] at ++(60:6) {\( E \)};
    \end{tikzpicture}
\end{document}

另一个:

\documentclass[12pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}
    % Triangle ABC
    \draw (0,0)--++(60:2)--++(-60:2)--cycle;
    \foreach \c in {(0,0),++(60:2),++(0:2)}
      \draw[fill] \c circle (.05);
    \node [above] at ++(60:2) {\( A \)};
    \node [right] at ++(0:2) {\( B \)};
    \node [left] at (0,0) {\( C \)};
    % Triangle EFG
    \begin{scope}[shift={(4,0)}]
    \draw (0,0)--++(60:2)--++(-60:2)--cycle;
    \foreach \c in {(0,0),++(60:2),++(0:2)}
      \draw[fill] \c circle (.05);
    \path node [above] at ++(60:6) {\( E \)};
    \end{scope}
    \end{tikzpicture}
\end{document}

相关内容