Misturando cores
Publicado em General
Tudo bem, tem os códigos RGB e tal, mas como que ele efetua as contas ali?
Fui dar uma procurada sobre o assunto, e encontrei.
O cálculo é feito usando o valor médio de cada cor no RGB, ou seja, calcula-se o valor médio dos vermelhos, verdes e azuis das duas cores. Para exemplificar vai ser fácil, que essas duas cores tem só dois valores para calcularmos:
Primeira cor (vermelho):#FF0000 Segunda cor (amarelo) :#FFFF00 Vermelho: --------- primeira cor: 0xFF=255 segunda cor: 0xFF=255 valor médio : (255+255)/2=255 hexa : 0xFF Verde: ------ primeira cor: 0xFF=255 segunda cor: 0x00=0 valor médio : (255+0)/2=127.5 arredondando = 128 hexa : 0x80 Azul: primeira cor: 0x00=0 segunda cor: 0x00=0 valor médio : 0+0/2=0 hexa : 0x00Importante notar que o número tem que ser arredondado. Seguindo ali a sequência dos resultados, acabamos com a cor #FF8000, que é ... laranja! Tchans! :-)
Para automatizar a coisa um pouco mais, eu fiz um pequeno programinha em Ruby para me dar a mistura de duas cores (em hexa) na linha de comando:
c1=ARGV[0].hex c2=ARGV[1].hex red= ((c1>>16).to_f-(((c1>>16)-(c2>>16))/2.0)).round green= (((c1>>8)&0xFF)-(((c1>>8)&0xFF)-((c2>>8)&0xFF))/2.0).round blue= ((c1&0xFF)-((c1&0xFF)-(c2&0xFF))/2.0).round color= ((red<<16)|(green<<8)|blue).to_s(16) puts colorNesse papo de teoria das cores, acabei encontrando no site do Eric Meyer um misturador de cores muito bom, e comecei a pensar como que ele criava todas aquelas cores, com meu conhecimento prévio de como misturar as ditas cujas. Abrindo o fonte da página, tem-se o código JavaScript mas está meio confuso, e eu preferi tentar fazer alguma coisa mais "limpinha".
Acabei fazendo um misturador de cores em Ruby (rodando usando eRuby no Apache), que funciona com menos recursos que o do Meyer, mas já saciou a minha curiosidade sobre a coisa. :-)
O fonte do misturador em Ruby vocês encontram aqui.
Comentários
Comentários fechados.
Sem nenhum comentário.
Artigos anteriores
- Pull requests em modo raiz - sex, 22 de dezembro de 2023, 09:57:09 -0300
- Qual a idade do seu repositório? - ter, 27 de dezembro de 2022, 12:50:35 -0300
- Utilizando ctags em projetos Rails mais recentes - qui, 24 de junho de 2021, 08:23:43 -0300
- Fazendo o seu projeto brotar - seg, 15 de julho de 2019, 08:57:05 -0300
- Learn Functional Programming with Elixir - sex, 02 de março de 2018, 18:47:13 -0300
- Ambiente mínimo - Driver Driven Development - qua, 23 de agosto de 2017, 15:15:03 -0300
- Ambiente mínimo - repositórios de código - dom, 16 de abril de 2017, 13:02:14 -0300
- Ambiente mínimo - terminal e navegador - dom, 02 de abril de 2017, 21:43:29 -0300
- Utilizando muitas gems no seu projeto? - sáb, 29 de outubro de 2016, 11:57:55 -0200
- Desenvolvedores e inteligência artificial - seg, 11 de julho de 2016, 09:09:38 -0300