Category Archives: Senza categoria

Functions

Basics > Structure > Functions

Immagini

PImage

Tipo di dato per immagazzinare immagini. Le immagini possono essere visualizzate nello spazio 2D e 3D.
Prima di essere utilizzata l’immagine deve essere caricata con la funzione loadImage().
L’oggetto PImage è dotato di proprietà per la larghezza, width, e l’altezza, height, dell’immagine, così come di un vettore, pixels[], che contiene i valori di ogni pixel dell’immagine.

loadImage()

Carica un’immagine in una variabile di tipo PImage.
Sono utilizzabili le immagini nei formati .gif.jpg e .tga.
Per caricare correttamente i file .tga essi devono essere di tipo 32-bit uncompressed.
Le immagini, per essere caricate correttamente, vanno collocate nella cartella data dello sketch corrente.
Per aggiungere un’immagine al progetto si utilizza Add file... dal menu Sketch.
Nella maggior parte dei casi conviene caricare tutte le immagini in setup() per precaricarle con l’inizio dei programmi. Caricare le immagini in draw() ridurrebbe notevolmente la velocità del programma.
Se un’immagine non è stata caricata correttamente, sarà restituito il valore null e un messaggio di errore apparirà a console.
Il messaggio di errore non blocca il programma ma il valore nullo potrà causare una NullPointerException se il codice non controlla se il valore di ritorno è nullo.

image()

Visualizza immagini sullo schermo.
Il colore di un’immagine può essere modificato con la funzione tint() e se si tratta di una GIF con trasparenza, essa manterrà la sua trasparenza.
Il parametro img specifica quale immagine visualizzare e i parametri x e y definiscono il punto dove visualizzare il suo angolo in alto a sinistra.
L’immagine è visualizzata nelle sue dimensione originale a meno che con i parametri width e height venga specificata una diversa dimensione.

Sintassi:

imageMode()

Modifica il punto dove visualizzare l’immagine.
Il valore predefinito è imageMode(CORNER), che specifica che il posizionamento ha come riferimento l’angolo in alto a sinistra e utilizza il quarto e quinto parametro di image() per impostare la larghezza e l’altezza dell’immagine.
La sintassi imageMode(CORNERS) utilizza il secondo e il terzo parametro per impostare un angolo dell’immagine e il quarto e il quinto per impostare l’angolo opposto.
I parametri devono essere scritti TUTTI IN MAIUSCOLO perché Processing è un linguaggio case sensitive.

tint()

Imposta il valore di riempimento utilizzato per la visualizzazione delle immagini.
Le immagini possono essere colorate con colori specifici oppure rese trasparenti impostando il parametro alpha.

Sintassi:

noTint()

Rimuove il valore attuale di riempimento e ritorna alla visualizzazione delle immagini con le tonalità originali.

Modalità di rendering

Attualmente Processing ha quattro modalità di rendering.

I programmi scritti con Processing possono essere renderizzati utilizzando

  1. le librerie di disegno 2D di Java
  2. un motore 3D personalizzato detto P3D
  3. attraverso OpenGL utilizzando l’interfaccia JOGL
  4. un motore 2D personalizzato detto P2D.

La modalità di rendering è specificata attraverso la funzione size().

È stato fatto un grande sforzo per far apparire il linguaggio di Processing uniforme tra le diverse modalità di rendering, ma ci sono ancora delle differenze.


Di più su size()


La funzione size() imposta, tra le altre cose, anche le variabili globali width e height.
Se hai degli oggetti la cui dimensione dipende dallo schermo utilizza sempre le variabili width e height invece dei numeri.
Questo ti eviterà problemi quando cambierai, tramite size(), le dimensioni della finestra.

Negli esempi precedenti la funzione size() specifica soltanto l’ampiezza e l’altezza della finestra.
Un parametro opzionale della funzione size() specifica come viene realizzata la grafica.

Un renderermotore di rendering, specifica come sono implementate le API di Processing per ogni particolare funzione di output (che sia lo schermo, lo schermo attraverso una scheda video avanzata, un file PDF).
In Processing sono inclusi diversi renderer e ciascuno ha la sue specificità. Scendendo di più nei dettagli ecco una descrizione delle modalità di disegno che si possono usare con Processing.


JAVA2D


Il render Java2D è utilizzato di default, quindi l’istruzione è equivalente a

Il renderer Java2D fa un lavoro eccellente con la grafica vettoriale 2D di alta qualità, a discapito della velocità. In particolare, il trattamento dei pixel è più lento rispetto a P2D e P3D.


P2D


Il renderer 2D di Processing è rivolto alla grafica semplice e alle operazioni veloci sui pixel. È privo di di raffinatezze comestrokeCap() oppure strokeJoin() ma rimedia a questo quando c’è la necessità di disegnare migliaia di forme semplici o di manipolare direttamente i pixel di un’immagine o di un video.


P3D


Simile a P2D, il renderer 3D di Processing è mirato per operazioni veloci e sui pixel. Crea anche grafiche 3D all’interno di browser web, persino senza una libreria come Java3D.
La qualità dell’immagine è più povera (la funzione smooth() è disabilitata, e la qualità dell’immagine è bassa) ma è possibile disegnare migliaia di triangoli molto velocemente.


OPENGL


Il renderer OpenGL usa la libreria JOGL (Java per OpenGL) della Sun per un rendering più veloce (…).
Per usare la grafica OpenGL, in aggiunta alla modifica nella funzionesize(), bisogna selezionare Import Library, poi OpenGL dal menù Sketch

Le applet OpenGL vengono avviate anche all’interno di un browser web senza ulteriori modifiche, ma apparirà una finestra di dialogo con la richiesta se si ha fiducia in “Sun Microsystems, Inc.” prima di avviare Java per OpenGL.
Se questo è un problema, il renderer P3D è una soluzione più semplice anche se meno potente.


PDF


Il renderer PDF disegna tutta le geometrie su un file invece che sullo schermo.
Come per la libreria OpenGL, devi importare la libreria PDF prima di usarla.
Questo render è imparentato con Java2D, ma scrive direttamente su file PDF.


Conclusioni


Ciascun renderer ha un ruolo specifico.
P2D e P3D sono ottimi per lavori basati sui pixel, mentre le impostazioni JAVA2D e PDF ti daranno la più alta qualità grafica 2D.

Agli inizi del progetto Processing i renderer P2D e P3D erano, nei fatti, gli unici renderer disponibili.
Si trattava del tentativo di offrire un modo unico di pensare al disegno in due e in tre dimensioni.
Tuttavia questo divenne troppo oneroso a causa del numero di compromessi che si devono fare tra il 2D e il 3D.
Per esempio si hanno aspettative di qualità molto diverse tra il 2D e il 3D e cercare di soddisfarle insieme porterebbe a risultati peggiori.