Einrücken von regelmäßigen Polygonen mit TikZ

Tabellen und Grafiken erstellen und anordnen


ThoRie
Forum-Century
Forum-Century
Beiträge: 159
Registriert: Fr 12. Mai 2017, 11:57

Einrücken von regelmäßigen Polygonen mit TikZ

Beitrag von ThoRie »

Hier erstmal mein Code:
\documentclass[10pt,a4paper]{article}
\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{verbatim}
\usetikzlibrary{arrows.meta} 

\begin{document}

\begin{tikzpicture}
\draw[-Stealth] (0,-2.5) to (0,2.5);
\draw[dotted] (0,0) -- (15,0);
\node at (-0.3,0) {0};
\begin{scope}[rotate=90]
\draw (60:1) -- (120:1) -- (180:1) -- (240:1) -- (300:1) -- (360:1) -- cycle; 
\end{scope}
\end{tikzpicture}

\end{document}
Ich will jetzt, dass der erste senkrechte Strich des Sechseckes auf der x-Position 0.5 sitzt. Der Rest soll aber so bleiben, wie er ist. Nach stundenlanger Suche im Internet bin ich da leider auf keine Lösung gestoßen :/

Vielleicht weiß da jemand mehr :)

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Mein Vorschlag nutzt die Berechnung der Höhe in einem Dreieck, um das Sechseck an die gewünschte Stelle zu verschieben:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{arrows.meta}

\begin{document}
{\newlength{\hexradius}
\setlength{\hexradius}{1cm}
\begin{tikzpicture}
\draw[-Stealth] (0,-2.5) to node [left] {0} (0,2.5);
\draw[dotted] (0,0) -- (15,0);
\draw[rotate=90, yshift=-(0.5cm+\hexradius*sin(60))]
   (0:\hexradius) foreach \angle in {60,120,...,360}{-- (\angle:\hexradius)}
;
\fill[red] (.5,0) circle (2pt);
\end{tikzpicture}}
\end{document}
Entspricht das ungefähr dem, was Du suchst?

Eine andere Möglichkeit wäre der Einsatz der shapes-Bibliothek:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{arrows.meta, shapes.geometric}

\begin{document}
{\newlength{\hexradius}
\setlength{\hexradius}{1cm}
\begin{tikzpicture}[
   hexagon/.style={
      draw,
      regular polygon,
      regular polygon sides=6,
      minimum size=2*\hexradius
   }
]
\draw[-Stealth] (0,-2.5) to node [left] {0} (0,2.5);
\draw[dotted] (0,0) -- (15,0);
\pgfmathparse{0.5cm+\hexradius*sin(60)}
\node[hexagon, rotate=90] at (\pgfmathresult pt,0) {};
\fill[red] (.5,0) circle (2pt);
\end{tikzpicture}}
\end{document}
Hinweise zur Präambel:
  • Die Schriftgröße 10pt ist die Voreinstellung der Standardklasse.
  • pgfplots lädt übrigens pgf/TikZ.

Antworten