The HSL color space is based on how humans perceive color, and as such, makes various aesthetically-pleasing color transformations very simple. Instead of saying how much light a monitor will emit (not a very natural way to think about colors), colors are described in terms of Hue, Saturation, and Lightness.
- Hue describes where in the spectrum the color is. As Hue increases, a color will transition in the following order: Red, orange, yellow, green, cyan, blue, violet, purple, magenta, red.
- Saturation denotes how vibrant a color is. Ranges from grey to pure color.
- Lightness is how light or dark a color is. Ranges from black to white. In the middle is either grey (if low saturation) or a color (if high saturation).
Here is a function Taehl wrote to convert HSL colors to RGB:
-- Converts HSL to RGB. (input and output range: 0 - 255) function HSL(h, s, l, a) if s<=0 then return l,l,l,a 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 (r+m)*255,(g+m)*255,(b+m)*255,a end
This could be used, for example, like this:
love.graphics.setColor(HSL(150,100,200)) (this would color things a greyish blue)
Tiếng Việt –