venerdì 16 novembre 2007

I colori non sono altro che numeri

Non posso postare sul blog il codice del programma, anche perché ho controllato ed è scritto in Visual Basic, che è facile ma funziona solo con Windows, dopo aver fatto regolare setup. Potrei riscriverlo in C++, che poi si può compilare su qualsiasi macchina, ma lo farò solo se esplicitamente richiesto. Intanto, vogliamo spiegare come si calcola il valore del codice del colore a sei cifre.

Facciamo la fatica di aprire una di quelle finestre che si usano per scegliere i colori (in Windows, ad esempio, quella per personalizzare la tavolozza di Paint), e facciamo in modo di vedere la tavola di tutti i colori sfumati. Ogni colore (dei 256^3 che vengono visualizzati) è rappresentato da una combinazione di rosso, verde e blu. Il codice a sei cifre #xxxxxx che rappresenta il colore non è altro che la giustapposizione dei valori esadecimali corrispondenti alla quantità di rosso (due cifre più significative, quelle a sinistra), di verde e di blu. Ciascuno dei colori primari può assumere il valore da 0 a 255, appunto due cifre esadecimali (256=16^2). Se vogliamo il codice esadecimale di un colore fatto, ad esempio, da 120 Rosso, 50 Verde, 10 Blu (e che io definirei "un marrone un po' rossastro"), convertiamo singolarmente in esadecimale i tre valori. Abbiamo 120dec = 78hex, 50dec = 32hex e 10dec = 0Ahex. Il codice da usare in HTML è, alla fine, #78320A, dove il diesis indica all'interprete che il numero è in formato esadecimale (se usassimo, non so, Assembler, gli diremmo 0x78320A). La conversione di un numero da decimale ad esadecimale di due cifre è banale: basta dividere per 16 il numero una volta, ed il valore è il risultato della prima cifra (ovviamente convertito in esadecimale, dunque se esce 12 scrivo C); il resto, pure convertito in esadecimale, è la seconda cifra (quella meno significativa).
I sistemi operativi hanno anche un altro modo di indicare il colore, oltre a quello (decisamente più naturale) di darne le componenti. È il sistema a Tonalità, Saturazione, Luminosità, che è più comodo per disegnare gradienti di colori, ma più complesso da trattare in astratto. Appena ho un po' di tempo lo studio bene (per ora ho sviscerato solo la parte relativa a tonalità) e vi aggiorno, cari lettori.
Comunque, questo dimostra che anche i colori non sono altro che numeri, e tra l'altro interi.

1 commento:

Anonimo ha detto...

... ma tutto questo... è bellissimo! :O
Non ci avevo mai pensato.