Como um palpite é pontuado
Todo o palpite no Color Hunch é pontuado pela distância entre a tua cor e a verdadeira — não nos controlos que mexeste, mas em quão diferentes as duas parecem a um olho humano. A medida é CIEDE2000, e esta página explica o que isso significa e porque a distinção importa.
Importa porque a alternativa óbvia erra de um modo que o jogador sente.
Porque a distância do controlo é a medida errada
A forma fácil de pontuar um palpite é comparar as posições dos controlos: quanto o teu matiz dista do matiz alvo, a tua saturação da dele. É uma linha de código e produz um jogo em que as pessoas deixam de confiar sem o dizer.
A razão: movimentos iguais de um controlo não são mudanças iguais para o olho. Dez graus de matiz gritam nos verdes e são quase invisíveis nos azuis profundos. Mexe um pouco no brilho de uma cor clara e toda a gente vê; mexe o mesmo numa escura e quase ninguém vê. Pontuar por distância de controlo castiga chegar pelo lado errado de um matiz e premeia um resultado que claramente parece errado.
O que é de facto uma diferença de cor
A diferença de cor mede-se colocando as duas cores num espaço construído para que a distância nele corresponda à diferença percebida, e medindo depois essa distância. Esse número chama-se ΔE — delta E, em que o E vem de Empfindung, «sensação» em alemão.
A primeira fórmula assim, CIE76, era uma reta entre dois pontos no espaço Lab. Foi um avanço real e tinha fraquezas conhecidas: exagerava diferenças em cores saturadas e subestimava-as nos azuis. CIEDE2000 é a correção: acrescenta termos de peso para luminosidade, croma e matiz, mais um termo de interação para a zona azul, onde a fórmula anterior era pior.
O que o Color Hunch faz com isso
Quando envias um palpite, a cor que ajustaste e a cor que pertence ali são convertidas de sRGB para Lab, e o CIEDE2000 dá a distância entre elas. Essa distância torna-se a pontuação da ronda, e as estrelas do nível saem das pontuações das suas rondas.
O número que aparece é uma percentagem de proximidade, não o ΔE. É propositado: um ΔE de 4,2 não te diz nada sobre o que fazer, enquanto «Proximidade 87» diz o mesmo de forma comparável com a tua tentativa anterior. O ΔE fica onde deve, dentro da pontuação.
Porque a mesma fórmula corre em todo o lado
A app, o servidor do jogo e este site pontuam com a mesma implementação, verificada com os mesmos valores de referência. Um palpite que dá 87 no navegador dá 87 na app.
Parece óbvio e é fácil de falhar: três bases de código em três linguagens afastam-se se nada as mantiver juntas. Aqui isso é um teste com pares de entrada fixos e saídas esperadas — se um port diverge da referência, a build falha em vez de a classificação ficar sem sentido em silêncio.
O que significam os valores de ΔE
Como guia aproximado, é assim que uma dada diferença aparece a quem tem visão das cores normal, com luz decente:
| ΔE | O que notarias |
|---|---|
| Abaixo de 1 | Indistinguível a olho nu. As duas leem-se como a mesma cor. |
| 1 a 2 | Visível para olho treinado a olhar de perto, em geral lado a lado. |
| 2 a 10 | Percetível de relance. A maioria falaria em dois tons da mesma cor. |
| 11 a 49 | Cores claramente diferentes mas aparentadas — um vermelho e um vermelho algo alaranjado. |
| 50 ou mais | Cores totalmente diferentes. Ninguém as confundiria. |
Estas faixas são uma convenção, não uma especificação: é como a área fala destes números, e fontes diferentes traçam os limites em pontos um pouco distintos. Use como forma de ler uma pontuação, não como norma.
CIEDE2000 é definida pela CIE (Commission Internationale de l'Éclairage) em CIE 142-2001. A implementação aqui segue Sharma, Wu e Dalal (2005), «The CIEDE2000 Color-Difference Formula», o artigo com que a maioria das implementações é verificada e que documenta os dados de teste usados nessa verificação.