
Ich habe eine Vorlage zum Zeichnen von Formen, die die Koordinaten der Eckpunkte einer Form auf Grundlage der Anzahl der Seiten aufzeichnet. Bei Formen mit vielen Seiten wird es jedoch ziemlich mühsam, (a1)-(a2) usw. einzugeben, also habe ich versucht, eine foreach-Schleife zu verwenden. So etwas wie
\draw
\foreach \s in {0,1,...,\m}
{
{(a\s)--
}
};
Aber das funktioniert nicht, und wenn ich es mir anschaue, erwarte ich auch nicht, dass es funktioniert, aber ich habe keine Ahnung, wie ich es sonst angehen könnte.
Hier ist mein Code:
,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}
Antwort1
Herzlich willkommen! Willst du so etwas?
\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}
Hier habe ich die 0. Koordinate anders behandelt, wo vorteilhaft geändert \pgfmathsetmacro
, \pgfmathtruncatemacro
ein Multiplikationszeichen hinzugefügt *
und -- cycle
.
Vielleicht möchten Sie es etwas ausgefallener gestalten.
\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}
Natürlich gibt es noch viele weitere Möglichkeiten, dies zu tun, einschließlich Graphenzeichnungsbibliotheken (siehe z. B. das Beispiel im oberen Teil von S. 274 von pgfmanual v3.1.5), Ketten (siehe das Beispiel auf S. 604 von pgfmanual v3.1.5) oderLassen Sie die Verbindungen einem Kreis folgen.