
我正在尝试使用 tikzpicture 生成一个随机多边形,并且对如何找到对应点有疑问。例如,我从一个多边形开始,然后继续构建一侧。现在的问题是,我想让第二个多边形由第一个多边形的点闭合。一个简单的例子将展示一切:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{tikzpicture}
% First polygon (start)
\draw[-] (0,0) -- (72:1cm) -- ++(144:1cm) -- ++(216:1cm) -- ++(288:1cm) -- (0,0);
% Second polygon (start at 0,0 and end 72:1cm but how?)
\draw[-] (0,0) -- (-20:0.5cm) -- ++(70:0.8cm) -- ++(100:0.6cm) -- (0.3,1);
\end{tikzpicture}
\end{figure}
\end{document}
第二条线应在第一个多边形点处结束,即 (72:1cm)。我试图做这样的事情:
\draw[-] (0,0) -- (72:1cm) node (a) {} -- ...;
\draw[-] ... - (a);
但这不起作用。我可能在这里做错了什么,因为应该可以用 (a) 或类似的东西来标记第一个多边形的点。
欢迎提出任何建议。问候,Tobias
答案1
您没有说明什么不起作用,但您的解决方案是正确的,只是最好使用 acoordinate
而不是常规的node
。 Anode
有一些非零值,inner sep
而 acoordinate
只是一个点。
node
为了更好地理解这些差异,我使用和复制了代码coordinate
:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{tikzpicture}
% First polygon (start)
% `a` is a coordinate
\draw[-] (0,0) -- (72:1cm) coordinate (a) -- ++(144:1cm) -- ++(216:1cm) -- ++(288:1cm) -- (0,0);
% Second polygon (start at 0,0 and end 72:1cm but how?)
\draw[-] (0,0) -- (-20:0.5cm) -- ++(70:0.8cm) -- ++(100:0.6cm) -- (a);
\begin{scope}[xshift=3cm]
% First polygon (start)
% `a` is a node
\draw[-] (0,0) -- (72:1cm) node[draw=red] (a) {} -- ++(144:1cm) -- ++(216:1cm) -- ++(288:1cm) -- (0,0);
% Second polygon (start at 0,0 and end 72:1cm but how?)
\draw[-] (0,0) -- (-20:0.5cm) -- ++(70:0.8cm) -- ++(100:0.6cm) -- (a);
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}
右图显示了使用 的问题nodes
。即使是空节点也有一些区域(除非您使用选项inner sep=0pt
),并且以 (仅节点名称)开始或结束的路径(a)
将在节点的边界处开始或结束。这就是您的初始解决方案发生的情况。
(a.center)
正如 TonioElGringo 所建议的,如果您写入(明确选择节点的锚点),您仍然可以使用常规节点并获得所需的结果。
左图使用了一个coordinate
空节点,没有维度。在这种情况下,对(a)
(坐标名称) 的引用相当于,(a.center)
因为节点的中心和边界之间没有距离。