- Questo topic ha 9 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 1 mese fa da
cfiandra.
-
CreatoreTopic
-
11 Luglio 2013 alle 6:27 #87465::
Ciao vorrei riprodurre il disegno che allego usando tikz, ma non so come disegnare quegli insiemi, nè come prendere le tangenti!In realtà non mi interessa la forma specifica degli insiemi (purchè siano concavi), quindi avevo cercato ‘convex hull tikz’ in rete, ma non ho trovato nulla che facesse al caso mio.
Grazie.
edit: ma l’allegato si vede? l ho messo più volte
-
CreatoreTopic
-
AutoreRisposte
-
-
11 Luglio 2013 alle 6:44 #87466::
DirkPitt” post=86930Ciao vorrei riprodurre il disegno che allego usando tikz, ma non so come disegnare quegli insiemi, nè come prendere le tangenti!
In realtà non mi interessa la forma specifica degli insiemi (purchè siano concavi), quindi avevo cercato ‘convex hull tikz’ in rete, ma non ho trovato nulla che facesse al caso mio.
Grazie.
edit: ma l’allegato si vede? l ho messo più volte
No, l’allegato non si vede (c’è un limite alla dimensione del file da allegare, meglio se includi un’immagine) 🙂
Comunque, cercando su google [tt]tikz convex hull[/tt] escono tutti i risultati giusti; dico giusti perché se vuoi una froma concava e cerchi convex hull difficilmente otterrai quello che desideri. Per fare prima, i risultati con convex hull sono essenzialmente due:
1): padded boundary of convex hull
2): Hobby path realization in convex hull approach
La seconda versione disegna una forma “liquida” utilizzando l’algoritmo di Hobby per collegare i punti. Entrambe sono soluzioni automatiche: ti basta dare un elenco di nodi attorno a cui disegnare la forma.Ciao
Claudio
-
11 Luglio 2013 alle 6:57 #87467::
cfiandra” post=86933
Ciao vorrei riprodurre il disegno che allego usando tikz, ma non so come disegnare quegli insiemi, nè come prendere le tangenti!
In realtà non mi interessa la forma specifica degli insiemi (purchè siano concavi), quindi avevo cercato ‘convex hull tikz’ in rete, ma non ho trovato nulla che facesse al caso mio.
Grazie.
edit: ma l’allegato si vede? l ho messo più volte
No, l’allegato non si vede (c’è un limite alla dimensione del file da allegare, meglio se includi un’immagine) 🙂
Comunque, cercando su google [tt]tikz convex hull[/tt] escono tutti i risultati giusti; dico giusti perché se vuoi una froma concava e cerchi convex hull difficilmente otterrai quello che desideri. Per fare prima, i risultati con convex hull sono essenzialmente due:
1): padded boundary of convex hull
2): Hobby path realization in convex hull approach
La seconda versione disegna una forma “liquida” utilizzando l’algoritmo di Hobby per collegare i punti. Entrambe sono soluzioni automatiche: ti basta dare un elenco di nodi attorno a cui disegnare la forma.Ciao
ClaudioMa l’allegato è un immagine png da 30 Kb !
Comunque avevo visto quegli esempi, solo che io devo disegnare il “convex hull” di due insiemi (sarebbe il convex hull della loro unione). Senza immagine non riesco a spiegarmi meglio 🙁
-
11 Luglio 2013 alle 7:05 #87468::
DirkPitt” post=86934Ma l’allegato è un immagine png da 30 Kb !
Comunque avevo visto quegli esempi, solo che io devo disegnare il “convex hull” di due insiemi (sarebbe il convex hull della loro unione). Senza immagine non riesco a spiegarmi meglio 🙁Magari è il formato.. non hai detto quale sia. Comunque puoi sempre caricarla su Dropbox o imgur e condividere qui il link.
Ciao
Claudio
-
11 Luglio 2013 alle 7:15 #87469::
Il formato è png l’avevo scritto e non è possibile che non è accettato dal forum 🙂 Eccola! http://imgur.com/9dUrelp
-
12 Luglio 2013 alle 5:41 #87470::
DirkPitt” post=86936Il formato è png l’avevo scritto e non è possibile che non è accettato dal forum 🙂 Eccola! http://imgur.com/9dUrelp
Si, scusa, leggendo veloce non avevo notato il png. Sappi comunque, che recenti versioni di firefox non permettono di sfruttare la funzione allegati. Sono mesi che mi succede: a casa avevo risolto con Web Chrominium (avevo Ubuntu), ora che si è ripresentato mi arrengerò provando con Safari.
Tornando al problema, al momento posso dirti che algoritmo userei io.
1) piazzerei dei nodi, invisibili, sul piano in modo tale che sfruttando la versione Hobby-based le forme ottenute assomiglino a quelle dell’immagine.
Sorge un problema: è necessario poter piazzare dei marcatori sul segmento, altrimenti in seguito non potrai disegnare agevolmente i segmenti. Purtroppo, proprio recentemente Andrew mi ha detto che Hobby non era in grado di piazzare nodi mentre si definisce un segmento. Cosa non proprio vera, vedi http://chat.stackexchange.com/transcript/message/10275360#10275360. Serve un minimo di dimestichezza con le decorazioni.
2) sfruttando quello stile, inserirei dei nodi di tipo coordinate come opzioni dei segmenti in [tt]\hobbyconvexpath[/tt] (se si chiama così 😀 ): è necessario che questi nodi abbiano dei nomi univoci.
3) a questo punto si possono disegnare i segmenti di intersezione: poichè i marcatori sono univocamente definiti, potrai usare la sintassi semplice `\draw (A)–(B)` per collegare il punto A dell’insieme a sinistra con il punto B dell’insieme a destra.
Non è banale, ma si può fare 😉
Ciao
Claudio
-
12 Luglio 2013 alle 10:13 #87471::
cfiandra” post=86947
Il formato è png l’avevo scritto e non è possibile che non è accettato dal forum 🙂 Eccola! http://imgur.com/9dUrelp
Si, scusa, leggendo veloce non avevo notato il png. Sappi comunque, che recenti versioni di firefox non permettono di sfruttare la funzione allegati. Sono mesi che mi succede: a casa avevo risolto con Web Chrominium (avevo Ubuntu), ora che si è ripresentato mi arrengerò provando con Safari.
Tornando al problema, al momento posso dirti che algoritmo userei io.
1) piazzerei dei nodi, invisibili, sul piano in modo tale che sfruttando la versione Hobby-based le forme ottenute assomiglino a quelle dell’immagine.
Sorge un problema: è necessario poter piazzare dei marcatori sul segmento, altrimenti in seguito non potrai disegnare agevolmente i segmenti. Purtroppo, proprio recentemente Andrew mi ha detto che Hobby non era in grado di piazzare nodi mentre si definisce un segmento. Cosa non proprio vera, vedi http://chat.stackexchange.com/transcript/message/10275360#10275360. Serve un minimo di dimestichezza con le decorazioni.
2) sfruttando quello stile, inserirei dei nodi di tipo coordinate come opzioni dei segmenti in [tt]\hobbyconvexpath[/tt] (se si chiama così 😀 ): è necessario che questi nodi abbiano dei nomi univoci.
3) a questo punto si possono disegnare i segmenti di intersezione: poichè i marcatori sono univocamente definiti, potrai usare la sintassi semplice `\draw (A)–(B)` per collegare il punto A dell’insieme a sinistra con il punto B dell’insieme a destra.
Non è banale, ma si può fare 😉
Ciao
ClaudioGrazie per l’aiuto 🙂 Onestamente speravo fosse più semplice. Forse, a questo punto, mi conviene disegnare il bordo dell’insieme “attaccando” dei pezzi di funzioni note in modo che la curva risultante sia continua e chiusa, no? Se creo un paio di axis diciamo con dominio 0
-
13 Luglio 2013 alle 11:16 #87472::
DirkPitt” post=86949Grazie per l’aiuto 🙂 Onestamente speravo fosse più semplice. Forse, a questo punto, mi conviene disegnare il bordo dell’insieme “attaccando” dei pezzi di funzioni note in modo che la curva risultante sia continua e chiusa, no? Se creo un paio di axis diciamo con dominio 0
Secondo me quel sistema è addirittura più complicato del mio. Appena ho tempo approfondisco.
Ciao
Claudio
-
15 Luglio 2013 alle 16:47 #87473::
cfiandra” post=86963
Grazie per l’aiuto 🙂 Onestamente speravo fosse più semplice. Forse, a questo punto, mi conviene disegnare il bordo dell’insieme “attaccando” dei pezzi di funzioni note in modo che la curva risultante sia continua e chiusa, no? Se creo un paio di axis diciamo con dominio 0
Secondo me quel sistema è addirittura più complicato del mio. Appena ho tempo approfondisco.
Ciao
ClaudioAh ok grazie 🙂 Spero, però, che tu abbia già inteso che la mia è la voce dell’ignoranza in materia, quindi non l ho proposto perchè certo che fosse più facile 😀
Ciao!
-
29 Luglio 2013 alle 8:04 #87474::
DirkPitt” post=86996
[quote=”DirkPitt” post=86949]Grazie per l’aiuto 🙂 Onestamente speravo fosse più semplice. Forse, a questo punto, mi conviene disegnare il bordo dell’insieme “attaccando” dei pezzi di funzioni note in modo che la curva risultante sia continua e chiusa, no? Se creo un paio di axis diciamo con dominio 0
Secondo me quel sistema è addirittura più complicato del mio. Appena ho tempo approfondisco.
Ciao
ClaudioAh ok grazie 🙂 Spero, però, che tu abbia già inteso che la mia è la voce dell’ignoranza in materia, quindi non l ho proposto perchè certo che fosse più facile 😀
Ciao![/quote]
Perdona il ritardo per prima cosa 🙂Dunque, la soluzione che avevo in mente non è proprio perfetta; credo che sarebbe meglio posizionare i nodi come dicevo, ma poi tracciare a mano le curve come in Highlighting some nodes of a TikZ binomial tree.
Con hobby, invece, mi ero scordato che l’algoritmo automatico traccia dei control points a metà di ogni coppia di nodi e nel tuo caso non va sempre bene. Ecco un esempio di cosa avevo in mente: `
\documentclass[a4paper,12pt]{article}\usepackage{tikz}
\usetikzlibrary{calc,decorations.markings,hobby}% versione TeXLive 2013 compatibile 2012:
% http://tex.stackexchange.com/questions/121286/error-with-hobbyconvexpath\newcommand{\hobbyconvexpath}[2]{
[
create hobbyhullnodes/.code={
\global\edef\namelist{#1}
\foreach [count=\counter] \nodename in \namelist {
\global\edef\numberofnodes{\counter}
\node at (\nodename)
[draw=none,name=hobbyhullnode\counter] {};
}
\node at (hobbyhullnode\numberofnodes)
[name=hobbyhullnode0,draw=none] {};
\pgfmathtruncatemacro\lastnumber{\numberofnodes+1}
\node at (hobbyhullnode1)
[name=hobbyhullnode\lastnumber,draw=none] {};
},
create hobbyhullnodes
]
($(hobbyhullnode1)!#2!-90:(hobbyhullnode0)$)
\pgfextra{
\gdef\hullpath{}
\foreach [
evaluate=\currentnode as \previousnode using int(\currentnode-1),
evaluate=\currentnode as \nextnode using int(\currentnode+1)
] \currentnode in {1,…,\numberofnodes} {
\ifnum\currentnode=1\relax
\xdef\hullpath{([closed=true]$(hobbyhullnode\currentnode)!#2!180:(hobbyhullnode\previousnode)$)
..($(hobbyhullnode\nextnode)!0.5!(hobbyhullnode\currentnode)$)}
\else
\xdef\hullpath{\hullpath
..($(hobbyhullnode\currentnode)!#2!180:(hobbyhullnode\previousnode)$)
..($(hobbyhullnode\nextnode)!0.5!(hobbyhullnode\currentnode)$)}
\fi
\ifx\currentnode\numberofnodes
\else
\xdef\hullpath{\hullpath
..($(hobbyhullnode\nextnode)!#2!-90:(hobbyhullnode\currentnode)$)}
\fi
}
}
\hullpath
}\tikzset{insert node/.style args={#1 at #2}{
postaction=decorate,
decoration={
markings,
mark= at position #2
with
{
#1
}
}
}
}\begin{document}
\begin{tikzpicture}[use Hobby shortcut
]\draw[-stealth] (-5,0)–(5,0);
\draw[-stealth] (0,-5)–(0,5);% S2
\node (a) at (-0.75,-0.5) {};
\node (b) at (-4,-1) {};
\node (c) at (-4.75,1.5) {};
\node (d) at (-2.45,3) {};\draw[fill=gray!20,insert node={
\node[coordinate](first-a){};} at 0.23,
insert node={
\node[coordinate](first-b){};} at 0.68
]
\hobbyconvexpath{a,b,c,d}{12.5pt};% S1
\node (e) at (2,-3) {};
\node (f) at (1,1) {};
\node (g) at (2.5,1.5) {};
\node (h) at (4.25,0.5) {};\draw[fill=gray!20,insert node={
\node[coordinate](second-a){};} at 0.01,
insert node={
\node[draw](second-b){};} at 0.475,
insert node={
\node[coordinate](second-c){};} at 0.7,
insert node={
\node[coordinate](second-d){b};} at 0.95,
]
\hobbyconvexpath{e,f,g,h}{12.5pt};\draw(first-a)–(second-a);
\draw(first-b)–(second-b);
\draw(second-c)–(second-d);\end{tikzpicture}
\end{document}
` Quello che invece dovrebbe tornerti utile anche nel caso di definizione a mano del segmento è il comodissimo (o per lo meno io lo reputo tale) [tt]insert node[/tt].Ciao
Claudio
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.