边界上有点、点间有弦的圆

边界上有点、点间有弦的圆

我试图通过绘制一个圆来可视化完美匹配,圆的边界上有给定偶数个点,这些点之间有一些弦,使得每个点都恰好与一个弦相关。这是我当前的输出:在此处输入图片描述

我使用的代码是从另一个示例修改而来的。目前,我几乎得到了我想要的东西。

\documentclass{article}
\usepackage{tikz}

\newcommand\matching[2]{
\begin{tikzpicture}
\foreach \x [count=\p] in {0,...,#1} {
    \node[shape=circle,fill=black, scale=0.5] (\p) at (-\x*360/#1:2) {};};
\foreach \x [count=\p] in {1,...,#1} {
    \draw (\x*360/#1:2.4) node {\p};}; 
\draw (1) arc (1:360:2);
\foreach \x/\y in {#2} {
   \draw (\x) -- (\y);}
\end{tikzpicture}}

\begin{document}
\matching{8}{7/4, 2/5, 1/8, 6/3}
\end{document} 

在上面的例子中,我想要以下点 7/4、2/5、1/8 和 6/3 之间的和弦,这与图片不一致。此外,我希望将点 1 放在最上面的位置,而不是 2。

答案1

我不完全理解您的代码和输出之间的连接不同是什么意思,但您可以使用以下代码,它比您的方法简单一些:

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}

\newcommand\matching[2]{%
 \begin{tikzpicture}
  \draw (0,0) circle (2);
  \foreach \x in {1,...,#1} {
   \node[shape=circle,fill=black, scale=0.5,label={{((\x-1)*360/#1)+90}:\x}] (n\x) at ({((\x-1)*360/#1)+90}:2) {};
  };
  \foreach \x/\y in {#2} {
   \draw (n\x) -- (n\y);
  }
 \end{tikzpicture}%
}

\begin{document}
\matching{8}{7/4, 2/5, 1/8, 6/3}
\end{document} 

导致:

在此处输入图片描述

相关内容