Re: Un disegno con TikZ

#83234
Up
0
Down
::

Marco87″ post=82591Ciao Claudio,

avrei qualche domanda riguardo al tuo codice:

`\begin{tikzpicture}
\fill[blue!50!cyan] (2,0) circle(1.1cm);
\node[regular polygon, regular polygon sides=3, draw] (triangolo) at (2,0) {Risultati};
\node[green!70!black,above] at (triangolo.corner 1){Allenamento};
\node[green!70!black,below] at (triangolo.corner 2){Alimentazione};
\node[green!70!black,below] at (triangolo.corner 3){Riposo};
\end{tikzpicture}`

[ol]
[li]Il cerchio, nel tuo disegno, è tangente ai lati del triangolo. Ho provato a riprodurlo, e questo a me non avviene. Come mai?[/li]
[li]In questo codice, senza usare le chiavi, come posso soddisfare la richiesta di tangenza? Fissata questa, come posso decidere la lunghezza del lato del triangolo?[/li]
[li]Dove hai imparato a usare le chiavi di [tt]TikZ?[/tt] Semplicemente studiandoti la parte relativa sulla sua documentazione?[/li]
[/ol]

Grazie infinite e buona giornata,
Marco.

In effetti hai ragione, non c’è tangenza, ma per scoprirlo ho dovuto ingrandire di non poco l’immagine:

[attachment=613]marco.jpg[/attachment]

A dimensioni normali non ci si accorge del piccolo errore. Direi che il raggio giusto era [tt]1.105[/tt], quindi: `
\fill[blue!50!cyan] (2,0) circle(1.105cm);
` Fra le altre cose, si può anche scrivere: `
\fill[blue!50!cyan, radius=1.105cm] (2,0) circle ;
` Ora mi dirai: “Si, ma non ci sono soluzioni che non prevedano di andare a naso nel decidere le dimensioni?”. Premetto che io sono sempre propenso al “trial & error approach” in casi del genere perché anche se non producono il risulato perfetto, producono qualcosa di molto simile, senza andare ad imbarcarsi in soluzioni complicate. Infatti, se vuoi avere qualcosa di tangente devi poter calcolare come minimo l’ampiezza (orizzontale) del triangolo nel punto mediano (in termini verticali) dove c’è il testo interno. Non che non si possa fare, tu conosci il codice di Alain per fare calcoli di questo tipo (nel pacchetto smartdiagram ho creato qualcosa di simile senza però ricorrere ad fp, cerca [tt]\CalcHeight[/tt]), ma bisogna chiedersi quanto il procedimento complica il codice. Sicuramente non poco se vuoi una soluzione completamente automatica, in grado di disegnarti il triangolo con il testo e mettere il cerchio delle esatte dimensioni. Altrimenti, una soluzione semiautomatica segue la falsa riga del seguente pseudocodice: `
disegno il triangolo con il testo;
calcolo l'ampiezza x;
disegno il cerchio nella stessa coordinata del triangolo con ampiezza x;
` Questo però pressuppone che l’utente conosca quelle funzioni di calcolo e che sappia come reperire le ancore giuste del triangolo (o calcolarsele). Nota anche una cosa: non si può prescindere da questo tipo di calcolo basandosi solo, per esempio sul valore di [tt]minimum size[/tt] del triangolo perché chiaramente non tiene conto della dimensione effettiva del triangolo che sarà basata su: lunghezza testo+inner sep.

Per tutti questi motivi, secondo me, un utente che conosca bene le basi di TikZ fa decisamente prima con un paio di prove sul raggio. Se sei un utente esperto di TikZ hai altre soluzioni, tutte non banali:
1) creare una nuova shape triangolo equilatero con cerchio all’interno (forse sarebbe la migliore perché avresti in automatico tangenza senza calcoli, ma devi definirla bene);
2) usare una postaction/append after command per creare a partire da una delle ancore mediane del triangolo due archi, uno da 180 a 0 (o il contrario, da 0 a 180) e uno da 180 a 360 (vale sempre il contrario) diretti verso l’ancora opposta.

La 3), quella che ho usato io, è lasciare all’utente il compito di calcolarsi tutto con le chiavi: in automatico infatti appare il cerchio dentro il triangolo, ma il raggio di default è adattato per il testo fittizio [tt]text[/tt]. L’utente con la chiave [tt]raggio cerchio[/tt] farà un paio di prove per sistemarlo. Una 4), ipotetica (mi è venuta in mente ora), è fare un fit del triangolo con un nodo circle: potrebbe funzionare.

Per quanto riguarda l’uso delle chiavi, no la documentazione non mi è bastata. Anzi, non sono partito proprio da lì perché è tutta teoria, ma dal codice di TikZ-uml dove ho potuto vedere in pratica il funzionamento. In quel periodo avevo applicato quel poco che sapevo alla prima bozza di Sa-TikZ con diversi errori: mi sono letto con calma la documentazione e ho guardato qualche esempio su TeX.SX (vedi il tag pgfkeys), ma devo dire che al momento so solo applicare 4 o 5 cose. La potenzialità è molto più grande…

Ciao
Claudio

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

Go to top