- Questo topic ha 15 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 8 mesi fa da
Golden Boy.
-
CreatoreTopic
-
19 Dicembre 2014 alle 14:16 #99256::
Salve a tutti. Vorrei creare degli esagoni colorati, magari da affiancare.
L’idea sarebbe di creare un esagono e affiancarlo ad un altro, partendo dal basso, quindi ramificando verso l’altro. Preferibilmente attaccati (ma credo che si possa dare qualche millimetro di separazione).
Ogni esagono dovrà essere colorato all’interno e si dovrà inserire una parola (o più parole) e / o un’immagine / iconavi posto un effetto che vorrei ottenere
`
http://i60.tinypic.com/2ylwsrb.png
`Ovviamente non considerate nè i triangolini, nè le scritte all’interno.
Mi piacerebbe fossero esagoni vettoriali (per non sgranare in caso di zoom del documento pdf).Vorrei evitare tikz , se possibile 🙂
-
CreatoreTopic
-
AutoreRisposte
-
-
20 Dicembre 2014 alle 9:22 #99257::
golden_boy” post=98746Salve a tutti. Vorrei creare degli esagoni colorati, magari da affiancare.
L’idea sarebbe di creare un esagono e affiancarlo ad un altro, partendo dal basso, quindi ramificando verso l’altro. Preferibilmente attaccati (ma credo che si possa dare qualche millimetro di separazione).
Ogni esagono dovrà essere colorato all’interno e si dovrà inserire una parola (o più parole) e / o un’immagine / iconavi posto un effetto che vorrei ottenere
`
http://i60.tinypic.com/2ylwsrb.png
`Ovviamente non considerate nè i triangolini, nè le scritte all’interno.
Mi piacerebbe fossero esagoni vettoriali (per non sgranare in caso di zoom del documento pdf).Vorrei evitare tikz , se possibile 🙂
Puoi dare un’occhiata qui.
Ciao
Claudio
-
20 Dicembre 2014 alle 12:13 #99258::
Ho letto il post e fatto varie prove, ma non è spiegato come:
– iniziare con un solo esagono e aggiungerne di volta in volta (e anche lavorare sul codice non è per niente facile. a me sembra che crei esagoni per file orizzontali e / o verticali, non uno ad uno)
– colorare
– inserire del testoA mio avviso risulterebbe molto farraginoso, anche se, indubbiamente, col tempo l’effetto sarebbe quello desiderato, ma mi sembra ci voglia troppo tempo. Non che voglia fare tutto in fretta, questa è solo una constatazione di fatto. Di sicuro ci lavorerò ancora sopra.
Intanto ho provato questo codice
`
\documentclass{article}\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{shapes.misc}\begin{document}
\vspace{40pt}
\begin{tikzpicture}
\node[regular polygon, regular polygon sides=6, minimum width=2.5cm,draw,label=center:testo interno]
(reg1) at (0,0){};
\node[regular polygon, regular polygon sides=6, minimum width=2.5cm,draw,label=center:testo interno]
(reg1) at (2,0.9){};
\end{tikzpicture}\end{document}
`il (0,0) e (2,0.9) sono le coordinate degli esagoni, per avvicinarli, ma più di questo non sono riuscito a fare in quanto basta modificare questi valori e gli esagoni risultano tutti fuori posto
-
20 Dicembre 2014 alle 12:33 #99259
-
20 Dicembre 2014 alle 12:47 #99260::
golden_boy” post=98755[…] A mio avviso risulterebbe molto farraginoso, anche se, indubbiamente, col tempo l’effetto sarebbe quello desiderato, ma mi sembra ci voglia troppo tempo. Non che voglia fare tutto in fretta, questa è solo una constatazione di fatto. Di sicuro ci lavorerò ancora sopra.[…]
Se non vuoi usare TikZ, puoi usare un programma esterno per grafica vettoriale, tipo Inkscape per intenderci.
La soluzione prospettata con TikZ è probailmente macchinosa, almeno all’inizio, ma dipende come al solito dal tempo che hai a disposizione o vuoi dedicare alla preparazione di figure di alta qualità.Lorenzo
-
20 Dicembre 2014 alle 13:08 #99261::
robitex” post=98756Secondo me disegnare gli esagoni non è un progetto adatto ad iniziare con la grafica in TeX.
Che sia tikz metspost o pstricks inizia da cose di base.
Fatto questo non avrai l’idea di scartare tikz come hai messo nel primo msg.
R.proverò magari fuori da latex come inizio allora 🙂
-
20 Dicembre 2014 alle 15:47 #99262::
Ho provato a “pasticciare” un po’ con il tuo codice 😀 Cercherò di spiegarti cosa ho utilizzato per introdurti all’utilizzo di TiKz.
`
\begin{tikzpicture}
\def\polyside{1.25cm}
\pgfmathsetmacro\polyrad{sqrt(\polyside^2-(\polyside/2)^2)}
\edef\polyrad{\polyrad cm}
\newcommand\esagono[2][]{\node[#1,regular polygon, regular polygon sides=6, minimum width=2*\polyside,draw,label=center:testo interno] (reg1) at (#2){};
\draw[fill](reg1) ++ (0,\polyrad*.4) — ++ (.25cm,0) — ++ (120:.5cm) — ++ (240:.5cm) — cycle;
\draw[fill](reg1) ++ (0,-\polyrad*.4) — ++ (.25cm,0) — ++ (-120:.5cm) — ++ (-240:.5cm) — cycle;}
\foreach\x in {0,…,4}{
\foreach\y in {0,…,4}{\esagono[yshift=2*\y*\polyrad]{30:2*\x*\polyrad}}}
\end{tikzpicture}
`
Innanzitutto ho definito [tt]\polyside[/tt] che rappresenta il lato del poligono (nel nostro caso un esagono). In tal modo puoi modificare direttamente il suo valore senza doverlo sostituire in tutto il documento. Faccio calcolare poi a TiKz la distanza tra il centro del poligono e il centro del lato e lo memorizzo come [tt]\polyrad[/tt] (il giochetto con la primitiva [tt]\edef[/tt] lo fatto per aggiungere [tt]cm[/tt] alla macro).Fatto ciò definisco una nuova macro con due argomenti, uno facoltativo e uno obbligatorio: l’argomento facoltativo sono le opzioni che eventualmente puoi passare al nodo, mentre quello obbligatorio sono le sue coordinate. Il comando prevede prima la creazione di un nodo di nome [tt]reg1[/tt] con la forma esagonale come lo hai impostato tu e poi, partendo dal suo centro (la coordinata [tt]reg1[/tt] corrisponde con il centro del nodo se non indicato diversamente) disegna i due triangoli, riempendoli con l’opzione [tt]fill[/tt]. In fine i comandi [tt]\foreach[/tt] permettono di attuare dei cicli.
Spero che la spiegazione sia sufficientemente chiara. 😀
-
20 Dicembre 2014 alle 20:32 #99263
-
21 Dicembre 2014 alle 9:39 #99264::
Faccio una piccola correzione al mio stesso codice. 😀 Nel preambolo aggiungi
`
\newlength{\polyside}
\newlength{\polyrad}
\newcommand\esagono[2][]{\node[#1,regular polygon, regular polygon sides=6, minimum width=2*\polyside,draw,label=center:testo interno] (reg1) at (#2){};
\draw[fill](reg1) ++ (0,\polyrad*.4) — ++ (.25cm,0) — ++ (120:.5cm) — ++ (240:.5cm) — cycle;
\draw[fill](reg1) ++ (0,-\polyrad*.4) — ++ (.25cm,0) — ++ (-120:.5cm) — ++ (-240:.5cm) — cycle;}
`
mentre il tuo codice diventa
`
\begin{tikzpicture}
\setlength{\polyside}{1.5cm}
\pgfmathsetlength\polyrad{sqrt(\polyside^2-(\polyside/2)^2)}
\foreach\x in {0,…,4}{
\foreach\y in {0,…,4}{\esagono[yshift=2*\y*\polyrad]{30:2*\x*\polyrad}}}
\end{tikzpicture}
`
In questo modo non hai problemi legati alle dimensioni e puoi tranquillamente modificare il lato dell’esagono cambiando il valore di [tt]\polyside[/tt]. Rispetto a prima uso delle lunghezze, definite con il comando [tt]\newlength[/tt] nel preambolo.
-
21 Dicembre 2014 alle 11:36 #99265::
ok, ora funziona. grazie mille!unica cosa che mi sfugge: come faccio a disegnarne ad uno ad uno?? così da riempirne uno per volta??
perchè la mia idea è far corrispondere ad ogni esagono un argomento / una funzione. quindi devo farne uno ad uno perchè non so quanti ne farò e come li sistemerò 😀
-
21 Dicembre 2014 alle 12:49 #99266::
Semplice: utilizzi un comando [tt]\esagono[/tt] per volta, invece di impiegare [tt]\foreach[/tt].
`
\begin{tikzpicture}
\esagono[opzioni]{}
\esagono{}
….
\end{tikzpicture}
`
Se devi aggiungere del testo all’esagono o cambiarlo basta che utilizzi le opzioni del comando e gli passi [tt]label[/tt]. Devi solo cambiare questa riga nella definizione di [tt]\esagono[/tt]
`
\node[regular polygon, regular polygon sides=6, minimum width=2*\polyside,draw,#1] (reg1) at (#2){};
`
-
21 Dicembre 2014 alle 12:58 #99267
-
21 Dicembre 2014 alle 14:45 #99268::
`
\documentclass{article}\usepackage{tikz}
\usetikzlibrary{shapes.geometric,shapes.misc}\newlength{\polyside}
\newlength{\polyrad}
\newcommand\esagono[2][]{\node[regular polygon, regular polygon sides=6, minimum width=2*\polyside, draw, #1] (reg1) at (#2){};
\draw[fill](reg1) ++ (0,\polyrad*.4) — ++ (.25cm,0) — ++ (120:.5cm) — ++ (240:.5cm) — cycle;
\draw[fill](reg1) ++ (0,-\polyrad*.4) — ++ (.25cm,0) — ++ (-120:.5cm) — ++ (-240:.5cm) — cycle;}\begin{document}
% un esagono
\begin{tikzpicture}
\setlength{\polyside}{1.5cm}
\esagono[label=center:primo esagono]{0,0}
\end{tikzpicture}%due esagoni
\begin{tikzpicture}
\setlength{\polyside}{1.5cm}
\esagono[label=center:primo esagono]{0,0}
\esagono[label=center:secondo esagono]{30:\polyrad+.5cm}
\end{tikzpicture}
\end{document}
`
Per ulteriori personalizzazioni, ti consiglio di leggere una guida per TiKz (o consultare il voluminoso manuale). Qualche guida la trovi nella sezione documentazione del sito 😉
-
21 Dicembre 2014 alle 15:08 #99269::
ho provato a usare questo codice, adattato alle mie esigenze: purtroppo l’esagono B si riesce a mettere solo al lato che si vede compilando.
se metto l’esagono C, non sono non posso collocarlo dove voglio, ma viene ridotto di dimensione … strano`
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}\begin{document}
\begin{tikzpicture}
\begin{scope}
[
every node/.style={anchor=west,
regular polygon,
regular polygon sides=6,
draw,
minimum width=2cm,
outer sep=0},
transform shape
]\node (A) {Testo A};
\node (B) at (A.corner 1) {Testo B};
\node (C) at (B.corner 4) {C};
% \node (D) at (A.corner 5) {DECF};
% \node (E) at (D.corner 5) {E};\end{scope}
\end{tikzpicture}\end{document}
`
-
21 Dicembre 2014 alle 15:22 #99270::
`
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}\begin{document}
\begin{tikzpicture}
\begin{scope}
[
every node/.style={
regular polygon,
regular polygon sides=6,
draw,
minimum width=2.5cm,
outer sep=0},
]\node (A) {Testo A};
\node (B) at (A.corner 1) [anchor=corner 3] {Testo B};
\node[anchor=corner 3] (C) at (B.corner 5) {C};
\node (D) at (A.corner 5)[anchor=corner 2] {DECF};
\node[anchor=corner 2] (E) at (D.corner 5) {E};
\end{scope}
\end{tikzpicture}
\end{document}
`
Non è C ad essere troppo piccolo: sono A e B che si sono allargati. 😀 Ricorda che la chiave [tt]minimum width[/tt] imposta la dimensione minima: se il testo del nodo è troppo largo, si espande per adattarsi. Togli [tt]anchor=west[/tt] dalle impostazioni di [tt]every node[/tt] e imposta l’ancora per ogni singolo nodo.
-
21 Dicembre 2014 alle 15:27 #99271
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.
