我试图通过绘制一个圆来可视化完美匹配,圆的边界上有给定偶数个点,这些点之间有一些弦,使得每个点都恰好与一个弦相关。这是我当前的输出:
我使用的代码是从另一个示例修改而来的。目前,我几乎得到了我想要的东西。
\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}
导致: