-->

Guida a JGraph, programma per tracciare grafici e diagrammi strutturati: Curve di Bézier.

Si possono generare delle linee curve con Jgraph se si interpretano alcuni dei punti indicati come punti di controllo per una curva di Bézier.

Nella sezione 6.13 vengono indicati dei possibili spunti di approfondimento sulla questione, ma si consideri che per definire una curva di Bézier con Jgraph servono almeno quattro punti, e in generale è possibile tracciare una curva di Bézier mediante 3*n+1 punti di controllo, di cui 2*n di controllo e i rimanenti n+1 di passaggio della curva.

Il listato 6.22 e la figura 6.23 fornuscono un esempio in cui viene disegnato un pallone da football americano (molto stilizzato a dire il vero) mediante curve di Bézier.
  1. Una curva di Bézier è una particolare curva parametrica, che ha grande applicazione nella computer grafica. Un metodo numericamente stabile per calcolare le curve di Bézier è l'algoritmo di de Casteljau. Wikipedia
Listato 6.22. Jgraph: curve di Bézier.
newgraph 
xaxis min 0 max 10 nodraw
yaxis min 0 max 10 nodraw

(* Draw the outline of the football *)
newline bezier poly pcfill .543 .270 .074 pts
  0 5   3 10   7 10    10 5
        7 0    3 0     0 5

(* Draw the main thread *)

newline bezier linethickness 4 gray 1 pts
  3 7 4.5 8 5.5 8 7 7

(* Draw the crossthreads *)

copycurve nobezier pts 3.5 6.7 3.3 7.5
copycurve pts 6.5 6.7 6.7 7.5
copycurve pts 4.2 7.1 4.1 7.9
copycurve pts 5.8 7.1 5.9 7.9
copycurve pts 5 7.3  5 8.1
Figura 6.23.
f-football-jgr
Altre caratteristiche.
Accenniamo ad alcune ulteriori interessanti caratteristiche del programma Jgraph, rinviando il lettore interessato alla sezione 6.13 per eventuali approfondimenti.

Dall'interno di un sorgente Jgraph è possibile invocare un comando della shell o un programma esterno scrivendo shell : comando; l'output generato viene contestualmente incluso nel sorgente.
Ovviamente si tratta di una caratteristica estremamente interessante e potente, poiché permette di utilizzare strumenti come Perl, Awk e simili per il tracciamento di grafici di funzione, estrazione e manipolazione di dati, ecc.; parallelamente si tratta di una caratteristica potenzialmente pericolosa, in quanto Jgraph non effettua nessun controllo sul comando che viene eseguito, aprendo così il varco a possibili cavalli di Troia.
Prestare dunque un'adeguata cautela!
Un'altra caratteristica interessante di Jgraph è quella di poter utilizzare una qualunque immagine in formato EPS come indicatore, utilizzando l'attributo di curva eps.

Infine, si noti che è possibile tracciare più di un grafico nella stessa immagine mediante un ulteriore newgraph oppure mediante copygraph: in quest'ultimo caso il grafico successivo eredita gli assi dal precedente. Il posizionamento relativo dei vari grafici è gestibile mediante gli attributi di grafico x_translate e y_translate. È altresì possibile posizionare i vari grafici su più pagine, mediante la parola chiave newpage. Il listato 6.24 e la figura 6.25 presentano un esempio di utilizzo di copygraph.

Listato 6.24. Jgraph: grafici multipli.
newgraph
xaxis min 0 max 10 size 1 label fontsize 16 font Times-Italic : Graph 1
yaxis min 0 max 10 size 1

newcurve marktype box linetype solid pts 1 10 2 8 5 5 8 3 10 2

copygraph 
x_translate 2
xaxis label : Graph 2
newcurve marktype box linetype solid pts 10 10 8 8 5 5 8 3 10 2
Figura 6.25.
f-copygraph-jgr
Utilizzo programmatico.
Il punto di forza dei programmi non interattivi è quello di poter essere facilmente utilizzati come anelli di una catena di strumenti o processi; la connessione delle varie parti può essere gestita semplicemente mediante generiche pipeline, o addirittura mediante specifici programmi «wrapper», progettati per uno scopo preciso, che costruiscano programmaticamente l'input da far elaborare.

«njgraph.pl»
Un esempio interessante è il programma njgraph.pl di Neil Spring. Si tratta di un piccolo sorgente in Perl che in pratica realizza una specie di programma frontale per Jgraph: esso legge dallostandard input una singola serie di dati da rappresentare graficamente, e dopo averli opportunamente passati a Jgraph per l'elaborazione invoca GV, a meno che lo standard output non venga rediretto.

Il programma njgraph.pl riconosce altresì gli attributi marktypelinetype e color (e relativi valori) facoltativamente presenti sulla riga di comando, e li posiziona opportunamente all'interno del sorgente Jgraph prima dell'elaborazione.

La figura 6.26 illustra qualche esempio di invocazione del programma njgraph.pl, mentre la figura 6.27 ne illustra l'output.

Figura 6.26. Invocazione del programma njgraph.pl.
njgraph.pl[Invio]
automatically invoking gv; redirect if you want something else
1 7 2 3 3 8 4 6 5 3 6 2 7 4 8 7 9 5 10 7[Invio]
[Ctrl d]
[q]
njgraph.pl marktype box linetype dashed color 1 0 0[Invio]
automatically invoking gv; redirect if you want something else
1 7 2 3 3 8 4 6 5 3 6 2 7 4 8 7 9 5 10 7[Invio]
[Ctrl d]
[q]
Figura 6.27. Output del programma njgraph.pl.
njgraph-output-1 njgraph-output-2


Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:

reeder

Nessun commento:

Posta un commento

Pages (26)1234567 Next

Random Posts

  • Come pulire Debian: Debfoster e Deborphan.
    12.01.2014 - 0 Comments
    Debfoster. # apt-get install debfoster Lo scopo di questo programma è di mostrare i pacchetti che non sono installati come dipendenze. Una volta individuato uno di questi pacchetti, verrà mostrata una lista…
  • Come usare il Launcher per avviare applicazioni in Ubuntu 13.04 “Raring Ringtail”.
    29.04.2013 - 0 Comments
    Il Launcher è uno dei componenti chiave del desktop Unity: fornisce accesso rapido alle applicazioni, agli spazi di lavoro, ai dispositivi rimovibili e al cestino. Quando si accede all'ambiente grafico,…
  • Teeworlds, sparatutto 2D multi-giocatore in stile cartoon, in passato conosciuto come Teewars.
    03.04.2012 - 0 Comments
    Teeworlds, in passato conosciuto come Teewars, è uno sparatutto 2D multi-giocatore in stile cartoon, completamente opensource, con controlli da tastiera e mouse ispirati ai quelli classici tutt'ora …
  • F Virtual Window Manager si è evoluto in un ambiente potente ed altamente configurabile per sistemi UNIX e Unix-like.
    28.01.2011 - 0 Comments
    F Virtual Window Manager è un window manager per X Window system. Originariamente un derivato di twm, FVWM si è evoluto in un ambiente potente ed altamente configurabile per sistemi UNIX e Unix-like. È un…
  • Kdar, ottimo frontend per il backup/restore in Kubuntu rilascia la versione 2.0.8
    08.01.2008 - 0 Comments
    Kdar è un ottimo strumento per la sincronizzazione di cartelle e quindi in un certo senso per la creazione di backup differenziali.E’uno strumento meno sofisticato di kdiff3 ma fa bene il suo lavoro.In…

I miei preferiti in Instagram

Archivio