如何使用LaTeX绘制具有等距点的圆

时间:2016-01-15 10:37:23

标签: latex

如何绘制一个等距离的圆和一个连接等距的弦?例如,一个具有4个等距点的圆。

1 个答案:

答案 0 :(得分:1)

你可以用TikZ做到这一点。我们可以定义一个命令\equic,它将半径(可选,默认为1 cm)和点数作为输入:

\newcommand{\equic}[2][1 cm]{
  \draw (0,0) circle (#1);
  \foreach \i in {1,...,#2} {
    \coordinate (N\i) at (\i*360/#2:#1);
    \fill[black] (N\i) circle (0.05 cm) node[anchor=west]{$\i$};
  }
  \draw (N#2) -- (N1);
  \foreach \i in {2,...,#2} {
    \pgfmathparse{\i-1}
    \edef\j{\pgfmathresult}
    \draw (N\i) -- (N\j);
  }
}

现在,测试此命令的独立.tex文件如下:

\documentclass{article}
\usepackage{tikz}
\newcommand{\equic}[2][1 cm]{
  \draw (0,0) circle (#1);
  \foreach \i in {1,...,#2} {
    \coordinate (N\i) at (\i*360/#2:#1);
    \fill[black] (N\i) circle (0.05 cm) node[anchor=west]{$\i$};
  }
  \draw (N#2) -- (N1);
  \foreach \i in {2,...,#2} {
    \pgfmathparse{\i-1}
    \edef\j{\pgfmathresult}
    \draw (N\i) -- (N\j);
  }
}
\begin{document}
\begin{tikzpicture}
\equic[5 cm]{6}
\end{tikzpicture}
\end{document}

产生:

result of the LaTeX command

编辑(根据您的评论)

  1. 您可以通过在坐标定义上放置一个减号来顺时针编号:

    \coordinate (N\i) at (-\i*360/#2:#1);
    
  2. 您可以将数字放在外面,方法是首先计算一个比圆圈大一点的半径(此处为\oc,另外为0.25厘米) :

    \pgfmathparse{#1/1 cm+0.25};
    \edef\oc{\pgfmathresult cm};
    
  3. 该查询定义了一组坐标(N1)(N2) ... (Nn)。您可以向TikZ图像添加说明,如:

    \draw (N1) -- (N2) -- (N3) -- (N1);
    

    (N1)(N2)(N2)(N3)等等绘制线条

  4. 如果您不想在所有等距点之间绘制线条,则可以删除第二个\draw语句和\foreach循环。

  5. 将所有文件放在一起将是:

    \documentclass{article}
    \usepackage{tikz}
    \newcommand{\equic}[2][1 cm]{
    \draw (0,0) circle (#1);
    \pgfmathparse{#1/1 cm+0.25};
    \edef\oc{\pgfmathresult cm};
      \foreach \i in {1,...,#2} {
        \coordinate (N\i) at (-\i*360/#2:#1);
        \fill[black] (N\i) circle (0.05 cm);
        \draw (-\i*360/#2:\oc) node{$\i$};
      }
      \draw (N#2) -- (N1);
      \foreach \i in {2,...,#2} {
        \pgfmathparse{\i-1}
        \edef\j{\pgfmathresult}
        \draw (N\i) -- (N\j);
      }
    }
    \begin{document}
    \begin{tikzpicture}
    \equic[5 cm]{6}
    \draw (N1) -- (N2) -- (N3) -- (N1);
    \end{tikzpicture}
    \end{document}
    

    新输出如下:

    image showing equidistant points outside the circle

    编辑2:

    您可以使用以下代码定义中间等距点:

    \newcommand{\equic}[2][1 cm]{
    \draw (0,0) circle (#1);
    \pgfmathparse{#1/1 cm+0.25};
    \edef\oc{\pgfmathresult cm};
      \foreach \i in {1,...,#2} {
        \coordinate (N\i) at (-\i*360/#2:#1);
        \coordinate (NB\i) at (-\i*360/#2-180/#2:#1);
        \fill[black] (N\i) circle (0.05 cm);
        \fill[black] (NB\i) circle (0.05 cm);
        \draw (-\i*360/#2:\oc) node{$\i$};
        \draw (-\i*360/#2-180/#2:\oc) node{$\bar{\i}$};
      }
    }
    

    现在,代码会生成两组点:原始(N1)(N2),...,(Nn)和一组新的点:(NB1),{ {1}},...,(NB2)(NBn)代表条形码),它们是交错放置的。现在您可以自己再次提供绘图命令,例如:

    \draw (N1) -- (N2) -- (N3) -- (N1);
    \draw (NB4) -- (NB5);
    

    这会产生以下图像:

    circle with 12 equidistant points

    完整代码:

    B