Misturando duas cores "naturalmente" em javascript
O problema: Eu quero misturar duas cores em javascript e obter a cor do resultado. Há muita pergunta semelhante no SO, no entanto, não encontro nada que funcione corretamente. Eu sei que misturar duas tintas de cores diferentes (pigmentos) e luzes dará resultados muito diferentes (http://en.wikipedia.org/wiki/Color_mixing).
Aqui estão as perguntas e soluções sugeridas que já vi e tentei implementar:
1: Misturando dois vetores de cor RGB para obter o resultado
Então, misturando cores em RGB. Eu o implementei e, em alguns casos, ele funciona em alguns casos.
Exemplo de trabalho: Misturared
comyellow
->orange
. Ótimo!
http://jsbin.com/afomim/1/edit
Não está funcionando exemplo: Misturablue
comyellow
->gray
. Não é tão bom! :)http://jsbin.com/afomim/5/edit
Eu sei que na mixagem RGBblue
comyellow
nunca farágreen
e eu entendo porque.
Nós não encontraremos a resposta aqui, vamos avançar.
2: Adicionando Cores (Cores) Juntas como Tinta (Azul + Amarelo = Verde, etc)
Vamos tentar trabalhar com valores CMYK, conforme sugerido nesta discussão. Misturacyan
comyellow
dágreen
:
http://jsbin.com/igaveg/1/edit
mas misturandoblue
comyellow
resulta emblack
.
http://jsbin.com/igaveg/2/edit -> Não funciona!
3: Como misturar cores "naturalmente" com c #?
Uma pergunta muito parecida. A resposta mais votada sugere a conversão de cores em LAB, e essa solução parece promissora.
Então eu converti minhas cores para LAB. O algoritmo de conversão está correto, eu testei!
http://jsbin.com/oxefox/1/edit
Agora eu tenho as duas cores no LAB, mas como misturá-las?
NOTA Eu sei que provavelmente não vou encontrar um algoritmo que mistureblue
comyellow
e vai dar o perfeitogreen
, mas espero poder gerar algo parecido com o verde :)