Tikz:有没有绘制具有多个坐标的多边形的快捷方式?

Tikz:有没有绘制具有多个坐标的多边形的快捷方式?

其中tkz-euclide有一个快捷方式:

\tkzDrawPolygon(A1,A...,A13)

平原中有类似的东西吗tikz-pgf? 我正在寻找以下内容的快捷方式:

\draw (A1) -- (A2) -- (A3) -- (A4) -- (A5) -- (A5) -- (A6) -- (A7) -- (A8) -- (A9) -- (A10) -- (A11) -- (A12) -- (A13) -- cycle;

答案1

给定一组坐标(A1), (A2), ... (A<n>),我们可以通过它们绘制多边形

 \draw plot[samples at={1,...,<n>}] (A\x) -- cycle;

它仅比tkz-euclide语法稍微长一点。

由于没有 MWE,我不得不创建一些节点。

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
 \path foreach \X in {1,...,13} {(360*\X/14:2+rnd) coordinate (A\X)};
 \draw plot[samples at={1,...,13}] (A\x) -- cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

当然,也可以更改情节处理程序,例如

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
 \path foreach \X in {1,...,13} {(360*\X/14:2+rnd) coordinate (A\X)};
 \draw plot[smooth cycle,samples at={1,...,13}] (A\x);
\end{tikzpicture}
\end{document}

在此处输入图片描述

和往常一样,你可以为此定义样式。下面是一个样式polygon through,它生成上面的多边形,

\draw[polygon through={A1,A...,A13}];

然后可以在路径中使用其中的几个,例如

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[polygon through/.style={insert path={
    plot[samples at={#1}] (\x) -- cycle}}]
 \path foreach \X in {1,...,13} {(360*\X/14:3+rnd) coordinate (A\X)
 (360*\X/14:1.5+rnd) coordinate (B\X)};
 \fill[even odd rule,blue,
    polygon through={A1,A...,A13},polygon through={B1,B...,B13}];
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

tkz-euclide 后面是 TikZ。您可以重新创建相同的宏

\def\tkzDrawPolygon[#1](#2,#3){%
 \begingroup
 \draw[#1] (#2)
     \foreach \pt in {#2,#3}{--(\pt)}--cycle;
 \endgroup
} 

\documentclass{standalone} 
\usepackage{tikz}
\begin{document} 

\begin{tikzpicture}
 \path foreach \X in {1,...,13} {(360*\X/14:2+rnd) coordinate (A\X)};
  \draw[thick,blue] (A1) foreach \pt in {A1,A...,A13} {--(\pt)} --cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

可能不如薛定谔的猫技术,这里是另一个基于的expl3\int_step_function:nnN它是“受限可扩展的”,在这里这就足够了)。

\documentclass[tikz, border=2mm]{standalone}
\usepackage{expl3}

\ExplSyntaxOn
\cs_new_eq:NN \intstepfunction \int_step_function:nnN
\ExplSyntaxOff

\begin{document}
\begin{tikzpicture}
  % Define some coordinates
  \foreach \i in {1,...,13} {
    \coordinate (A\i) at (360/13*\i:3);
  }

  % Use them in the prescribed way
  \def\tmp#1{-- (A#1)}
  \draw[blue] (A1) \intstepfunction{2}{13}{\tmp} --cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

当然,也可以使用shapes.geometricTiZ 库:

\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{shapes.geometric}

\begin{document}
\begin{tikzpicture}
\node[regular polygon, regular polygon sides=13, draw=blue,
      inner sep=3cm] at (0,0) {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容