我可以使用“正多边形”而不使用“\node”吗?

我可以使用“正多边形”而不使用“\node”吗?

例如,我可以执行这个命令:

\filldraw[fill=blue,draw=black,opacity=0.3] (0,0) circle (2cm);

但我也想要一些适用于正多边形的东西,像这样:

\filldraw[fill=blue,draw=black,opacity=0.3] (0,0) regular polygon, regular polygon sides=6 (2cm);

是否有这样的命令,或者我应该先编写\newcommand并定义一个脚本来执行此操作?

答案1

我提出两种解决方案,各有优缺点:

  • 第一个使用picsnode,因此您必须与路径分开指定操作(填充、绘制...)。例如,您可以使用pic[draw]{poly=5:1cm}来绘制五边形内半径1厘米。
  • 第二种方法使用insert path,更接近于circle,因为它只是插入与多边形对应的路径,因此使用路径的操作。例如,您可以使用[poly=5:1cm]插入五边形外半径1厘米。
\documentclass[tikz,border=7pt]{standalone}
\usetikzlibrary{shapes.geometric} % <- for regular polygon nodes
\tikzset{
  pics/poly/.style args={#1:#2}{
    code = {
      \node[regular polygon, regular polygon sides={#1}, pic actions,
        outer sep=0pt,inner sep={#2}] at (0,0){};
    }
  },
  poly/.style args={#1:#2}{
    insert path={
      +(0:#2) foreach ~ in {1,...,#1}{ -- +(~*360/#1:#2)} +(0,0)
    }
  },
}

\begin{document}
  \begin{tikzpicture}
    \draw[blue, fill=yellow] (0,0) -- (1,1)
      [poly=7:1cm]
      -- (4,1)
      pic[fill=red, opacity=.5]{poly=7:1cm}
      -- (2,2)
    ;
  \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容