- Questo topic ha 10 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 4 mesi fa da
Marco87.
-
CreatoreTopic
-
9 Maggio 2012 alle 6:12 #73476::
Ciao a tutti,mi piacerebbe sapere se è possibile realizzare una spline con il pacchetto [tt]TikZ,[/tt] specificando i punti attraverso o vicino ai quali deve passare, così com’è possibile fare con un programma di disegno CAD. Ho cercato nella documentazione la parola “spline”, e ho trovato che essa compare solo 2 volte a pagina 584. Probabilmente non ho capito bene quello che viene detto, infatti ho fatto questo tentativo:
`\documentclass[a4paper,11pt,extrafontsizes,twoside,openright]{memoir}\usepackage{etextools}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{microtype}\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{calc}
\usetikzlibrary{intersections}
\usetikzlibrary{positioning}
\usetikzlibrary{shadows}
\usetikzlibrary{shapes}
\usetikzlibrary{through}\begin{document}
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\pgfpatharctomaxstepsize{\pgfpoint{3cm}{2cm}}
{\pgfpoint{5cm}{3cm}}
{\pgfpoint{5cm}{0cm}}
\pgfusepath{draw}
\color{blue}
\end{tikzpicture}\end{document}`
ma, anche se la compilazione non restituisce errori, non viene disegnata che la griglia. Quello che chiedo è impossibile?Grazie mille e buona giornata,
Marco.
-
CreatoreTopic
-
AutoreRisposte
-
-
9 Maggio 2012 alle 6:40 #73477::
La documentazione che appare nella pagina 584 relativa a \pgfarcmaxstepsize è errata nel senso che il titoletto riguarda \pgfarcmastepsize e il testo esemplifica questo stap size massimo usano erroneamente il comando \pgfpatharctoprecomputed.Le spline di Bézier si disegnano normalmente con \draw specificando il punto di partenza, i due punti di controllo e il punto di arrivo; ci vuole la parola chiave controls, per esempio [tt]\draw [thin] (0,0) .. controls (0,2) and (3,0) .. (3,2);[/tt].
Leggi anche i paragraif 71.3, 71.4 e seguenti per vedere come aggiungere archi o curve di vario genere baseta sulle spline di Bézier cubiche o anche quadratiche ad un path da disegnare.
-
9 Maggio 2012 alle 7:21 #73478::
Marco87″ post=72567Ciao a tutti,
mi piacerebbe sapere se è possibile realizzare una spline con il pacchetto [tt]TikZ,[/tt] specificando i punti attraverso o vicino ai quali deve passare, così com’è possibile fare con un programma di disegno CAD. Ho cercato nella documentazione la parola “spline”, e ho trovato che essa compare solo 2 volte a pagina 584. Probabilmente non ho capito bene quello che viene detto, infatti ho fatto questo tentativo:
`\documentclass[a4paper,11pt,extrafontsizes,twoside,openright]{memoir}\usepackage{etextools}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{microtype}\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{calc}
\usetikzlibrary{intersections}
\usetikzlibrary{positioning}
\usetikzlibrary{shadows}
\usetikzlibrary{shapes}
\usetikzlibrary{through}\begin{document}
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\pgfpatharctomaxstepsize{\pgfpoint{3cm}{2cm}}
{\pgfpoint{5cm}{3cm}}
{\pgfpoint{5cm}{0cm}}
\pgfusepath{draw}
\color{blue}
\end{tikzpicture}\end{document}`
ma, anche se la compilazione non restituisce errori, non viene disegnata che la griglia. Quello che chiedo è impossibile?Grazie mille e buona giornata,
Marco.Aggiungo a quanto detto da OldClaudio che sul manuale di Metafun si possono consultare molti esempi di disegni di curve.
Ciao ciao.
-
9 Maggio 2012 alle 7:44 #73479::
Ciao,grazie mille a tutti e due!
@Roberto: se ho capito bene il manuale di cui mi hai fornito il link si basa su ConTeXt. C’è modo di applicare i comandi indicati anche con pdfLaTeX?
@Claudio: purtroppo [tt]TikZ[/tt] da solo da la possibilità di tracciare spline al più quadratiche. Quindi se la curva è definita da molti punti, usando i comandi spiegati nel paragrafo 71.4, si disegna una curva la cui tangente è continua a tratti, e lo si percepisce anche a occhio. Per ovviare a questo, ho visto sul sito di Francesco Biccari che esiste un programma grafico che esporta in formato [tt]TikZ;[/tt] si chiama TpX. Ho visto che è possibile tracciare una spline come si farebbe in un programma CAD (senza limiti di lunghezza, e soprattutto di continuità della tangente alla curva). Dopo aver fatto questo, si può esportare come “PdfLaTeX preview source”. Verrà creato un file *.TpX che conterrà i punti da inserire nel path seguendo i comandi del paragrafo 71.4. È vero, tali punti vengono semplicemente elencati, e quindi vanno riorganizzati correttamente nei comandi esposti nel paragrafo 71.4, ma il risultato a mio avviso, ne vale la pena. Forse c’è un modo più elegante per fare ciò, ma per ora sono abbastanza soddisfatto della soluzione.Grazie ancora e ciao,
Marco.
-
9 Maggio 2012 alle 7:53 #73480::
Marco87″ post=72571 @Roberto: se ho capito bene il manuale di cui mi hai fornito il link si basa su ConTeXt. C’è modo di applicare i comandi indicati anche con pdfLaTeX?…
Puoi far girare codice Metapost in molti modi, anche quello standard con la compilazione standalone o con l’utilizzo del pacchetto gmp di Enrico.
Dipende da cosa ti serve.
R.
-
9 Maggio 2012 alle 8:04 #73481::
Marco87″ post=72571Purtroppo [tt]TikZ[/tt] da solo da la possibilità di tracciare spline al più quadratiche.
Non mi risulta: [tt]\draw (0,0) .. controls (0,2) and (3,0) .. (3,2);[/tt] traccia una curva di Bézier cubica. La differenza con Metapost è che questo programma può calcolare da sé punti di controllo “appropriati” quando si dà un’istruzione del tipo
`draw z1 .. z2 .. z3;`
Cosa che TikZ non è in grado di fare.Ciao
Enrico
-
9 Maggio 2012 alle 9:11 #73482::
Ciao Enrico,il manuale di [tt]TikZ,[/tt] a pagina 584, parla di “Bezier splines”. A pagina 581 dice: “This command works like [tt]\pgfpathcurveto,[/tt] only it uses a quadratic Bézier curve rather than a cubic one”. [Il corsivo è mio]. Quindi, in effetti, [tt]TikZ,[/tt] è in grado di tracciare solo un particolare tipo di spline, quelle di Bézier, quadratiche o cubiche. Sarebbe bello poter aver a disposizione un comando [tt]\spline[/tt] che generi una spline dell’ordine necessario a passare per tutti i punti forniti.
L’uso che solitamente faccio delle spline (finora con programmi di disegno CAD), è quello di tracciare curve nei disegni che altrimenti dovrei tracciare “a mano”. Per questo uso, posso anche fare a meno di un comando [tt]\spline[/tt] come quello che ho descritto prima. Per tracciare queste curve userò i comandi del paragrafo 71.4 della documentazione di [tt]TikZ,[/tt] passando per il programma TpX. L’alternativa sarebbe usare [tt]Metapost,[/tt] a quanto capisco, ma non so quanto mi convenga imparare un altro linguaggio per il disegno programmato semplicemente per disegnare le spline.
Grazie e ciao,
Marco.
-
9 Maggio 2012 alle 10:08 #73483::
Ciao,per essere più chiaro, mostro un disegno che ho fatto nella scorsa tesi, in cui ho usato una spline.

Il contorno della zona a sfondo grigio è una spline. È per questo tipo di disegni che ho aperto questa discussione. Se, vedendo il disegno, avete consigli da darmi, saranno ben accetti!Ciao,
Marco.
-
9 Maggio 2012 alle 14:22 #73484::
il manuale di TikZ, a pagina 584, parla di “Bezier splines”. A pagina 581 dice: “This command works like \pgfpathcurveto, only it uses a quadratic Bézier curve rather than a cubic one”. [Il corsivo è mio]. Quindi, in effetti, TikZ, è in grado di tracciare solo un particolare tipo di spline, quelle di Bézier, quadratiche o cubiche. Sarebbe bello poter aver a disposizione un comando \spline che generi una spline dell’ordine necessario a passare per tutti i punti forniti.
Questo che tu citi serve per descrivere il comando \pgfpathquadraticcurveto, che, come dice il nome, serve per disegnare una curva quadratica, non si riferisce alle cubiche di Bézier, che sono di default sia che si usi \draw con i due punti di controllo o che si usino comandi più sofisticati come quelli descritti a partire dal §71.3.
Le spline cubiche (come quelle quadratiche, per la verità) fanno parte del linguaggio PDF e quindi sarebbe poco credibile che Till Tantau, il creatore originale di pgf e di Tikz, le avesse omesse.
Se il programma TpX ti soddisfa, non vedo perché non lo dovresti usare. Mettere i punti guida nei punti giusti usando soli i numeri è difficile, a meno che non si scelgano direzioni particolarmente facili, come up, down, right, left, northeast, eccetera. Capisco quindi l’utilità di quel programma.
Tuttavia ho il sospetto che quando si usa \addplot ed è specificata la chiave smooth, pgfplot sia capace di calcolare da solo i punti guida.
Ora, il file che hai cercato di allegare, non è stato allegato, quindi non possiamo dirti niente in merito, ma ti garantisco che le spline cubiche e, usandone un maggior numero, anche le spline quadratiche danno dei risultati eccellenti purché i punti guida siano determinato adeguatamente; ricordati sempre certe figure che hai sott’occhio anche mentre leggi questo messaggio: i caratteri vettoriali che stai leggendo hanno il loro contorno descritto con spline cubiche se sono Type 1, oppure con spline quadratiche se sono TrueType (se sono OpenType possono venire descritti con spline cubiche oppure spline quadratiche). Ingrandisci pure al pagina quanto vuoi ma non riuscirai mai a vedere dove le spline sono raccordate.
-
9 Maggio 2012 alle 15:15 #73485::
Marco87″ post=72577Sarebbe bello poter aver a disposizione un comando [tt]\spline[/tt] che generi una spline dell’ordine necessario a passare per tutti i punti forniti.
Il problema dell’ordine necessario a coprire tutti i nodi nasce quando vuoi interpolare con un unico polinomio (interpolazione semplice). In quel caso, se i nodi sono n, è chiaro che l’ordine del polinomio può arrivare anche ad n-1. Quando usi il metodo delle funzioni spline, che ricade nei metodi di interpolazione composita, tu determini n-1 polinomi di grado a scelta in base alle tue esigenze, che hanno il compito di approssimare la funzione solo in uno degli n-1 intervalli tra due nodi consecutivi. Perciò una spline di qualsiasi ordine passa sempre per tutti i nodi. Chiaramente, più sali nell’ordine e più “regolare” è l’andamento della funzione approssimante, però in generale già con una famiglia di polinomi del terzo ordine hai ottimi risultati. Semmai il problema è quello di determinare i punti di controllo, nel caso delle curve di Bézier, o più in generale i coefficienti dei polinomi interpolanti.
Nel par. 19.8 a pag. 229 del manuale di TikZ è trattata l’opzione [tt]smooth[/tt] per il comando [tt]plot[/tt]. Puoi dare in pasto i nodi come coordinate in questo modo:
`\draw plot [smooth] coordinates {(x1,y1) (x2,y2) … (xn,yn)};`
Ciao
-
10 Maggio 2012 alle 5:00 #73486::
Ciao,per prima cosa ringrazio molto sia Claudio che Liverpool per le spiegazioni e le indicazioni che mi avete dato.
Il link all’immagine che volevo mostrarvi è questo.
Usando TpX il risultato ottenuto è davvero eccellente, mentre usando [tt]\draw plot [smooth] …,[/tt] anche se è più immediato scrivere il codice, il risultato non lo è altrettanto. Anche se per disegnare curve come quelle nell’immagine di cui ho messo il link credo che userò TpX, terrò comunque conto anche della seconda possibilità. (In TpX è possibile importare un’immagine bmp per poi “ricalcarla”, e questa possibilità per me è molto comoda).
Grazie mille e ciao,
Marco.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.