Platzierung von Beschriftungen in tikzpicture

Platzierung von Beschriftungen in tikzpicture

Ich habe ein Polygon konstruiert tikzund möchte wissen, wie ich die Punkte in der im folgenden Diagramm gezeigten Weise beschrifte.

Bildbeschreibung hier eingeben

Ich habe mein Polygon wie folgt aufgebaut:

\documentclass{article}
\usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
            \node[shape=circle,draw,inner sep=2pt] (char) {#1};}}
\begin{document}
\begin{figure}[h]
\centering
\begin{tikzpicture} [scale = 0.2]
\coordinate (a) at (10,0);
\coordinate (b) at (8,5);
\coordinate (c) at (5,8);
\coordinate (d) at (0,10);
\coordinate (e) at (-5,8);
\coordinate (f) at (-8,5);
\coordinate (g) at (-10,0);
\coordinate (h) at (-8,-5);
\coordinate (i) at (-5,-8);
\coordinate (j) at (0,-10);
\coordinate (k) at (5,-8);
\coordinate (l) at (8,-5);
\draw (a) -- (b) --(c) -- (d) -- (e) -- (f) -- (g) -- (h) -- (i) -- (j) -- (k) -- (l) -- (a);
\draw[thick] (0,12) -- (0,-12);
\draw[thick] (12,0) -- (-12,0);
\node[above] at (7.5,0.2) {\circled{1}};
\node[above] at (12,0.2){(10,0)};
\end{tikzpicture}
\end{figure}
\end{document}

Es ist wirklich mühsam, die richtigen Koordinaten zum Hinzufügen der Beschriftung sowie die Koordinaten des entsprechenden Punkts auf dem Polytop zu finden. Die Beschriftungen sehen oft hässlich aus und sind nicht gut positioniert. Gibt es einen bestimmten Befehl, den ich verwenden könnte, um den Vorgang zu vereinfachen?

Danke!

Antwort1

Dadurch wird die Codemenge reduziert, das Ergebnis könnte jedoch wahrscheinlich besser sein. (Wenn ein Zauberer eine viel bessere Lösung findet, werde ich diese Antwort wahrscheinlich löschen.)

Die Beschriftungen werden mit folgender Schleife angebracht:

\foreach [count=\i] \x/\y in {10/0,8/5,5/8,0/10,-5/8,-8/5,-10/0,-8/-5,-5/-8,0/-10,5/-8,8/-5}
{
  \path (\x,\y) ++({atan2(\y,\x)}:3.5cm) node [fill=white,inner sep=0pt] {$(\x,\y)$};
  \path (\x,\y) ++({atan2(\y,\x)-180}:2cm) node [draw,circle,inner sep=2pt,fill=white]{\i};
}

Hier werden einfach Polarkoordinaten zum Platzieren verwendet. ++({atan2(\y,\x)}:3.5cm)Das bedeutet, von der vorherigen Position (hier (\x,\y)) aus 3,5 cm in die durch den Winkel angegebene Richtung zu bewegen atan2(\y,\x)und diese Position zur neuen „aktiven“ Position zu machen. An dieser Position wird dann mit ein Knoten platziert node [fill=white,inner sep=0pt] {$(\x,\y)$}.

Beachten Sie beim zweiten \path, dass der Winkel beträgt atan2(\y,\x)-180. Dies bedeutet, dass Sie sich nicht vom Ursprung weg, sondern auf den Ursprung zu bewegen. Daher werden diese Knoten auf der Innenseite des Polygons platziert, statt auf der Außenseite.

\pathWenn ich es mir recht überlege, reicht eigentlich ein Befehl:

\foreach [count=\i] \x/\y in {10/0,8/5,5/8,0/10,-5/8,-8/5,-10/0,-8/-5,-5/-8,0/-10,5/-8,8/-5}
{
  \path (\x,\y) +({atan2(\y,\x)}:3.5cm) node [fill=white,inner sep=0pt] {$(\x,\y)$}
                +({atan2(\y,\x)-180}:2cm) node [draw,circle,inner sep=2pt,fill=white]{\i};
}

Der Unterschied besteht hier darin +, dass bei einem die neue Position nicht zur aktiven Position gemacht wird, so dass bei der Berechnung der nächsten Position die Referenzposition immer noch ist (\x,\y).

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture} [scale = 0.2]
\draw (10,0) 
  \foreach \x/\y in {8/5,5/8,0/10,-5/8,-8/5,-10/0,-8/-5,-5/-8,0/-10,5/-8,8/-5,10/0}
      { -- (\x,\y)};

\draw[thick] (0,12) -- (0,-12);
\draw[thick] (12,0) -- (-12,0);

\foreach [count=\i] \x/\y in {10/0,8/5,5/8,0/10,-5/8,-8/5,-10/0,-8/-5,-5/-8,0/-10,5/-8,8/-5}
{
  \path (\x,\y) ++({atan2(\y,\x)}:3.5cm) node [fill=white,inner sep=0pt] {$(\x,\y)$};
  \path (\x,\y) ++({atan2(\y,\x)-180}:2cm) node [draw,circle,inner sep=2pt,fill=white]{\i};
}
\end{tikzpicture}
\end{document}

Antwort2

Was ist damit?

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric} 
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture} 
\draw (-3,0) -- (3,0);
\draw (0,-3) -- (0,3);
\draw [blue, dashed] (0,0) circle(2.5cm);
\node[regular polygon, regular polygon sides=12, minimum size=5cm, rotate=-60, draw] at (0,0) (A) {};
\foreach \i in {1,...,12}  {
     \path  (0,0) -- node [draw, circle, inner sep=0mm, minimum size=3ex, pos=0.8]  {\i} (A.corner \i); 
     \path  let \p1=($(A.corner \i)-(0,0)$),
                \n1={\x1*0.0352777778},
                \n2={\y1*0.0352777778}
            in  
            \pgfextra{\edef\mya{\ifdim\x1<0pt left\else right\fi}}
            (0,0) -- node [pos=1.0, \mya,sloped,scale=0.8]  
    {$(
        \pgfmathprintnumber[fixed]{\csname strip@pt\endcsname\dimexpr\n1\relax},
        \pgfmathprintnumber[fixed]{\csname strip@pt\endcsname\dimexpr\n2\relax}
    )$} (\x1,\y1); 
}
\end{tikzpicture}
\end{document}

mit dem Ergebnis....

resultierende Zahl

verwandte Informationen