Não esqueça que, mesmo se você estiver trabalhando com valores de cores LAB, os valores RGB precisam ser exibidos para mostrá-los na tela. Em algum momento, ele precisa dizer aos pixels vermelho, verde e azul de uma tela o que fazer.
Veja isso em termos RGB, e a causa das bandas é realmente bastante simples.
Pegue um seletor de cores e observe os gradientes, e você notará que as faixas estão em torno dos pontos em que a natureza do gradiente muda:
- No vermelho, é em torno de onde passa de aumentar suavemente o R no RGB para adicionar G para ficar amarelo - em torno de # FF0000 a # FF2500
- No azul, é em torno de onde passa de aumentar suavemente o B no RGB para adicionar G para tornar-se ciano - entre # 0000FF e # 0025FF
E da mesma forma com as parcelas inferiores, adicionando amarelo ao branco: são essencialmente três gradientes unidos. Usando o gradiente vermelho como exemplo:
- é # 000000 a # FF0000 (aumentando o brilho em termos de HSB, aumentando o canal vermelho em RGB)
- depois # FF0000 para # FFFF00 (alterando a matiz em termos de HSB, aumentando o canal verde em RGB)
- depois # FFFF00 para #FFFFFF (alterando a saturação em termos de HSB, aumentando o canal azul em RGB)
Portanto, sempre haverá uma junção visível, se é assim que é configurada. Como regra geral, onde a precisão e a linearidade são o objetivo principal, é melhor manter um gradiente simples, variando um recurso constantemente (a menos que você queira fazer faixas, por exemplo, em alguns tipos de varredura cerebral).
Dito isso , se você estiver determinado a percorrer um espectro mais amplo (parece bom), eu começaria a adicionar o segundo canal antes que o primeiro fosse concluído, formando uma seção de ponte entre os gradientes ou tendo um ligeira curva de forma S inversa à taxa na qual o segundo canal é adicionado (provavelmente ambos).
Então, em vez de:
000000 a # FF0000, 100% preto a 100% vermelho
FF0000 a # FFFF00, 100% vermelho a 100% amarelo
FFFF00 a #FFFFFF, 100% amarelo a 100% branco
... pode ser (apenas palpites em cima da minha cabeça, vai precisar de ajustes):
000000 a # E90000, 100% preto a vermelho brilhante
E90000 a # FF2500, (PONTE CURTA) vermelho brilhante (escuro) a vermelho brilhante (ligeiramente laranja)
FF2500 a # FFE900, vermelho brilhante (ligeiramente laranja) a amarelo brilhante (ligeiramente laranja)
FFE900 a # FFFF25, (PONTE CURTA) amarelo brilhante (ligeiramente laranja) a amarelo brilhante (claro)
FFFF25 a #FFFFFF, amarelo brilhante (claro) a 100% branco
... depois ajuste as curvas de cada seção de acordo com o gosto :-)
Edit: Aqui está uma demonstração da sugestão de "cortar os cantos". Não é perfeito - é bastante não refinado, apenas algo que reuni a olho em alguns minutos usando a ferramenta de mistura do Illustrator (objetos não misturados na parte inferior para mostrar os pontos de cor). Cada segmento do gradiente entre cada ponto de cor é 100% linear, enquanto você provavelmente desejaria algo mais arredondado - e, como resultado, se você olhar com cuidado, poderá identificar faixas.
Os resultados variam naturalmente entre os monitores: no meu monitor 'bom', é suave; no monitor 'ruim' que eu uso para verificar a resiliência das imagens da web (onde as bandas originais não aparecem muito claramente), as laranjas sempre aparecem moderadas, fazendo com que os ares vermelho e amarelo pareçam mais brilhantes que a laranja que se junta, enfatizando demais o vermelho e áreas amarelas - mas você ainda pode ver que a 'borda' das bandas originais desapareceu em grande parte.
De qualquer forma, em comparação com os gradientes originais, você pode ver claramente a diferença. (quanto à matemática por trás disso - não faço ideia, não sou matemático, mas espero que isso ajude a identificar o problema e a solução)
A outra vantagem é que você é livre para usar mais a transição preta> mais clara de canal.
Ou a mesma idéia em um cubo de cores RGB (perdoe a grosseria, ele pretende ser demonstrativo e não preciso ...):
Isso mostra provavelmente mais claramente o que eu quis dizer quando disse que o gradiente de exemplo pode ser aprimorado, tornando as transições dos segmentos principais para os segmentos de corte de canto mais suaves do que angulares.