Re: Help!!! Programma con Xy.pic

#85359
Up
0
Down
::


Come promesso ecco la soluzione, di cui onestamente non ne sono troppo soddisfatto. Probabilmente da qualche parte nel codice c’è qualche errore grossolano nei conti degli angoli (e mi sfugge da più di mezz’ora 🙁 ) per cui va presa per quello che è.

Certo, lato utente sarebbe decisamente più comoda perché in pratica con un comando e qualche opzione si fa tutto: `
\documentclass[tikz,border=10pt]{standalone}
\usepackage{tikz}

\pgfkeys{/tikz/.cd,
num vertex/.initial=10,
num vertex/.get=\vertices,
num vertex/.store in=\vertices,
shift angle/.initial=0,
shift angle/.get=\shiftangle,
shift angle/.store in=\shiftangle,
circle radius/.initial=10mm,
circle radius/.get=\circleradius,
circle radius/.store in=\circleradius,
label font/.initial=\small,
label font/.get=\labfont,
label font/.store in=\labfont,
}

\tikzset{show vertex/.style={
draw,
circle,
fill = black,
minimum size = 0.8mm,
inner sep = 0pt,
outer sep=0pt
}
}

\newcommand{\polygon}[1]{
\pgfmathtruncatemacro\numvminusone{\vertices-1}
\foreach \x in {0, …, \numvminusone} {
\pgfmathtruncatemacro{\angle}{\shiftangle + 360 / \vertices * \x}
\coordinate (p\x) at (\angle:\circleradius);
}
\foreach \x[count=\xi from 0] in {#1} {\global\let\maxnumitems\xi}

\pgfmathtruncatemacro\endangle{360+\shiftangle}
\foreach \x[count=\xi from 0] in {#1} {
\pgfmathtruncatemacro{\angle}{\shiftangle + 360 / \vertices * \xi}
\pgfmathtruncatemacro{\next}{mod(\xi-1, \numvminusone)}
\ifnum\xi>0
\draw (p\xi) — (p\next);
\fi
\ifnum\xi=\maxnumitems
\draw[dashed] (p\xi) arc(\angle:\endangle:\circleradius);
\fi
\node[show vertex,] at (p\xi){};
\coordinate[label={[font=\labfont]\angle:${[\x]}$}](x\xi) at (p\xi);
}
}

\begin{document}

\begin{tikzpicture}[num vertex=13,shift angle=-45]
\polygon{n-2,n-1,0,1,2,3,4,5}
\end{tikzpicture}

\begin{tikzpicture}[label font=\scriptsize,num vertex=7,shift angle=114]
\polygon{k+n-3,k+n-2,k+n-1,k+n,k+n+1,k+n+2,k+n+3}
% k+n è il 4 elemento -> p3
\draw(p3)
–++(-1,0) node[show vertex,label={[font=\labfont]below:${[k-1]}$}]{}
–++(-1,0) node[show vertex,label={[font=\labfont]below:${[k-2]}$}] (lownode){}
;
\draw[dashed](lownode)–++(-1.25,0)coordinate (lownode2);
\draw(lownode2) node[show vertex,label={[font=\labfont]below:${[2]}$}]{}
–++(-1,0) node[show vertex,label={[font=\labfont]below:${[1]}$}]{}
–++(-1,0) node[show vertex,label={[font=\labfont]below:${[0]}$}] (lownode){}
;
\end{tikzpicture}
\end{document}
` Il risultato:

[attachment=692]Senzanome.png[/attachment]

Ciao
Claudio

Attachments:
You must be logged in to view attached files.

Go to top