
図形の辺の数に基づいて頂点の座標をプロットする図形描画テンプレートがあります。しかし、辺の数が多い図形では (a1)-(a2) などと入力するのは面倒なので、foreach ループを使ってみました。次のようなものです。
\draw
\foreach \s in {0,1,...,\m}
{
{(a\s)--
}
};
しかし、これは機能しません。これを見ると、機能するとは期待していませんが、他にどうすればよいかわかりません。
これが私のコードです:
,tex
\begin{tikzpicture}
\pgfmathsetmacro{\n}{15};
\pgfmathsetmacro{\angle}{360/\n};
\pgfmathsetmacro{\initialangle}{90+(\angle/2)(1-Mod(\n,2))};
\pgfmathsetmacro{\m}{\n-1};
\foreach \s in {0,1,...,\m}
{
\pgfmathsetmacro{\r}{\angle\s};
\coordinate (a\s) at (\initialangle+\r:3);
\draw (a\s) circle (0.1) node[above]{a\s};
}
\end{tikzpicture}
答え1
ようこそ!このようなものをご希望ですか?
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\pgfmathtruncatemacro{\n}{15};
\pgfmathsetmacro{\angle}{360/\n};
\pgfmathsetmacro{\initialangle}{90+(\angle/2)(1-Mod(\n,2))};
\pgfmathtruncatemacro{\m}{\n-1};
\foreach \s in {0,1,...,\m}
{
\pgfmathsetmacro{\r}{\angle*\s};
\coordinate (a\s) at (\initialangle+\r:3);
\draw (a\s) circle[radius=0.1] node[above]{a\s};
}
\draw (a0)
foreach \s in {1,...,\m}{-- (a\s)} -- cycle;
\end{tikzpicture}
\end{document}
ここで、0 番目の座標を別の方法で処理し、有利な場合\pgfmathsetmacro
は に変更し\pgfmathtruncatemacro
、乗算記号*
とを追加しました-- cycle
。
もう少し凝ったものにしたいかもしれません。
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\pgfmathtruncatemacro{\n}{15};
\pgfmathsetmacro{\angle}{360/\n};
\pgfmathsetmacro{\initialangle}{90+(\angle/2)(1-Mod(\n,2))};
\pgfmathtruncatemacro{\m}{\n-1};
\path foreach \s in {0,1,...,\m}
{
({\initialangle+\angle*\s}:3)
node[circle,inner sep=0.5mm,draw,label={[circle,anchor={180+\initialangle+\angle*\s}]$a_{\s}$}]
(a\s) {}
};
\draw foreach \s [remember=\s as \lasts (initially \m)]
in {0,1,...,\m} { (a\lasts)-- (a\s)};
\end{tikzpicture}
\end{document}
もちろん、グラフ描画ライブラリ(例えば、pgfmanual v3.1.5のp.274の上部にある例を参照)、チェーン(pgfmanual v3.1.5のp.604の例を参照)、またはつながりを円状にする。