Queste slide dal titolo provocatorio cercano di dare l'idea che la stupidit e la pigrizia possono avere un effetto positivo nela programmazione per la ricerca di soluzioni semplici. Nello specifico caso parliamo di funzioni in C
CORSO BASE DI PHOTOSHOP
OBIETTIVI
Questo corso 竪 rivolto a tutti coloro che muovono i primi
passi nel mondo della grafica. Infatti 竪 stato pensato e progettato per chi, amando il fotoritocco e la fotografia, vorrebbe iniziare ad avvicinarsi a Photoshop partendo dalle basi. Tutti gli argomenti verranno trattati con prove ed esercizi pratici al computer. Il corso fornir la conoscenza base per poter affrontare tuorial e formazione avanzata
PROGRAMMA
- Interfaccia e preferenze
- Dimensione e risoluzione
- Creazione documento
- Profondit colore
- Barra strumenti
- Righelli, guide e griglie
- Livelli e opzioni livelli
- Stili livello
- Oggetti avanzati
- Livelli di regolazione
- Metodi colori
- Colore e campioni
- Sfumature
- Selezioni
- Ritagliare e trasformare
- I canali
- Istogramma, curve e valori tonali
- Pennelli
- Filtri ed effetti base
- Oggetti vettoriali e testo
- Maschere
- Metodi fusione
- Formati (JPEG, PNG, ecc...)
- Salvataggio per il Web
- Stampa
GeoGebra: Docente Giammario Marini (giammariomarini@gmail.com), i materiali di supporto al corso saranno pubblicati su [http://ssissinisisisi.wordpress.com/]
http://ssissinisisisi.wordpress.com/laboratori-e-corsi/
Appunti della struttura hardware (fisica) e software (istruzioni) degli elaboratori elettronici partendo dagli aspetti basilari, quali le varie unit di misura, per finire alle logiche di base che regolano il funzionamento dei sistemi.
Queste slide dal titolo provocatorio cercano di dare l'idea che la stupidit e la pigrizia possono avere un effetto positivo nela programmazione per la ricerca di soluzioni semplici. Nello specifico caso parliamo di funzioni in C
CORSO BASE DI PHOTOSHOP
OBIETTIVI
Questo corso 竪 rivolto a tutti coloro che muovono i primi
passi nel mondo della grafica. Infatti 竪 stato pensato e progettato per chi, amando il fotoritocco e la fotografia, vorrebbe iniziare ad avvicinarsi a Photoshop partendo dalle basi. Tutti gli argomenti verranno trattati con prove ed esercizi pratici al computer. Il corso fornir la conoscenza base per poter affrontare tuorial e formazione avanzata
PROGRAMMA
- Interfaccia e preferenze
- Dimensione e risoluzione
- Creazione documento
- Profondit colore
- Barra strumenti
- Righelli, guide e griglie
- Livelli e opzioni livelli
- Stili livello
- Oggetti avanzati
- Livelli di regolazione
- Metodi colori
- Colore e campioni
- Sfumature
- Selezioni
- Ritagliare e trasformare
- I canali
- Istogramma, curve e valori tonali
- Pennelli
- Filtri ed effetti base
- Oggetti vettoriali e testo
- Maschere
- Metodi fusione
- Formati (JPEG, PNG, ecc...)
- Salvataggio per il Web
- Stampa
GeoGebra: Docente Giammario Marini (giammariomarini@gmail.com), i materiali di supporto al corso saranno pubblicati su [http://ssissinisisisi.wordpress.com/]
http://ssissinisisisi.wordpress.com/laboratori-e-corsi/
Appunti della struttura hardware (fisica) e software (istruzioni) degli elaboratori elettronici partendo dagli aspetti basilari, quali le varie unit di misura, per finire alle logiche di base che regolano il funzionamento dei sistemi.
2. Conosciamo il linguaggio di programmazione open-source
creato per realizzare
immagini e animazioni,
le cui librerie ed il cui ambiente sono compatibili con lambiente di sviluppo di
Arduino.
INDICE
Introduzione
programma scritto in Processing;
1.LEZIONE 1 FORME BASE
6. LEZIONE 6 CONTROLLO DI
come disegnare linee, rettangoli,
FLUSSO_
cerchi, quadrilateri sullarea
RIPETIZIONI; questo programma
2. LEZIONE 2 FORME BASE; rispetto descrive luso dei cicli FOR;
al programma precedente, aggiunge 7. LEZIONE 1_7 CONTROLLO DI
le funzionalit legate al tratto di
FLUSSO_
disegno ed al riempimento di colore IF; questo programma mostra
delle figure;
lutilizzo del costrutto condizionale
3. LEZIONE 3 COLORI BASE; illustra IF;
le funzionalit legate a colori,
8. LEZIONE 1_8 USO DEL TESTO;
riempimenti e trasparenze;
aggiungiamo del testo al
4. LEZIONE 4 ELETTRINO 1; questo programma dellesercizio
programma permette di disegnare precedente;
un robot con le funzionalit
9. LEZIONE 1_9 - ANIMAZIONE;
descritte nei programmi precedenti;
realizziamo una semplice
5. LEZIONE 5 STRUTTURA BASE DI
animazione
UN PROGRAMMA; in esso viene
10. EXTRA PLASMA FADING
mostrata la struttura base di un
Prof. Christian Gervasi
3. Introduzione
Pocessing
竪 un linguaggio di
programmazione sviluppato
con il preciso scopo di
rendere molto semplice
linterazione con elementi
grafici; pi湛 esattamente, 竪
finalizzato alla
realizzazione di
immagini, animazioni e
interazioni.
home
Prof. Christian Gervasi
4. Introduzione
Processing 竪 stato
sviluppato
dal 2001, con la finalit di
ottenere un linguaggio
semplice per gli studenti di
arte e design e per quelli ad
indirizzo tecnico.
Grafica 3D, comunicazione
seriale, interfacciamento
con Arduino, audio.
Processing e le sue librerie
sono completamente liberi,
progetto open source
home
Prof. Christian Gervasi
5. Introduzione
Generalmente quando
si studia un linguaggio
di programmazione si
parte sostanzialmente
dalla struttura, dai
concetti teorici, dagli
algoritmi e dai vari
metodi di
programmazione,
relegando alla fine
linterazione con la
grafica e magari le
animazioni. Utilizzando
Processing, si parte
direttamente
da grafica e
animazioni, fermo
restando che devono
essere compresi le
strutture di
programmazione e i
vari costrutti.
home
Prof. Christian Gervasi
6. Introduzione
La piena compatibilit con Arduino 竪 un altro aspetto che
rende Processing estremamente interessante, senza
contare che gli ambienti di programmazione sono
praticamente Identici
Alla fine di questo corso si avranno le nozioni base per
realizzare una GUI (Graphic User Interface) completa con la
quale sar possibile controllare Arduino.
home
Prof. Christian Gervasi
7. Introduzione
PROCESSING DEVELOPMENT ENVIRONMENT (PDE)
Text Editor, dove verranno scritti i
programmi;
Toolbar
Message Area. La Message Area 竪 usata
per inviare da Processing i messaggi di
errore,
Console: serve per trasmettere,
ad esempio, dei messaggi dal programma
in
Esecuzione.
I programmi creati con Processing
vengono chiamati sketch
La Toolbar 竪 composta dai pulsanti:
1. RUN avvia il programma;
2. STOP ferma il programma;
3. NEW apre un altro editor;
4. OPEN apre un altro programma;
5. SAVE salva il lavoro corrente .pde;
6. EXPORT crea una cartella unica con
tutto il lavoro realizzato, che pu嘆 essere
installata su un web-server ed 竪
composta da un fi le .pde che 竪 il codice
sorgente; il fi le .jar sar il programma,
mentre il fi le .html corrisponde alla
pagina web.
home
Prof. Christian Gervasi
8. LEZIONE 1 FORME BASE
Andiamo allora a
rappresentare sullo
schermo delle figure
geometriche
utilizzando le funzioni
native di Processing.
home
Prof. Christian Gervasi
9. LEZIONE 1 FORME BASE
Iniziamo a disegnare larea in cui
andremo a disegnare le nostre
forme. Essa 竪 defi nita dalla
funzione:
size()
le dimensioni dellarea di disegno
sono definite in pixel e i parametri
da passare alla funzione sono width
ed eight, larghezza ed altezza.
Lorigine 0,0 del piano di disegno 竪
posta nello spigolo in alto a sinistra, la
direzione
di incremento dellasse X 竪 verso
destra, mentre la direzione di
incremento dellasse
Y 竪 verso il basso.
size(260,400); //dimensioni X,Y dellarea di disegno
home
Prof. Christian Gervasi
10. LEZIONE 1 FORME BASE
La funzione
background()
permette di definire il
colore di sfondo del piano
di disegno; inserendo un
solo valore che va da 0 a
255, Processing
riconoscer che stiamo
lavorando in scala di grigi
background(205); //sfondo dellarea di disegno, in gradazione di grigio
home
Prof. Christian Gervasi
11. LEZIONE 1 FORME BASE
Il comando
smooth()
evita la spigolosit
delle varie forme disegnate,
mentre
strokeWeight()
definisce lo spessore del tratto
in pixel.
smooth(); //forme disegnate meno spigolose
strokeWeight(2); //spessore del tratto di disegno pin px
home
Prof. Christian Gervasi
12. LEZIONE 1 FORME BASE
Le linee vengono disegnate con il
comando
line()
che si aspetta le coordinate
del punto di
partenza (X1,Y1)
e di quello di
arrivo (X2,Y2).
line(60,60,200,20); //linea X1,Y1, X2,Y2
home
Prof. Christian Gervasi
13. LEZIONE 1 FORME BASE
triangle()
disegna dei triangoli e dobbiamo
defi nire le coordinate dei tre
vertici
(X1,Y1,X2,Y2,X3,Y3)
triangle(200,60,200,100,60,100); //triangolo X1,Y1,X2,Y2,X3,Y3
home
Prof. Christian Gervasi
14. LEZIONE 1 FORME BASE
Per disegnare dei quadrilateri
si usa il comando
quad()
inserendo
le coordinate dei quattro vertici.
quadrilatero
X1,Y1,X2,Y2,X3,Y3,X4,Y4
quad(100,120,180,140,160,160,60,160); //quadrilatero X1,Y1,X2,Y2,X3,Y3,X4,Y4
home
Prof. Christian Gervasi
15. LEZIONE 1 FORME BASE
Diverso
竪 il caso per i rettangoli, che sono
disegnati
con il comando
rect()
i cui parametri sono
le coordinate X,Y dello spigolo in
alto a
sinistra, la larghezza del
rettangolo e la sua
altezza.
rect(80,200,100,40); //rettangolo X,Y, larghezza, altezza
home
Prof. Christian Gervasi
16. LEZIONE 1 FORME BASE
le ellissi; il comando
corrispondente 竪
ellipse()
i cui parametri sono le coordinate
X,Y
del centro la larghezza e laltezza
(ovviamente
se altezza e larghezza sono
identiche
otterremo un cerchio).
ellipse(120,280,50,50); //ellisse X,Y, larghezza, altezza
home
Prof. Christian Gervasi
17. LEZIONE 1 FORME BASE
arc()
il
cui funzionamento 竪 identico a
ellipse(), ma
ha due parametri in pi湛, che sono
langolo
di inizio e langolo di fine
(espressi in radianti
e con verso positivo di crescita
quello
antiorario).
arc(120, 350, 70, 70, 0, PI+HALF_PI);
//arco X,Y, largh, Altezza, ang inizio, ang fine
home
Prof. Christian Gervasi
18. LEZIONE 1 FORME BASE
Sketch
size(260,400); //dimensioni X,Y dellarea di disegno
background(205); //sfondo dellarea di disegno, in gradazione di grigio
smooth(); //forme disegnate meno spigolose
strokeWeight(2); //spessore del tratto di disegno pin px
line(60,60,200,20); //linea X1,Y1, X2,Y2
triangle(200,60,200,100,60,100); //triangolo X1,Y1,X2,Y2,X3,Y3
quad(100,120,180,140,160,160,60,160); //quadrilatero X1,Y1,X2,Y2,X3,Y3,X4,Y4
rect(80,200,100,40); //rettangolo X,Y, larghezza, altezza
ellipse(120,280,50,50); //ellisse X,Y, larghezza, altezza
arc(120, 350, 70, 70, 0, PI+HALF_PI); //arco X,Y, largh, Altezza, ang inizio, ang fine
home
Prof. Christian Gervasi
19. LEZIONE 2 FORME BASE
prima di ogni
primitiva di disegno definisce
fill()
e
strokeWeight().
Ne consegue che ogni forma
disegnata avr il suo colore di
riempimento
ed il suo spessore del tratto di
disegno. La
Fig. 2 mostra le forme base del
programma
precedente, mentre la Fig. 3
illustra le forme
base con le nuove funzionalit
appena
descritte.
fill(255, 0, 0);
//riempimento di colore rosso
home
Prof. Christian Gervasi
20. LEZIONE 3 COLORI BASE
Il codice di questo terzo
programma mostra
come utilizzare i colori e le
funzionalit di
Processing relativamente alle
trasparenze;
con esso vengono disegnate due
combinazioni di tre cerchi con i
colori
base. Nella prima sequenza
i colori sono pieni e non ci
sono trasparenze, mentre nella
seconda vengono utilizzate le
trasparenze Fig. 4. Trovate il
codice corrispondente a questo
home
Prof. Christian Gervasi
21. LEZIONE 3 COLORI BASE
La prima sequenza
i colori sono pieni e non ci
sono trasparenze
smooth(); //questa funzione permette di rendere
le forme disegnate meno spigolose
noStroke(); //con questa funzione le forme
disegnate sono prive di contorno
fill(255, 0, 0); //riempimento di colore rosso
ellipse(80,80,140,140); //prima circonferenza
fill(0, 255, 0); //riempimento di colore verde
ellipse(200,80,140,140); //seconda circonferenza
fill(0, 0, 255); //riempimento di colore blu
ellipse(140,140,140,140); //terza circonferenza
home
Prof. Christian Gervasi
22. LEZIONE 3 COLORI BASE
Nella seconda vengono utilizzate
le trasparenze
//oltre ai colori si pu嘆 impostare la trasparenza
//i valori vanno da 0 --> 255
nella funzione fill() possiamo
mettere quattro parametri: R,G,B,
trasparenza
fill(255, 0, 0,100); //riempimento di colore
rosso e trasparenza 100
ellipse(80,280,140,140); //prima
circonferenza
fill(0, 255, 0, 100); //riempimento di colore
verde e trasparenza 100
ellipse(200,280,140,140); //seconda
circonferenza
fill(0, 0, 255, 100); //riempimento di colore blu
e trasparenza 100
ellipse(140,340,140,140); //terza
circonferenza
home
Prof. Christian Gervasi
24. LEZIONE 4 ELETTRINO
A questo punto mettiamo
assieme
tutte le funzioni descritte
ed incominciamo a
realizzare
un disegno.
Il codice di questo quarto
programma
permette di combinare
le forme base per
disegnare
un piccolo robot (Fig. 5)
cui
diamo il nome di Elettrino e
che richiameremo pi湛
avanti
in successivi programmi,
nei quali saranno
aggiunte altre funzionalit
home
Prof. Christian Gervasi
25. LEZIONE 4 ELETTRINO
/*
Corso Arduino+Processing
Lezione 1_4
ELETTRINO_1
il codice qui descritto si riferisce alle funzioni base di disegno di P5
ed al disegno di ElettrInO
28_Sett_2010
Christian Gervasi
*/
size(560,400);
smooth();
strokeWeight(2);
background(204);
ellipseMode(RADIUS);
//antenne
strokeWeight(2);
line(200,20,240,80);
line(380,20,300,80);
//collo
strokeWeight(10);
line(280,160,280,200);
strokeWeight(1);
home
Prof. Christian Gervasi
26. LEZIONE 4 ELETTRINO
//testa
fill(50);
rect(160,80,240,80);
//occhio sinistro
fill(255);
ellipse(220,120,20,20);
fill(5);
ellipse(220,120,6,6);
//occhio destro
fill(255);
ellipse(340,120,20,20);
fill(5);
ellipse(340,120,6,6);
//bocca
fill(160);
rect(260,140,40,20);
home
Prof. Christian Gervasi
28. LEZIONE 5 STRUTTURA BASE DI UN PROGRAMMA
Il quinto programma esegue
un ciclo in cui
nel terminale viene scritto
continuamente
un numero che viene
incrementato ad ogni
ciclo
home
Prof. Christian Gervasi
29. LEZIONE 5 STRUTTURA BASE DI UN PROGRAMMA
La struttura di un programma
scritto in Processing si compone
di tre parti
fondamentali:
la dichiarazione delle variabili;
void setup(){} che 竪 una parte
di codice
eseguito una sola volta;
void draw(){} che invece 竪 la
parte di
codice eseguita continuamente
home
Prof. Christian Gervasi
30. LEZIONE 5 STRUTTURA BASE DI UN PROGRAMMA
Nel programma appena descritto (Listato
3) 竪 stata utilizzata la funzione delay(1000);
che permette di creare un ritardo di 1 secondo;
in pratica largomento della funzione 竪
un numero che esprime il ritardo in ms.
La scrittura cont +=1; significa che la variabile
cont viene incrementata di ununit ad
ogni ciclo.
home
Prof. Christian Gervasi
31. LEZIONE 5 STRUTTURA BASE DI UN PROGRAMMA
/*
Corso Arduino+Processing
Lezione 1_5
STRUTTURA BASE DI UN PROGRAMMA
il codice qui descritto si riferisce alle strutture base si un programma in P5
1) dichiarazione di variabili
2) setup()
3) draw()
28_Sett_2010
Christian Gervasi
*/
int cont;
//dichiarazione della variabile cont come intero
//setup viene eseguito una sola volta
void setup(){
cont=0;
//inizializzazione della variabile cont
println("SETUP - eseguito una sola volta"); //scrittura a terminale
}
//draw 竪 un ciclo che viene eseguito continuamente
void draw(){
println("ciclo continuo - in esecuzione"); //scrittura a terminale
println(cont); //scrittura a terminale del valore di cont
delay(1000); //attesa di 1 secondo, il valore di delay() 竪 espresso in ms
cont +=1;
//incremento di cont di 1 ad ogni ciclo
}
home
Prof. Christian Gervasi
32. LEZIONE 6 CONTROLLO DI FLUSSO RIPETIZIONI
Introduce lutilizzo
dei controlli di flusso. Il codice serve a disegnare una
ripetizione di cerchi di colore diverso; questa funzionalit 竪
ottenuta attraverso un ciclo
FOR.
home
Prof. Christian Gervasi
33. LEZIONE 6 CONTROLLO DI FLUSSO RIPETIZIONI
Questultimo 竪 descritto dalla variabile che viene
incrementata ad ogni ripetizione, dalla condizione per cui il
ciclo viene ripetuto (in pratica, finch辿 la condizione 竪 vera
il ciclo viene ripetuto, mentre quando diventa falsa il
programma esce dal ciclo) ed infine dallincremento della
variabile.
home
Prof. Christian Gervasi
34. LEZIONE 6 CONTROLLO DI FLUSSO RIPETIZIONI
Nel caso del programma in questione, la variabile che viene
incrementata 竪
i
definita come intero for(int i .
La condizione per cui il ciclo 竪 ripetuto 竪:
fintanto che i 竪 minore di 480
for (int i; i<480....
Invece lincremento della variabile i ad ogni
ciclo 竪 40:
for (int i; i< 480; i +=40).
home
Prof. Christian Gervasi
35. LEZIONE 6 CONTROLLO DI FLUSSO RIPETIZIONI
/*
Corso Arduino+Processing
Lezione 1_6
CONTROLLO DI FLUSSO - RIPETIZIONI
FOR
28_Sett_2010
Christian Gervasi
*/
size(480,120);
smooth();
background(0,0,0);
strokeWeight(1);
// sfondo nero
//ciclo for
for (int i = 40; i<480; i +=40){ //variabile di conteggio i, che parte da 40 fino a 280, con
incrementi di 40 per ogni ciclo
fill(50+i/2, 90+i/10, 200); //riempimento, i colori variano in modo proporzionale con
l'incremento di i
ellipse (i, 60, 60, 60);
//vengono disegnati cerchi, la cui posizione X 竪 i
}
home
Prof. Christian Gervasi
36. LEZIONE 7 CONTROLLO DI FLUSSO_
Permette di disegnare un
quadrato con
allinterno quattro quadranti;
spostando
il cursore del mouse sopra un
quadrante,
questo cambia di colore
home
Prof. Christian Gervasi
37. LEZIONE 7 CONTROLLO DI FLUSSO_
In pratica si tratta di una
condizione con
quattro AND logici (&&) che
verifica se la
posizione X del mouse 竪
tra X1 e X2
e se laposizione Y del mouse 竪
tra Y1 e Y2;
se tutte e quattro le condizioni
sono verificate, la condizione
complessiva 竪 vera e di
conseguenza viene colorata larea
home
Prof. Christian Gervasi
38. LEZIONE 7 CONTROLLO DI FLUSSO_
int x1 = 0;
int y1 = 0;
int x2 = 100;
int y2 = 0;
int x3 = 100;
int y3 = 100;
int x4 = 0;
int y4 =100;
int h = 100;
int l = 100;
void setup()
{
size(200,200);
}
void draw()
{
home
Prof. Christian Gervasi
39. LEZIONE 7 CONTROLLO DI FLUSSO_
//costruzione rettangolo QUADRANTE 1
if ((mouseX > x1) && (mouseX < x2) && (mouseY
> y1) _
&& (mouseY < y3))
{ //condizione di verifica se il mouse 竪 nel
QUADRANTE 1
fill(0);
} else
{ fill(255); }
rect(x1,y1,l,h);
//costruzione rettangolo QUADRANTE 2
if ((mouseX > x2) && (mouseX < width) && _
(mouseY > y2) && (mouseY < y4))
{ //condizione di verifica se il mouse 竪 nel
QUADRANTE 2
fill(0);
} else
{ fill(255); }
rect(x2,y1,l,h);
home
Prof. Christian Gervasi
40. LEZIONE 7 CONTROLLO DI FLUSSO_
//costruzione rettangolo QUADRANTE 3
if ((mouseX > x2) && (mouseX < width) && _
(mouseY > y3) && (mouseY < height))
{ //condizione di verifica se il mouse 竪 nel
QUADRANTE 3
fill(0);
} else
{ fill(255); }
rect(x3,y3,l,h);
//costruzione rettangolo QUADRANTE 4
if ((mouseX > x4) && (mouseX < x3) && _
(mouseY > y4) && (mouseY < height))
{ //condizione di verifica se il mouse 竪 nel
QUADRANTE 4
fill(0);
} else
{ fill(255); }
rect(x4,y4,l,h);
}
home
Prof. Christian Gervasi
41. LEZIONE 7 CONTROLLO DI FLUSSO_
int x1 = 0;
int y1 = 0;
int x2 = 100;
int y2 = 0;
int x3 = 100;
int y3 = 100;
int x4 = 0;
int y4 =100;
int h = 100;
int l = 100;
void setup()
{
size(200,200);
}
void draw()
{
//costruzione rettangolo QUADRANTE 1
if ((mouseX > x1) && (mouseX < x2) && (mouseY > y1) _
&& (mouseY < y3))
{ //condizione di verifica se il mouse 竪 nel QUADRANTE 1
fill(0);
} else
{ fill(255); }
rect(x1,y1,l,h);
//costruzione rettangolo QUADRANTE 2
if ((mouseX > x2) && (mouseX < width) && _
(mouseY > y2) && (mouseY < y4))
{ //condizione di verifica se il mouse 竪 nel QUADRANTE 2
fill(0);
} else
{ fill(255); }
rect(x2,y1,l,h);
//costruzione rettangolo QUADRANTE 3
if ((mouseX > x2) && (mouseX < width) && _
(mouseY > y3) && (mouseY < height))
{ //condizione di verifica se il mouse 竪 nel QUADRANTE 3
fill(0);
} else
{ fill(255); }
rect(x3,y3,l,h);
//costruzione rettangolo QUADRANTE 4
if ((mouseX > x4) && (mouseX < x3) && _
(mouseY > y4) && (mouseY < height))
{ //condizione di verifica se il mouse 竪 nel QUADRANTE 4
fill(0);
} else
{ fill(255); }
rect(x4,y4,l,h);
}
home
Prof. Christian Gervasi
42. LEZIONE 8 USO DEL TESTO
Questo programma aggiunge,
rispetto al precedente, del testo
per identificare i quadranti il
comando qui utilizzato
竪:
Text
(testo da scrivere, posizione X,
home
Prof. Christian Gervasi
43. LEZIONE 8 USO DEL TESTO
/*
Corso Arduino+Processing
Lezione 1_8
CONTROLLO DI FLUSSO - COSTRUTTI
CONDZIONALI
IF
UTILIZZO DEL TESTO
28_Sett_2010
Christian Gervasi
*/
int x1 = 0;
int y1 = 0;
int x2 = 100;
int y2 = 0;
int x3 = 100;
int y3 = 100;
int x4 = 0;
int y4 =100;
int h = 100;
int l = 100;
void setup(){
size(200,200);
textSize(12);
textAlign(LEFT);
}
home
Prof. Christian Gervasi
44. LEZIONE 8 USO DEL TESTO
void draw(){
//costruzione rettangolo QUADRANTE 1
if ((mouseX > x1) && (mouseX < x2) &&
il mouse 竪 nel QUADRANTE 1
(mouseY > y1) && (mouseY < y3)){
fill(100);
} else {
fill(250);
}
rect(x1,y1,l,h);
//condizione di verifica se
//costruzione rettangolo QUADRANTE 2
if ((mouseX > x2) && (mouseX < width) && //condizione di verifica
se il mouse 竪 nel QUADRANTE 2
(mouseY > y2) && (mouseY < y4)){
fill(100);
} else {
fill(255);
}
rect(x2,y1,l,h);
home
Prof. Christian Gervasi
45. LEZIONE 8 USO DEL TESTO
//costruzione rettangolo QUADRANTE 3
if ((mouseX > x2) && (mouseX < width) && //condizione di verifica se il
mouse 竪 nel QUADRANTE 3
(mouseY > y3) && (mouseY < height)){
fill(100);
} else {
fill(255);
}
rect(x3,y3,l,h);
//costruzione rettangolo QUADRANTE 4
if ((mouseX > x4) && (mouseX < x3) && //condizione di verifica se il
mouse 竪 nel QUADRANTE 4
(mouseY > y4) && (mouseY < height)){
fill(100);
} else {
fill(255);
}
rect(x4,y4,l,h);
fill(0);
text("x1,y1",15+x1,15+y1);
text("x2,y2",15+x2,15+y2);
text("x3,y3",15+x3,15+y3);
text("x4,y4",15+x4,15+y4);
}
home
Prof. Christian Gervasi
46. LEZIONE 8 USO DEL TESTO
/*
Corso Arduino+Processing
Lezione 1_8
CONTROLLO DI FLUSSO - COSTRUTTI CONDZIONALI
IF
UTILIZZO DEL TESTO
28_Sett_2010
Christian Gervasi
*/
int x1 = 0;
int y1 = 0;
int x2 = 100;
int y2 = 0;
int x3 = 100;
int y3 = 100;
int x4 = 0;
int y4 =100;
int h = 100;
int l = 100;
void setup(){
size(200,200);
textSize(12);
textAlign(LEFT);
}
void draw(){
//costruzione rettangolo QUADRANTE 1
if ((mouseX > x1) && (mouseX < x2) &&
(mouseY > y1) && (mouseY < y3)){
fill(100);
} else {
fill(250);
}
rect(x1,y1,l,h);
//condizione di verifica se il mouse 竪 nel QUADRANTE 1
//costruzione rettangolo QUADRANTE 2
if ((mouseX > x2) && (mouseX < width) && //condizione di verifica se il mouse 竪 nel QUADRANTE 2
(mouseY > y2) && (mouseY < y4)){
fill(100);
} else {
fill(255);
}
rect(x2,y1,l,h);
//costruzione rettangolo QUADRANTE 3
if ((mouseX > x2) && (mouseX < width) && //condizione di verifica se il mouse 竪 nel QUADRANTE 3
(mouseY > y3) && (mouseY < height)){
fill(100);
} else {
fill(255);
}
rect(x3,y3,l,h);
//costruzione rettangolo QUADRANTE 4
if ((mouseX > x4) && (mouseX < x3) && //condizione di verifica se il mouse 竪 nel QUADRANTE 4
(mouseY > y4) && (mouseY < height)){
fill(100);
} else {
fill(255);
}
rect(x4,y4,l,h);
}
fill(0);
text("x1,y1",15+x1,15+y1);
text("x2,y2",15+x2,15+y2);
text("x3,y3",15+x3,15+y3);
text("x4,y4",15+x4,15+y4);
home
Prof. Christian Gervasi
47. LEZIONE 9 - ANIMAZIONE
consistente in unellisse che oscilla in verticale tra due posizioni
home
Prof. Christian Gervasi
48. LEZIONE 9 - ANIMAZIONE
Il programma si basa sul concetto
fondamentale
in Processing, secondo cui
void draw(){}
viene ripetuto continuamente;
per la precisione,
tale funzione 竪 richiamata
di regola,
60 volte al secondo
Sfruttando questo principio possiamo realizzare delle
Animazioni.
home
Prof. Christian Gervasi
49. LEZIONE 9 - ANIMAZIONE
La tecnica base 竪 quella di creare una figura
in una certa posizione, quindi cancellarla
nel frame successivo e ridisegnarla in una
posizione differente dalla prima.
Loscillazione sullasse verticale della
home
Prof. Christian Gervasi
50. LEZIONE 9 - ANIMAZIONE
Loscillazione sullasse verticale della posizione
dellellisse 竪 ottenuta mediante la
formula:
float y1 = offset + (sin(angolo))*scala;
home
Prof. Christian Gervasi
51. LEZIONE 9 - ANIMAZIONE
La posizione 竪 definita da
Y1
, angolo 竪 una
variabile che viene incrementata ad ogni
ciclo,
mentre la funzione
sin()
(funzione seno
di un angolo espresso in radianti) restituisce
un numero compreso tra -1 e 1. La variabile
scala moltiplica sostanzialmente il valore
della funzione sin(), mentre
offset
rappresenta
la posizione iniziale attorno alla quale
avviene loscillazione.
home
Prof. Christian Gervasi
52. LEZIONE 9 - ANIMAZIONE
La variabile di angolo verr
incrementata
indefinitamente (perlomeno fino
alla sua totale
occupazione del campo di
memoria e poi ricomincer), ma
la funzione seno 竪 periodica
di 2pi, quindi il numero che ne
consegue dal continuo
incremento di angolo sar un
multiplo di 2pi ed il risultato della
funzione
seno sar sempre compreso tra
-1 e 1.
home
Prof. Christian Gervasi
53. LEZIONE 9 - ANIMAZIONE
Variando le costanti iniziali, ossia angolo, offset, scala e
velocit, si pu嘆 sperimentare cosa accade.
home
Prof. Christian Gervasi
54. LEZIONE 9 - ANIMAZIONE
/*
Corso Arduino+Processing
Lezione 1_9
ANIMAZIONE
il codice qui descritto si riferisce alle funzioni base di disegno di P5
28_Sett_2010
Christian Gervasi
*/
float
float
float
float
angolo = 0.0; //angolo
offset = 200; //posizione iniziale dell'ellisse
scala = 60; //ampiezza dell'oscillazione
velocita = 0.02; //velocit dell'oscillazione
void setup(){
size(560,400);
smooth();
strokeWeight(1);
background(0);
ellipseMode(RADIUS);
}
void draw(){
fill(0,0,0);
//riempimento di colore nero
rect(0,0,560,400); //disegno di un rettangolo di colore nero di dimensioni pari all'area di disegno
float y1 = offset + (sin(angolo))*scala; //calcolo della nuova posizione Y dell'ellisse
fill(0,220,200);
// colore di riempimento dell'ellisse
ellipse(280, y1, 30, 30); //disegnod dell'ellisse
angolo += velocita; //incremento ad ogni ciclo della variabile angolo
}
home
Prof. Christian Gervasi
55. EXTRA PLASMA FADING
EXTRA PLASMA FADING
La finalit di Processing 竪, come gi detto, costituire un
linguaggio semplice per applicazioni di grafica e design; il
codice
plasma_fadig.pde
esempio di questo corso si riferisce proprio a ci嘆. Si tratta di
unapplicazione in cui viene disegnato un raggio colorato che
ruota a tutto schermo.
Siete invitati a variare i parametri del codice per
sperimentare cosa accade in pratica.
home
Prof. Christian Gervasi
56. LEZIONE 9 - ANIMAZIONE
/*
Corso Arduino+Processing
PLASMA_FADING
il codice qui riportato si riferisce alla creazione di un effetto visivo di grafica e animazione. Si tratta di un raggio
colorato, composto da cerchi in dissolvenza che ruota sullo schermo.
*/
float angle = 0.0;
float offset = 30;
float scalar = 20;
float speed = 0.05;
int scala=1;
void setup() {
size(1600,1000);
//l'applicazione utilizza l'intero schermo
color(HSB);
colore scelta 竪 Hue, Saturation, Brightness
smooth();
smussate
noStroke();
prive di contorno
background(0);
}
//la modalit di
//le linee sono
//le figure sono
//lo sfondo 竪 nero
void draw() {
float h=110*(sin(angle)+1);
float s=110*(cos(angle)+1);
float b=110*(sin(angle)+1);
println(int(h));
println(int(s));
println(int(b));
fill(int(h),int(s),int(b));
//colore di riempimento dei cerchi
//i cerchi descrivono una circonferenza nel piano, questo 竪 ottenuto calcolando il punto XY riferito al centro del
cerchio
float x = offset+ (random(30))*0.03 + cos(angle) * scalar;
posizione X dei cerchi
float y = offset+(random(50))*0.03 + sin(angle) * scalar;
posizione Y dei cerchi
//i cerchi disegnati sono 20
for(int i=0; i<20; i++){
fill(int(h)+i*30,int(s)+i*30,int(b)*(i/10),i*10);
della loro dimensione
ellipse( x*i+i*30, y*i+i*30, 10*i+i*30, 10*i+i*30);
}
//calcolo della
//calcolo della
//calcolo della traslazione dei cerchi e
//ad ogni giro del programma angle 竪 incrementato di speed, aumnetando speed aumenta la velocit di rotazione
angle += speed;
//riempimento di sfondo
fill(0,0,0,10);
//riempimento nero, ma con trasparenza 10
rect(200,500,300,400);
//il rettangolo che volta per volta viene aggiunto crea un effetto
dissolvenza
}
home
Prof. Christian Gervasi