domenica 22 dicembre 2013

Gestione dei colori con GeoGebra


Quando si costruisce un oggetto mediante gli usuali strumenti di GeoGebra a questo viene assegnato un colore preimpostato che viene visto come proprietà dell'oggetto stesso. L'utente poi può cambiare il colore predefinito accedendo al menu delle proprietà dell'oggetto o mediante un comando GeoGebraScript.
Per facilitare la scelta dei colori degli oggetti geometrici rappresentati, nella finestra Preferenze/Colore viene presentata una tavolozza di colori che possono essere selezionati in modo visuale.


Nella colonna a sinistra ci sono alcune tonalità di grigio, ed i colori primari, a destra c'è una matrice di colori per una scelta rapida di colori di uso più frequente. Per ognuno di questi colori viene mostrato un anteprima ed indicate le coordinate colore nel sistema RGB.
Per la scelta di colori che non fanno parte di questa tavolozza occorre indicarne le coordinate colore. Teniamo presente che tra i colori che si possono generare assegnando direttamente le coordinate non tutti sono gradevoli quindi, se non si ha una conoscenza specifica, è consigliabile usare i colori della tavolozza.

Alcuni colori possono essere immessi, sotto forma di stringhe di testo, nei comandi digitati nella linea di inserimento, si tratta di una comoda funzionalità usata per esempio nell'inserimento di testi.
Per un elenco di questi colori, espressi con nomi in italiano, vedere all'indirizzo:
Un elenco molto più completo per i nomi in inglese all'indirizzo:


Scelta dei colori attraverso le coordinate dinamiche
In questo caso le coordinate di un colore sono espresse da numeri compresi tra 0 ed 1 e possono essere assegnati anche mediante l'uso di variabili. Per questo possono essere impostati colori che variabili controllati da slider; molto comodo nelle animazioni.
Si usano numeri decimali proporzionali proporzionali alle coordinate colore.

Le corrispondenze tra i numeri indicati nella tavolozza e numeri da indicare nei colori dinamici sono indicate a lato
0
51
102
153
204
255
0
0.2
0.4
0.6
0.8
1

Quindi il colore (204, 51, 255) della tavolozza corrisponde al colore (0.8, 0.2, 1) dei parametri indicati come colori dinamici.  Vedere il foglio GeoGebra scaricabile all'indirizzo:


Per assegnare le coordinate dinamiche del colore di un oggetto si interviene nella finestra a comparsa per la definizione delle proprietà del''oggetto stesso alla voce: Preferenze/Avanzate
Nelle linee di editor relative ai vari colori possono essere inseriti nomi di variabili numeriche e logiche quindi il colore può essere modificato a determinate condizioni.


Nel caso di superfici da colorare è prevista anche un valore per impostare il valore dell'opacità

Mostriamo a titolo di esempio come può essere impostato il controllo del colore di un oggetto geometrico usando delle variabili controllate da slider.


Si definisce un oggetto geometrico, nel nostro caso un quadrato.
Si definiscono tre slider nelle variabili r, g, b. Tali slider devono variare tra 0 ed 1 con un incremento di 0.01
Si clicca con il tasto destro ul quadrato e alla voce Avanzate/Colori dinamici si inseriscono i nomi delle variabili, come mostrato nell'immagine sottostante.


I colori del quadrato sono controllabili direttamente dagli slider.

Contrasti tra colori complementari

Il contrasto creato dall'accostamento di due complementari esalta la luminosità, questo perchè ogni colore della coppia non ha nessun componente in comune.


Nel rettangolo a sinistra i colori dinamici sono impostati come nel caso precedente mentre per ottenere il colore complementare del rettangolo a destra si usano le stesse variabili (r, g, b) inserendo nelle linee di edit dei colori dinamici i valori (1 - r). (1, - g), (1 – b)

Colori intermedi

La gestione del colore si riconduce ad un calcolo matematico, il colore ha delle coordinate numeriche e la sua variazione deriva da operazioni matematiche fatte su tali coordinate.
Per realizzare l'applet della immagine sottostante che può essere scaricata all'indirizzo:
http://www.geogebratube.org/material/show/id/64176
si dichiarano tre slider nelle variabili a, b, c che variano nell'intervallo [0.1]


Analizziamo la prima barra il cui colore varia tra il Rosso (1, 0, 0) e Verde (0, 1, 0)
La componente del Blu è sempre 0 mentre le componenti del rosso e del verde devono avere valori compresi tra 0 ed 1 dipendenti dal parametro c.


Per c = 0 si ottengono le coordinate del Rosso puro, per c = 1 le coordinate del Verde passando da un colore all'altro gradatamente al variare di tale parametro, infatti all'aumentare del valore di c diminuisce la componente del rosso ed aumenta quella del Verde.
L'effetto che si ottiene viene evidenziato facendo variare il valore dello slider.
La stessa logica è applicata nella seconda barra il cui colore varia tra il Rosso ed il Blu, si fa variare lo slider nella variabile b che interviene sulle componenti di Rosso e Blu nel seguente modo:
Rosso: 1 – b      Verde: 0      Blu: b
Nella terza barra il colore varia tra Verde e Blu, si fa variare lo slider nella variabile a nel seguente modo:
Rosso: 0       Verde: 1 – a        Blu: a
L'opacità e sempre uguale ad 1 per rendere i colori più vivaci.

Saturazione dei colori

Abbiamo visto che la massima saturazione dei un colore è sinonimo di purezza quindi nel caso di un colori primario si ottiene quando non c'è traccia degli altri.
Pertanto le coordinate sono:
Massima saturazione per il Rosso: coordinate colore (255, 0, 0)
quindi coordinate dinamiche: (1, 0, 0)
Allo stesso modo
Massima saturazione per il Verde: (0, 255, 0) oppure (0, 1, 0)
Massima saturazione per il blu: (0, 0, 255) oppure (0, 0, 1)

Il colore a saturazione nulla è il Grigio in cui le tre coordinate colore sono uguali.
Particolari tipi di grigio sono il Nero: (0, 0, 0) ed il Bianco (255, 255, 255) oppure (1, 1, 1) in coordinate dinamiche.


Per costruire una applet che metta in evidenza la variazione di saturazione di colore quindi bisogna fare delle scelte e stabilire che tonalità di grigio si vuole raggiungere.
Nel file scaricabile all'indirizzo: http://www.geogebratube.org/material/show/id/64443
Sono stati dichiarati tre slider nelle variabili a, b, c una per ogni colore e sono costruiti in modo da ottenere la massima saturazione per la variabile nulla e minima per la variabile è 0.8.


Analizziamo il caso del rosso, controllato dalla variabile c, gli altri sono uguali, cambia solo la variabile di controllo. Come si è detto tali valori sono il risultato di una scelta che ora motiviamo.
Nel caso c = 0 le coordinate colore sono: (1, 0, 0) se si aumenta c, per esempio c = 0.2 le coordinate colore diventano: (0.98, 0.2, 0.2) quindi aumentano leggermente le componenti di Verde e Blu ma rimane una prevalenza di Rosso fino ad arrivare a c = 0.8 in cui le coordinate diventano: (0.92, 0.8, 0.8) in cui rimane una leggera prevalenza di rosso.
Se si fa in modo che diventino uguali si ottiene un grigio chiarissimo che in alcuni schermi si confonde con il bianco e così pure se si diminuisce la componente del rosso troppo rapidamente il colore si sbiadisce in fretta.
Abbiamo fatto queste scelte per fare in modo che la barra rossa restasse rossa, e così pure le altre, insomma nel caso del colore si devono fare anche delle scelte di buon gusto, non basta la matematica e soprattutto l'effetto visivo che è soggettivo, non ha un andamento lineare con i parametri.

Triangolo dei colori

Un colore è determinato da una terna di numeri quindi sembrerebbe logico fare una rappresentazio-ne nello spazio. Tale rappresentazione però, disponendo di una superficie piana come il monitor del computer finirebbe per creare grossi inconvenienti.
Vogliamo quindi tentare di rappresentare il maggior numero di colori combinando i tre colori primari, per questo costruiamo un triangolo che in qualche modo richiama il diagramma di cromaticità per il modello di colore RGB.
Le coordinate dei colori sono determinate dalla posizione del punto stesso all'interno del triangolo.
L'applet descritta di seguito è scaricabile all'indirizzo:

Per comodità impostiamo la rappresentazione su un piano cartesiano disponendo i colori nel modo indicato nella figura sottostante.
Coordinate di R = (0, 1) e coordinate di B = (1, 0) il punto P viene mantenuto interno al triangolo dichiarandolo come P = PuntoIn[Tria] dove Tria è il triangolo RGB


Quando P si trova sul punto R ha ordinata 1 e quando si trova su G ha ordinata 0 quindi assumiamo l'ordinata di P come coordinata dinamica del colore Rosso, per lo stesso ragionamento l'ascissa di P determina la coordinata dinamica del Blu nella rappresentazione RGB. Sono determinate in questo modo le coordinate r = y(P) e b = x(P) della terna (r, g, b) che determina il colore, manca la coordinata g.
Quando P si muove sul segmento RG la sua ascissa è nulla quindi la componente Blu è assente, allo stesso modo succede che quando si muove sul segmento GB è nulla la sua ordinata che determina la componente Rossa, in questo modo si ottengono tutti i colori intermedi come sono stati descritti nell'esempio visto.
Per fare in modo che quando P si trova sul segmento RB la componente Verde sia nulla basta prendere g = 1 – r – b, in tal modo quando P si muove sul segmento RB vengono generati tutti i colori intermedi tra i due. Questa proprietà si basa sul fatto che, essendo RGB rettangolo isoscele con cateti 1 la somma delle distanze di P dai cateti è sempre uguale all'unità e quindi anche la somma delle sua coordinate è 1.
Quando il punto si trova all'interno del triangolo vengono generate le combinazioni del tre colori primari.
I colori del quadrato a sinistra quindi sono così determinati:


I colori complementari sono ottenuti sottraendo al valore 1 le relative coordinate


Le convenzioni che abbiamo preso ci hanno permesso di risolvere in modo brillante il calcolo dei colori ed anche dei relativi complementari ma purtroppo la semplificazione è un po' ardita, la realtà è più complicata: risultato ci sono dei colori mal rappresentati.
Facendo delle semplici prove si vede per esempio che il giallo non viene mai rappresentato.
Se portiamo P nelle vicinanze del punto medio del segmento RG viene rappresentato il Marrone che è un giallo molto scuro, in compenso il Giallo viene rappresentato come colore complementare se portiamo P nelle vicinanze del punto B. Questo significa che per rappresentare il Giallo occorre dare al Verde e al Rosso coordinate prossime ad 1 ed al Blu coordinata prossima allo zero, ma questo vuol dire che la somma delle coordinate del colore deve essere maggiore di uno mentre noi nel nostro modello abbiamo che la somma delle tre coordinate è 1.
L'eccessiva semplificazione del modello ci ha portato a delle limitazioni, si tratta di limitazioni non facili da superare che mostrano come il trattamento del colore non è cosa semplice.

Nessun commento:

Posta un commento