Recent Changes - Search:

Pagine di servizio

Gruppi

Pagine in allestimento

Strumenti

Domini correlati

PmWiki

pmwiki.org

edit SideBar

Miscele numeriche di tinte e colori

URL: www.pforster.ch/Colori/ColorCalc/Mischi/ColorCalc-Mischi.html

P. Forster
a cura di Daniela RŘegg

1.  Introduzione


Toro di Lascaux
17.000-15.000 a.C.

Colori e tinte (inchiostri) sono mescolabili. Secondo le tonalitÓ dei colori usati e secondo la loro relativa quantitÓ si generano nuove tonalitÓ. Il fatto affascina l'essere umano da quando usa dei colori e le regole della mescolanza hanno occupato la mente di innumerevoli artigiani e scienziati.
Per millenni, l'attenzione si concentr˛ sulle miscele di tinte e inchiostri "pigmentosi", fino a quando Sir Isaac Newton 1642-1727 scoprý le leggi della mescolanza e la frazione della luce.


Esperimento prisma
di Sir Isaac Newton

Si not˛ che dalla mescolanza di luci (irradiante, additivo) risultavano altre tonalitÓ rispetto alla mescolanza pigmentosa di tinte / inchiostri (riflessive, sottrative) dello stesso colore. L'esempio lampante fu il verde, risultante in seguito a miscela equa pigmentosa di giallo e blu, mentre la miscela equa luminosa fornisce un grigio.


Stampa a colori

Ai tempi dell'industrializzazione la domanda si accentu˛; prima con le arti grafiche e la stampa a colori (pigmentosa) e poi con gli schermi televisivi a colori e dei computer (luminosa): per queste tecniche necessitano descrizioni numeriche riproducibili.


Monitore LCD

All'inizio del '900 la CIE standardizz˛ la misurazione e la riproduzione di colori, proponendo i sistemi CMYK (pigmentoso) per la tipografia e RGB (luminoso) per l'illuminazione, il tutto basato su un modello generale CIE*Lab. Gli artigiani proseguirono con l'usare il tradizionale modello RYB.

Per la descrizione numerica furono stilate tante notazioni, tutte con i loro pregi e difetti. Le pi¨ note sono CIE*Lab, Hex#, RGB, CMYK, HSV, HSB, HSL, ... . Complicano i calcoli, ma sono tutte trasformabili tra di loro. Sul web si usa quasi esclusivamente la notazione Hex#, anche se sono direttamente usabili anche le notazioni rgb(), cmyk() e hsl().
Per praticitÓ personale ho aggiunto una mia notazione HySL che rispecchia le necessitÓ di calcoli pigmentosi ed Ŕ facilmente trasformabile da e a HSL.

◦⦆─────⦅◦

1.1  Paragone tra miscele pigmentose e luminose


Esempio miscela
pigmentosa / luminosa

La "miscela" di colori sullo schermo non pone grandi problemi: basta calcolare la media dei valori esadecimali hex# o RGB.

La miscela di tinte pigmentose di solito fornisce tutt'altre tonalitÓ, che sono difficilmente o per niente esattamente prevedibili.

Esempio: la miscela di tinte blu e giallo su carta fornisce un colore verde (miscela pigmentosa o sottrattiva).
La miscela degli stessi colori luminosi, p.es. sullo schermo, fornisce invece un grigio, perchŔ per la media di blu #0000ff e di giallo #ffff00 risulta un grigio medio #808080 (miscela luminosa o additiva).


◦⦆─────⦅◦

1.2  Calcolatrice di miscele cromatiche

Lavorando spesso sullo schermo, mi disturbava il fatto di non poter adoperare delle miscele e degli accordi pigmentosi per cui ero alla ricerca di un algoritmo di semplice applicazione per poter simulare all'incirca le tonalitÓ pigmentose.

Di conseguenza mi sono messo a stilare una calcolatrice che svolge questo compito. Il risultato si trova di fianco.

Provate con diverse tinte dopo aver azionato "PopUp..."!
(doppio clic, copia, incolla)

Y #ffff00 | Yo #ffe200 | O #ffaa00 | Or #ff5900 |
R #ff0000 | Rv #de0052 | V #7109aa | Vb #2618b1 |
B #1240ab | Bg #086ca2 | G #00cc00 | Gy #bdf400 |

Istruzione d'uso: PopUp:

  • Cliccare sul tasto "PopUp...": appare una finestrina separata con la calcolatrice funzionante.
  • digitare o incollare il valore esadecimale hex# di un colore in una casella gialla e poi quello del secondo nell'altra.
  • Leggere il risultato ed ev. copiare (doppio clic).
  • Cliccare sul tasto ▼ per far apparire la miscela luminosa.
  • Cancellare i valori e colori cliccando sugli tasti "X".

◦⦆─────⦅◦

1.3  Realizzazione della calcolatrice

I passi per realizzare la calcolatrice sono stati i seguenti:

  • trovare e approssimare una funzione di tinte "pigmentose" (scala RYB) in relazione alla nota banda di colori luminosi (spettro RGB).
  • trasformare in tinte pigmentose in due colori luminosi da miscelare (#hexRGB → HSL → HySL)
  • sviluppare le funzioni per la miscela pigmentosa e applicarle numericamente (HySL1, HySL2ěHySL)
  • ritrasformare la miscela pigmentosa cosý dedotto in colori luminosi applicabili sullo schermo (ěHySL → °HSL → °#hex)
  • aggiungere come paragone la miscela luminosa (°#hex = f(#hex1,#hex2))
(ě significa media e miscela, 1&2 colori da mescolare, RGB, #hex, HSL e HySL sono modelli cromatici e/o sistemi di notazione).

Confesso che sono incorso in diversi grattacapi e ho impiegato molto tempo (come programmatore dilettantistico) per sviluppare un motorino accettabile.

Il resto di questo scritto non Ŕ essenziale per capire e usare la calcolatrice. Spiega agli interessati le premesse e i dettagli per la sua realizzazione.

2.  Spettro luminoso e pigmentoso


Spettro luminoso RGB

Ruota RGB

Per poter calcolare delle miscele cromatiche servono dei modelli e dimensionamenti:

Per le miscele luminose Ŕ praticissimo il modello RGB nella notazione esadecimale #hex. Si basa sullo spettro RGB riportato ovunque nel web.


Scala RYB
pigmentosa

Ruota RYB
pigmentosa

Per le miscele pigmentose serve invece di pi¨ un modello polare (circolatorio). La banda dei colori Ŕ semplicemente disposto su un cerchio.
Per i calcoli delle miscele pigmentose mi sono basato sul modello polare HSL e sulla scala di Petr Stanicek, usato p.es. da ColorSchemeDesigner. Ho battezzato il tutto HySL (y per yellow = giallo).
Per le conversioni reciproche tra HSL e HySL basta la trasformazione tra H e Hy (scale della tonalitÓ in gradi ░), saturazione S e luminositÓ L rimangono intanto identiche.

◦⦆─────⦅◦

2.1  Conversioni tra scale di tonalitÓ


Per raggiungere una funzione che connetta H░ e Hy░ ho paragonato i valori di HSL con i valori empirici di Stanicek.

Risulta una curva sulla quale si pu˛ determinare tutti valori a vicenda: p.es. H=222░ → Hy=240░ oppure Hy=120░ → H=60░. Ho poi approssimato questa curva con una funzione regressiva polinomiale, predisposta all'uso in calcoli.
La convertitrice facilita il lavoro: digitando un valore tra 0...360░ in una delle caselle appare il valore congruente nell'altro sistema di misurazione.

3.  Calcolo di miscele pigmentose

Per il calcolo di miscele cromatiche pigmentose mi servo del modello cilindrico HSL.


  • la periferia a metÓ altezza del cilindro Ŕ formata dalla scala delle tonalitÓ → H, di solito dalla scala RGB luminosa, qui della scala di Stanicek pigmentosa RYB in gradi da 0...360░.
  • verso l'interno del cilindro diminuisce la saturazione → S (cromaticitÓ) e aumenta l'ingrigimento fino al relativo grigio nel centro, misurato in percento cromatico da 100...0%.
  • in verticale aumenta la luminositÓ → L in percento da 0% o nero fino a 100% o bianco. Sull'altezza di 50% (a metÓ) sulla periferia si trovano le tinte pure (nŔ chiarite, nŔ scurite, nŔ ingrigite).

Dimensioni HySL

Scale tonali

Visto che il modello HSL si basa sulla scala tonale RGB, l'ho modificato in HySL cioŔ in scala di tonalitÓ pigmentosa RYB secondo Stanicek. Le scale per la saturazione S e la luminositÓ L rimangono uguali.

◦⦆─────⦅◦

3.1  Descrizione del calcolo


Intuitivamente si deduce che i valori Hy, S e L di un miscela sono le medie (ě) dei valori delle due tinte. Questo Ŕ anche plausibile per i valori delle tonalitÓ Hy e delle luminositÓ L ma non per la saturazione S, come vedremo poi.

Esempio: la miscela di giallo Hy=120░ e di blu Hy=240░ fornisce una tinta di tonalitÓ media (120+240   /2) di °Hy=180░ che corrisponde al verde.
La luminositÓ del giallo sia L=50% e del blu di L=30%, la media luminosa °L risulta del 40%.
Se la saturazione del giallo Ŕ S=100% e del blu mettiamo S=70%, la media di saturazione risulta del °S=85%.

Per il calcolo della saturazione non basta l'intuito: l'esperienza ci insegna che pi¨ si distanziano due tinte da mescolare, pi¨ diventano grigiastre; a una distanza di 180░ non hanno pi¨ tonalitÓ, perchŔ la saturazione Ŕ diventata zero.
Serve allora conoscere la distanza tra le due tonalitÓ che Ŕ semplicemente la loro differenza. Una funzione trigonometrica (coseno → cos) della metÓ dell'angolo di differenza) fornisce il coefficente di diminuzione della saturazione (1 a 0░ e 0 a 90░ di metÓ differenza angolare).
L'illustrazione cui sopra fa vedere i dettagli geometrici e numerici di una miscela.

Noto il calcolo, si pu˛ stilare una calcolatrice. Una relativa calcolatrice di dimostrazione si trova di fianco. Visto che non si usa fuori contesto, non l'ho elaborata pi¨ di tanto.

Esempio: la miscela di giallo Hy=120░ e di blu Hy=240░ fornisce una differenza angolare di 120░ e la metÓ di ▀=60░. Il coseno cos60░=0.5, corrispondente al moltiplicatore per la saturazione media °S=85% dell'esempio di prima. Risulta quindi il valore reale per la saturazione mS=°S*cos▀: mS =85*0.5 =43%.

Riassunto: Il risultato di un miscela:

  • HySL(giallo,S100%,L50%) ě HySL(blu,70%,30%) Ŕ quindi
  • RySL(°H,mS,°L) = HySL(180░,43%,40%) un verde grigiastro leggermente scurito.

4.  Notazioni luminose ⇄ pigmentose

Oltre alla trasformazione di scale (luminose⇄pigmentose) e al calcolo stesso della miscela pigmentosa ci sono da sistemare le diverse notazioni dei colori sul web e le loro conversioni a vicenda.
Per il mio obiettivo mi sono limitato alle tre notazioni: esadecimale #, RGB e HSL / (HySL) per praticitÓ e frequenza d'uso.


Algoritmo miscela pigmentosa

Per le notazioni luminose esistono tanti programmini di conversione pronti all'uso. Ho concatenato per il mio scopo i pi¨ idonei combinandoli con HSL⇄HySL.
Risulta un algoritmo per la miscela luminosa come spiegato nell'immagine di fianco.

Siccome non li uso solo per delle miscele ma anche per altre applicazioni, ho stilato due algoritmi:

  • #Hex → RGB → HSL → HySL: funzione Hex2HySL
  • HySL → HSL → RGB → #Hex: funzione HySL2Hex

I programmini sono scritti in JavaScript e DOM (Document Object Model), divulgatissimi e integrabili senza problemi in html, linguaggio abituale del web.
Per conoscere subito le angolazioni delle tinte pigmentose armoniche ho aggiunto il calcolo per le angolazioni dal colore originale Hy di 90, 120, 180, 240 e 270░.
Cliccando sul tasto "PopUp..." appare una finestrina staccata con la convertitrice funzionante. Provare!

Istruzione d'uso del PopUp: digitare in una casella bianca un valore sensato. Azionare il tasto    (tabulatore) sulla tastiera: appaiono gli altri valori e il colore corrispondente. Poi modificare a piacere qualsiasi valore.

5.  Annessi

5.1  Modelli RYB e RGB


Superfice modello cilindrico RYB / HySL


Superfice modello sferico RGB / HSL


5.2  Sitografia (PopUps, Javascripts)

JavaScripts (programmini essenziali integrati):

  • Conversione HSL-#Hex: function hsl2hex(h,s,l) → return hex ; function hex2hsl(hex) → return h, s, l;
  • Conversione H-Hy: function H2Hy(H) → return Hy ; function Hy2H(Hy) → return H;
  • miscela pigmentosa: function PigmentMean(Hy1,Sy1,Ly1,Hy2,Sy2,Ly2) → return hyo, dhy, cosdhy, syo, lyo;

5.3  Commenti

alla pagina: Miscele numeriche di tinte e colori. Se non c'Ŕ una relativa casella, cliccare sul titolo.

Commento 
Autore 
Enter code 254



Edit - History - Print - Recent Changes - Search
Page last modified on April 03, 2014, at 11:36 AM