HSL color (Português)

O sistema de cor HSL é baseado em como os humanos percebem as cores e, como tal, faz várias transformações de cor muito simples esteticamente agradáveis.

  • Hue descreve onde o espectro de cor está. Conforme cresce, uma cor irá transformando na seguinte ordem: vermelho, laranja, amarelo, verde, verde-azulado, azul, violeta, roxo, magenta e vermelho.
  • Saturation denota quanto a cor é vibrante. Varia do cinza à cor pura.
  • Lightness é quanto clara ou escura a cor é. No meio é cinza (se a saturação for baixa) ou uma cor (se a saturação for alta).

Aqui esta a função que Taehl escreveu para converter HSL em RGB:

-- Converte HSL para RGB. (entradas e saídas entre: 0 - 255)
function HSL(h, s, l)
	if s <= 0 then return l,l,l end
	h, s, l = h/256*6, s/255, l/255
	local c = (1-math.abs(2*l-1))*s
	local x = (1-math.abs(h%2-1))*c
	local m,r,g,b = (l-.5*c), 0,0,0
	if h < 1     then r,g,b = c,x,0
	elseif h < 2 then r,g,b = x,c,0
	elseif h < 3 then r,g,b = 0,c,x
	elseif h < 4 then r,g,b = 0,x,c
	elseif h < 5 then r,g,b = x,0,c
	else              r,g,b = c,0,x
	end return math.ceil((r+m)*256),
	           math.ceil((g+m)*256),
	           math.ceil((b+m)*256)
end

Ela pode ser usada, por exemplo, como: love.graphics.setColor(HSL(150,100,200)) (isso colorirá as coisas com um azul acinzentado).

Outros Idiomas