Hallo,
ich würde gerne die Ecken eines Polygons so beschriften wie man sie auch auf dem Blatt Papier beschriftet, sprich "radial" außerhalb der Zeichnung (mit Open in Online-Editor
\documentclass[a4paper,11pt]{article} \usepackage{tikz} \begin{document} \usetikzlibrary{shapes} \begin{figure}[H] \centering \begin{tikzpicture} \draw (0:0cm) coordinate (v0) -- ++(340:2cm) coordinate (v1) -- ++(300:2cm) coordinate (v2) -- ++(260:2cm) coordinate (v3) -- ++(220:2cm) coordinate (v4) -- ++(180:2cm) coordinate (v5) -- ++(140:2cm) coordinate (v6) -- ++(100:2cm) coordinate (v7) -- ++(60:2cm) coordinate (v8) -- cycle; \draw (v6)--(v3)--(v0)--cycle; \draw (v7)--(v2); \draw (v8)--(v1); \end{tikzpicture} \end{figure} \end{document} |
Für das reguläre Neuneck mit Open in Online-Editor
\foreach \i in {0,...,8}\node[anchor={270-\i*40},circle] at (v\i){$v_{\i}$}; Dabei werden die Randanker (border anchor) der Knoten verwendet, die jeweils einer Gradzahl entsprechen. Im folgenden Beispiel kommentiere ich die schwarzen Linien aus und füge dafür orange Linien vom Zentrum durch die Ecken ein. Open in Online-Editor
\documentclass[margin=5pt]{standalone} \usepackage{tikz} \begin{document} \begin{tikzpicture} \draw (0:0cm) coordinate (v0) -- ++(340:2cm) coordinate (v1) -- ++(300:2cm) coordinate (v2) -- ++(260:2cm) coordinate (v3) -- ++(220:2cm) coordinate (v4) -- ++(180:2cm) coordinate (v5) -- ++(140:2cm) coordinate (v6) -- ++(100:2cm) coordinate (v7) -- ++(60:2cm) coordinate (v8) -- cycle; %\draw (v6)--(v3)--(v0)--cycle; %\draw (v7)--(v2); %\draw (v8)--(v1); % Beschriftung \foreach \i in {0,...,8}\node[anchor={270-\i*40},circle] at (v\i){$v_{\i}$}; % Linien vom Zentrum aus, nur zur Sichtbarmachung \coordinate(vM) at (-90:{1/sin(20)});% Zentrum \foreach \i in {0,...,8} \draw[orange](vM)--(v\i)--([turn=0]0:1em);% Strahlen \end{tikzpicture} \end{document} Man kann aber auch die Anzahl der Ecken/Kanten und deren Länge in Makro speichern und den Rest berechnen lassen. Dann kann man deren Anzahl bzw. Länge schnell ändern. Im folgenden wird zum Beispiel ein regelmäßiges Siebeneck mit der Kantenlänge 3 gezeichnet: Open in Online-Editor
\documentclass[margin=5pt]{standalone} \usepackage{tikz} \begin{document} \begin{tikzpicture} \def\laenge{3} \def\n{7} \pgfmathtruncatemacro\nme{\n-1} \pgfmathtruncatemacro\w{360/\n} \draw (0:0) coordinate (v0) foreach \i in {1,...,\nme} {--++(360+\w/2-\i*\w:\laenge) coordinate (v\i)} --cycle; \foreach \i in {0,...,\nme}\node[anchor={270-\i*\w},circle] at (v\i){$v_{\i}$}; %% %% nur zur Sichtbarmachung \coordinate(vM) at (-90:{(\laenge/2)/sin(\w/2)});% Zentrum \foreach \i in {0,...,\nme} \draw[orange,very thin](vM)--(v\i)--([turn=0]0:1em);% Strahlen \end{tikzpicture} \end{document} beantwortet 19 Mai '15, 01:29 esdd |
Ich finde Da der Wert, der in Open in Online-Editor
\pgfmathdeclarefunction{sidesofpolygon}{1}{% \begingroup \def\pgfmathresult{0}% \pgfutil@ifundefined{pgf@sh@ns@#1}{}{% Existiert das Shape überhaupt? \edef\pgf@tempa{\csname pgf@sh@ns@#1\endcsname}% \def\pgf@tempb{regular polygon}% Und ist es ein regular polygon? \ifx\pgf@tempa\pgf@tempb \csname pgf@sh@ma@#1\endcsname \let\pgfmathresult\sides \fi}% \pgfmath@smuggleone\pgfmathresult \endgroup} \makeatother Im Fall, dass Ein Style namens Open in Online-Editor
erste Ecke oben/.style={ shape border rotate={ifthenelse(iseven(\pgfkeysvalueof{/pgf/regular polygon sides}), 180/\pgfkeysvalueof{/pgf/regular polygon sides},0)}}, Die Styles CodeOpen in Online-Editor
\documentclass[tikz]{standalone} \usetikzlibrary{shapes.geometric,angles} \makeatletter \pgfmathdeclarefunction{sidesofpolygon}{1}{% \begingroup \def\pgfmathresult{0}% \pgfutil@ifundefined{pgf@sh@ns@#1}{}{% Existiert das Shape überhaupt? \edef\pgf@tempa{\csname pgf@sh@ns@#1\endcsname}% \def\pgf@tempb{regular polygon}% Und ist es ein regular polygon? \ifx\pgf@tempa\pgf@tempb \csname pgf@sh@ma@#1\endcsname \let\pgfmathresult\sides \fi}% \pgfmath@smuggleone\pgfmathresult \endgroup} \makeatother \tikzset{ erste Ecke oben/.style={ shape border rotate={ifthenelse(iseven(\pgfkeysvalueof{/pgf/regular polygon sides}), 180/\pgfkeysvalueof{/pgf/regular polygon sides},0)}}, markiere Ecken/.style={ append after command={ [/utils/exec=% \pgfmathtruncatemacro\sides{sidesofpolygon("\tikzlastnode")}] \foreach \ecke[ count=\zaehler from 0, evaluate={\subscr=int(mod(\sides-\zaehler,\sides));} ] in {1,...,\sides}{ node[anchor=-90+\zaehler/\sides*360,markierte Ecke/.try] at(\tikzlastnode.corner \ecke) {$#1_{\subscr}$} }}}, markiere Winkel/.style 2 args={ append after command={ [/utils/exec=% \pgfmathtruncatemacro\sides{sidesofpolygon("\tikzlastnode")}% \let\tikzLastNode\tikzlastnode] \foreach \ecke[ count=\zaehler from 0, evaluate={ \subscr =int(mod(\sides-\zaehler,\sides)); \eckeDavor =int(\zaehler==0?\sides:\zaehler); \eckeDanach=int(mod(\ecke, \sides)+1);} ] in {1,...,\sides}{ coordinate (@mW@A) at (\tikzLastNode.corner \eckeDavor) coordinate (@mW@B) at (\tikzLastNode.corner \ecke) coordinate (@mW@C) at (\tikzLastNode.corner \eckeDanach) pic[draw, #1, pic text options={scale=.75}, pic text={$#2_{\subscr}$}] {angle=@mW@C--@mW@B--@mW@A} }}}, } \begin{document} \foreach \i in {3,...,11}{% \begin{tikzpicture}[markierte Ecke/.style={circle,inner sep=+0pt}] \node[draw, minimum size=3cm, regular polygon, regular polygon sides=\i, erste Ecke oben, markiere Ecken=v, markiere Winkel={fill=gray!50, angle eccentricity=2,angle radius=+.2cm}{\varphi}] at (0,0) (a) {}; \end{tikzpicture}} \end{document} Output
beantwortet 02 Jun '15, 20:25 Qrrbrbirlbel |
Zum Formatieren des Codes brauchst Du diesen nur markieren und dann den Button mit den Nullen und Einsen oberhalb anzuklicken. Alternativ kannst Du auch Deinen gesamten Code um 4 Leerzeichen einrücken. Inlinecode wird mit Backticks formatiert. Siehe auch diese Erklärung von Clemens.