Grafica Vettoriale Formati vettoriali e PostScript
Introduzione La grafica vettoriale è una tecnica utilizzata in computer grafica per descrivere un'immagine. Un immagine è descritta mediante un insieme di primitive geometriche che definiscono punti, linee, curve e poligoni ai quali possono essere attribuiti colori e anche sfumature. Le componenti principali della grafica vettoriale sono: Linee Curve Aree Le varie parti dell immagine sono separabili
Elementi di base Le aree chiuse sono definite da: la forma dell'area, data da un insieme di punti e da parametri che regolano la curvatura delle linee fra questi punti il tipo di linea o bordo, dato da una forma del pennello, un colore, parametri che regolano in che modo disegnare gli angoli il tipo di riempimento, per esempio un colore piano, un motivo, una sfumatura, e i relativi parametri I punti geometrici sono dati da coordinate in un piano cartesiano (x,y) mentre i colori sono un punto nello spazio dei colori (r,g,b)*.
Elementi di base Solitamente, di ogni elemento si possono definire separatamente attributi del bordo (linea) attributi del riempimento(area) Attributi linee Stile Colore Larghezza Pennello Forma alle estremità Disegno ai vertici Attributi delle aree Riempimento e le sue varie combinazioni
Definizione di curve Per definire delle curve vengono utilizzate delle curve reali (in senso matematico) e al momento del disegno, il motore di rendering calcola le equazioni e disegna la curva corrispondente. Esistono molte equazioni che definiscono curve, fra le principali: spline, curve di Bezier. Entrambi si basano sul concetto di punti di controllo e manipolati opportunamente si può regolare interattivamente la forma della curva.
Vettoriale vs Raster Vantaggi Possibilità di esprimere i dati in una forma comprensibile ad un essere umano possibilità di esprimere i dati in un formato che occupi meno spazio possibilità di ingrandire l'immagine arbitrariamente, senza che si verifichi una perdita di risoluzione Svantaggi Realizzazione non intuitiva dell immagine Molte risorse richieste per trattare l immagine Le risorse richieste non sono definibili a priori
Qualità dell'immagine La grafica vettoriale, essendo definita attraverso equazioni matematiche, è indipendente dalla risoluzione, mentre la grafica raster, se viene ingrandita o visualizzata su un dispositivo dotato di una risoluzione maggiore di quella del monitor, perde di definizione.
Utilizzi La grafica vettoriale ha un notevole utilizzo nell'editoria, nell'architettura, nell'ingegneria e nella grafica realizzata al computer. Nei personal computer l'uso più evidente è la definizione dei font. Quasi tutti i font utilizzati dai personal computer vengono realizzati in modo vettoriale, per consentire all'utente di variare la dimensione dei caratteri senza perdita di definizione.
Formati grafici vettori PS (Postscript): Formato sviluppato da AdobeSystems originariamente per la stampa di documenti su stampanti laser, è utilizzato anche per la memorizzazione di immagini vettoriali. EPS (Encapsulated Postscript): Estensione del formato PostScript che consente di incapsulare immagini bitmap (raster). DCS (Desktop Color Separation): Un caso speciale di EPS sviluppato originariamente da Quark per tenere separati i dati al alta risoluzione dall'anteprima a bassa risoluzione. PDF (Portable Data Format): Sviluppato da Adobe, è il formato più diffuso per condividere, indipendentemente dalla piattaforma, documenti di testi e immagini. PICT: Formato grafico sviluppato da Apple Computer per la piattaforma Macintosh in grado di memorizzare sia immagini vettoriali che raster.
PostScript PostScript è un linguaggio di programmazione specializzato per la computer grafica vettoriale Un file PostScript è un file di testo che contiene un programma che viene eseguito su un processore collegato con una stampante. Questo processore è detto RIP (Raster Image Processor) ed è composto di tre parti: un interprete, la Macchina di rendering e la Macchina di screening.
PostScript Un file PostScript (PS) è in realtà un file di testo puro, ed è dunque consultabile con un qualsiasi editor di testo. Per visualizzare il file Postscript si può utilizzare un qualunque programma di interpretazione di PostScript ad esempio Ghostview.
Impostazioni generali Quello che segue è l'esempio di una struttura possibile per un file PostScript articolato su più pagine %!PS-Adobe-2.0 %%Creator: nome_del_redattore_del_file %%DocumentPaperSizes: formato %%EndComments [%%BeginProlog prologo %%EndProlog] %%Page: numero_mostrato pagina_reale istruzioni_ps showpage [%%Page: numero_mostrato pagina_reale istruzioni_ps showpage]... %%Trailer %%EOF
Piano di lavoro e unità di misura Il linguaggio PostScript è predisposto per fare riferimento a oggetti su un piano cartesiano ideale, in cui l'unità di misura normale è il punto tipografico, corrispondente secondo questo linguaggio a 1/72-esimo di pollice
Posizione corrente Per poter disegnare (tracciare curve, riempire delle aree e piazzare dei caratteri tipografici) bisogna indicare le coordinate di partenza. Le coordinate iniziali si modificano con l'istruzione moveto : x y moveto Dove il primo numero esprime la coordinata orizzontale (asse X), il secondo la coordinata verticale (asse Y)
Linee e aree Per le linee rette si possono usano le istruzioni lineto e rlineto, dove la prima rappresenta un movimento con coordinate di destinazione assolute, mentre la seconda fa riferimento a coordinate di destinazione relative a quelle di partenza. Il disegno non viene tracciato se alla fine non si aggiunge un'istruzione stroke, che non richiede argomenti 0 0 moveto 0 10 lineto stroke 0 10 moveto 20 10 lineto stroke 20 10 moveto 20 0 lineto stroke 20 0 moveto 0 0 lineto stroke
Linee e aree Le linee, oltre alla collocazione, hanno due caratteristiche importanti: lo spessore e il colore Si modifica lo spessore delle linee con l'istruzione setlinewidth e la colorazione (grigia) con l'istruzione setgray Si possono tracciare delle linee per disegnare un poligono, Per farlo occorre dichiarare un percorso, con l'istruzione newpath, che si conclude con closepath Il colore di riempimento si definisce con l'istruzione fill e il colore usato è quello già fissato con l'istruzione setgray
Linee e aree newpath 0 0 moveto 0 10 lineto 20 10 lineto 20 0 lineto closepath 0.5 setgray fill stroke newpath 0 0 moveto 0 10 lineto 20 10 lineto 20 0 lineto closepath 2 setlinewidth 0 setgray Stroke
Archi e curve Si può disegnare un arco o un cerchio completo con l'istruzione arc. In questo caso, non c'è bisogno di fare riferimento a una posizione corrente; anzi, è meglio eliminare tale informazione con un'istruzione stroke preventiva 100 150 50 0 90 arc (arco con centro x=100 y= 150, raggio di 50 punti, da 0 a 90 gradi)
Archi e curve Il disegno di una curva è invece più complicato: si usa l'istruzione curveto, ma oltre alle coordinate di destinazione, bisogna indicare la tangente del punto di inizio e del punto di destinazione x_tangente_inizio y_tangente_inizio x_tangente_fine y_tangente_fine x_fine_curva y_fine_curva curveto 0 50 moveto 200 100 0 0 200 50 curveto
Salvare e recuperare le impostazioni grafiche Le impostazioni grafiche, come quelle che si possono fissare con le istruzioni setlinewidth e setgray, possono essere salvate e recuperate da una pila apposita. Si utilizza l'istruzione gsave per salvare l'impostazione corrente e grestore per recuperare le ultime impostazioni salvate
Salvare e recuperare le impostazioni grafiche newpath 1 1 moveto 1 11 lineto 21 11 lineto 21 1 lineto closepath gsave 0.5 setgray fill Grestore 2 setlinewidth 0 setgray stroke
Spostamento del piano cartesiano e modifica della scala È possibile spostare la posizione della superficie prima di dare altre istruzioni di scrittura di qualunque tipo. Si tratta in particolare delle istruzioni translate e di rotate Oltre allo spostamento e alla rotazione del piano, si può modificare la scala, con l'istruzione scale 1 0.5 scale
Spostamento del piano cartesiano e modifica della scala 50 100 translate 50 50 moveto 100 50 lineto Stroke 50 50 translate 30 rotate 50 50 moveto 100 50 lineto Stroke
Ripetizione Un gruppo di istruzioni, racchiuso tra parentesi graffe, può essere ripetuto più volte con l'istruzione repeat n {istruzioni} repeat 36 {10 rotate 10 10 moveto 30 30 lineto} repeat Stroke
Testo Per poter scrivere sulla superficie del foglio, è necessario selezionare il tipo di carattere e la dimensione prima di tutto. /carattere findfont dimensione scalefont setfont La scrittura vera e propria avviene con l'istruzione show, con la quale si colloca il testo a partire dalle coordinate correnti, per cui si fa precedere normalmente da un'istruzione moveto (testo) show In pratica si usano le sequenze \( e \) per rappresentare le parentesi e per la barra obliqua inversa si usa la sequenza \\
Versioni di PostScript PostScript ha subito una evoluzione nel tempo. Sono infatti uscite 3 versioni, note rispettivamente coi nomi di PostScript Level 1, PostScript Level 2, PostScript Level 3. Ogni livello contiene delle funzioni nuove rispetto al livello precedente, per cui file salvati in PostScript Level 3 possono non essere completamente interpretabili da dispositivi o programmi confacenti a PostScript Level 1. Nel salvare i file PostScript è importante controllare la versione da utilizzare in funzione dell uso che si intende fare del documento, per garantire la compatibilità con dispositivi di stampa e programmi di elaborazione.