Golden Ratio – Gere cores únicas com alto contraste

Imagem representando o golden-ratio

No mundo do design e da programação, algumas vezes nos encontramos em desafio bastante complexo: Garantir que as cores utilizadas em um projeto tenham o contraste adequado e sejam visualmente harmoniosas.

Uma técnica interessante para gerar cores únicas e bem contrastantes é o uso da proporção áurea (ou golden ratio). Neste artigo, veremos como essa proporção matemática pode ser aplicada para criar paletas de cores consistentes e equilibradas, com exemplos de código para gerar essas cores automaticamente.

O que é a Golden Ratio?

A proporção áurea, representada pelo número irracional aproximadamente igual a 1.618, é uma constante que aparece em várias áreas da natureza e da arte. Sua principal característica é dividir um todo em partes proporcionais e agradáveis aos olhos, sendo muito aplicada em design, arquitetura e agora, como veremos, na geração de cores.

Em minha opinião, uma das formas mais simples de entender o Golden Ratio é através de um círculo (de onde também obteremos o Golden Angle). Ao “dividir o todo em partes proporcionais”, adquirimos o seguinte formato

Nesta proporção, o ângulo equivale à cerca de 137.508 graus (o que chamamos de “Golden Angle“. Esta perspectiva da teoria também se aplica à outras formas geométricas, como o retângulo

Para gerar cores utilizando a golden ratio, partimos de um valor inicial de matiz (hue) e aplicamos a proporção áurea repetidamente para obter novas cores. Isso ajuda a garantir que cada cor gerada tenha um contraste natural com as anteriores.

Imagem de Universidade da Escola Medial da Carolina do Sul

Como funciona a geração de cores com a Golden Ratio?

Utilizamos o sistema de cores HSL (Hue, Saturation, Lightness), onde a matiz (hue) varia entre 0° e 360°. Para criar uma nova cor, incrementamos o valor de matiz de acordo com a golden ratio, multiplicando o valor por 360 (o total de graus na roda de cores) e ajustando para ficar entre 0 e 360.

Exemplo de código em JavaScript

Neste exemplo, vamos criar uma função em JavaScript que gera uma paleta de cores a partir de uma cor inicial:

function gerarCoresGoldenRatio(corInicial, quantidade) {
const goldenRatioConjugado = 0.61803398875; // Conjugado da Golden Ratio
let hue = corInicial;
const cores = [];

for (let i = 0; i < quantidade; i++) {
hue = (hue + goldenRatioConjugado) % 1; // Calcula a nova cor
cores.push(`hsl(${Math.floor(hue * 360)}, 70%, 50%)`); // Saturação e Luminosidade fixas para contraste
}

return cores;
}

// Exemplo de uso
const cores = gerarCoresGoldenRatio(Math.random(), 5);
console.log(cores); // Saída: ["hsl(220, 70%, 50%)", "hsl(335, 70%, 50%)", ...]

Neste exemplo:

  • goldenRatioConjugado é o valor da razão áurea conjugada (1 / 1.618).
  • Começamos com uma corInicial, que pode ser um número aleatório.
  • A cada iteração, incrementamos o valor da matiz (hue) usando a razão áurea conjugada.
  • A função retorna uma lista de cores HSL com valores ajustados para manter uma boa visibilidade.

Exemplo em Python

Caso prefira usar Python, podemos adaptar o mesmo conceito:

def gerar_cores_golden_ratio(cor_inicial, quantidade):
golden_ratio_conjugado = 0.61803398875
hue = cor_inicial
cores = []

for _ in range(quantidade):
hue = (hue + golden_ratio_conjugado) % 1
r, g, b = colorsys.hsv_to_rgb(hue, 0.7, 0.5) # Saturação e Luminosidade fixas para contraste
cores.append((int(r * 255), int(g * 255), int(b * 255)))

return cores

# Exemplo de uso
cores = gerar_cores_golden_ratio(0.1, 5)
print(cores) # Saída: [(128, 170, 255), (255, 128, 212), ...]

Aqui usamos a biblioteca colorsys, que facilita a conversão do sistema HSV para RGB, usado em muitas aplicações de gráficos e interfaces.

Aplicações Práticas

1. Gráficos e Dashboards

Cores contrastantes são ideais para gráficos onde diferentes séries de dados precisam ser distinguidas facilmente.

2. Interfaces de Usuário

Em interfaces de usuário com vários componentes coloridos, o uso da golden ratio para gerar cores garante uma paleta única e harmoniosa, evitando a monotonia ou o excesso de contraste.

3. Identidade Visual

Ao criar uma identidade visual para um projeto, você pode gerar uma paleta de cores baseada em uma cor inicial (como a cor da marca) e derivar tons complementares para uso em diferentes elementos visuais.

Conclusão

Utilizar a proporção áurea para gerar cores é uma técnica poderosa para garantir harmonia e contraste. É uma abordagem simples e eficaz para criar paletas de cores consistentes, que se encaixam em uma ampla variedade de projetos de design e programação.

Aproveite este código para automatizar a criação de paletas para seus próximos projetos!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima