PROCESSING

Transcript

PROCESSING
PROCESSING www.processing.org I commenti sono fatti come in linguaggio C utilizzando // .
Di seguito, segue lo schema principale del codice programma: si noti che come in linguaggio C, le istruzioni
terminano con ; .
// viene eseguita una volta sola
// inizializza variabili programma
void setup()
{
}
// la funzione draw viene ripetuta ciclicamente circa 60 volte al secondo(ciclo loop)
void draw()
{
}
Occorre dimensionare una finestra grafica: si usa una funzione size ( , ) ; e si inseriscono largezza e altezza
separati da una virgola. Le misure sono in pixel.
void setup()
{
size (600,400);
}
Disegno Per disegnare una forma simile ad un elisse utilizzo lafunzione ellipse. Queta funzione richiede 4 valori
numerici (centro X, centro Y, larghezza,diemetro). Il punto di coordinate 0,0 si trova in alto sull'estrema
sinistra (angolo). Il punto di coordinate 400,400 si trova in basso sull'estrema destra (angolo).
ellipse (100,100,50,50);
// assegnazioni di variabili globali
float x,y,d;
// viene eseguita una volta sola
// inizializza variabili programma
void setup()
{
size (600,400);
x=50; // coordinata X
y=50; // coordinata Y
d=50; // diametro del cerchio o ellisse
}
// viene ripetuta ciclicamente circa 60 volte al secondo (ciclo loop)
void draw()
{
ellipse (x,y,d,d); // disegno di un cerchio
}
Colori Per scegliere il colore interno dell'ellisse uso la funzione fill da inserire nella funzione draw.
void draw()
{
fill (100); // bianco - numero massimo
ellipse (x,y,d,d);
}
I VALORI DA 0 A 255 SOINO IN SCALA DI GRIGI.
fill (0); // nero – numero minimo
fill (255); // bianco - numero massimo
Per utilizzare tutti i colori andare in: tools – color selector. Per creare il colore occorre utilizzare i parametri
RGB e vanno inseriti nel fill separato da virgole.
fill (22,78,216); // blu elettrico
Utilizzo pratico della funzione.
void draw()
{
fill (0,255,0); // verde
ellipse (x,y,d,d);
}
Per evitare di incorrere in errori si sostituiscono i parametri con una variabile c. La dichiaro con il formato
color:
color c;
void setup()
{
c=color(255,3,255);
}
void draw()
{
fill (c); // viola
ellipse (x,y,d,d);
}
Per rendere meno segettato il cerchio uso la funzione smooth(); la funzione è da eseguire nel void draw. Se
si associa anche la funzione stroke (); mi varia iol colore del contorno, per scegliere il colore il metodo di
inseimento è lo stesso del fill (); . Con la funzione strokeWeight(); posso sceglirere il numero di pixel che
vanno a costituire il contorno; all'interno della parentisi si mette il numero di pixel.
void draw()
{
fill (c); // viola
smooth(); // mi "liscia" il contorno del cerchio
stroke(0); // contorno in nero
strokeWeight(5); // contorno di 5px
ellipse (x,y,d,d);
}
Processing ha delle funzioni dedicate:
• Se sostituisco le coortdinate ellipse (x,y,d,d); x e y con ellipse (mouseX,mouseY,d,d); il cerchio si
disegherà dove mi fermo con il mouse.
• Per pulire lo sfondo uso la funzione background(); e tra parentesi inserisco il colore col quale mi deve
dipingere lo schermo.
• Per fare traslare la pallina da sola sugli assi X e Y uso, aggiungo due variabili dx e dy e alla fine di ogni
disegno la pallina trasla sullo schermo.
float x,y,d,dx,dy;
color c;
void setup()
{
size (600,400);
x=50; // coordinata X
y=50; // coordinata Y
d=50; // diametro del cerchio o ellisse
c=color(0,255,0);
dx=2;
dy=2;
}
void draw()
{
background(0); // ad ogni movimento di mouse mi colora il display di nero
fill (c); // verde
smooth(); // mi "liscia" il contorno del cerchio
stroke(0); // contorno in nero
strokeWeight(5); // contorno di 5px
ellipse (x,y,d,d); // la pallina segue il movimento del mouse
x=x+dx;
y=y+2;
}
Movimento della pallina in modo orizzontale Per controllare la traslazione e far restare la pallina nel display di prova uso un ciclo che mi fa rimbalzare da
parte a parte la figura. Per evitare che la pallina rimbalzi perfettamente nei limiti dello schermo occorre
inserire un’ulteriore condizione nell' if .
float x,y,d;
color c;
float dx;
void setup()
{
size (600,400);
x=50; // coordinata X
y=50; // coordinata Y
d=50; // diametro del cerchio o ellisse
c=color(0,255,0);
dx=2;
}
void draw()
{
background(0); // ad ogni movimento di mouse mi colora il display di nero
fill (c); // verde
smooth(); // mi "liscia" il contorno del cerchio
stroke(0); // contorno in nero
strokeWeight(5); // contorno di 5px
ellipse (x,y,d,d); // la pallina segue il movimento del mouse
x=x+dx;
if(x>width-d/2)
dx=dx*-1;
if(x<d/2)
dx=dx*-1;
}
Movimento della pallina in modo verticale Per controllare la traslazione e far restare la pallina nel display di prova uso un ciclo che mi fa rimbalzare da
parte a parte in modo verticale la figura. Per evitare che la pallina rimbalzi perfettamente nei limiti dello
schermo occorre inserire un’ulteriore condizione nell' if .
float x,y,d;
color c;
float dy;
void setup()
{
size (600,400);
x=50; // coordinata X
y=50; // coordinata Y
d=50; // diametro del cerchio o ellisse
c=color(0,255,0);
dy=2;
}
void draw()
{
background(0); // ad ogni movimento di mouse mi colora il display di nero
fill (c); // verde
smooth(); // mi "liscia" il contorno del cerchio
stroke(0); // contorno in nero
strokeWeight(5); // contorno di 5px
ellipse (x,y,d,d); // la pallina segue il movimento del mouse
y=y+dy;
if(y>height-d/2)
dy=dy*-1;
if(y<d/2)
dy=dy*-1;
}
Se congiungo i due programmi, ottengo il movimento di una pallina in verticale ed orizzontale:
float x,y,d,dx,dy;
color c;
void setup()
{
size (600,400);
x=50; // coordinata X
y=50; // coordinata Y
d=50; // diametro del cerchio o ellisse
c=color(0,255,0);
dx=2;
dy=2;
}
void draw()
{
background(0); // ad ogni movimento di mouse mi colora il display di nero
fill (c); // verde
smooth(); // mi "liscia" il contorno del cerchio
stroke(0); // contorno in nero
strokeWeight(5); // contorno di 5px
ellipse (x,y,d,d); // la pallina segue il movimento del mouse
x=x+dx;
y=y+dy;
if(x>width-d/2)
dx=dx*-1;
if(x<d/2)
dx=dx*-1;
if(y>height-d/2)
dy=dy*-1;
if(y<d/2)
dy=dy*-1;
}