29 lines
693 B
Lua
29 lines
693 B
Lua
local function HsvToRgb(h, s, v)
|
|
|
|
s = s / 100.0
|
|
v = v / 100.0
|
|
h = h / 60.0
|
|
|
|
local i = math.floor(h) % 6
|
|
local f = h - math.floor(h)
|
|
local p = v * (1.0 - s)
|
|
local q = v * (1.0 - f * s)
|
|
local t = v * (1.0 - (1.0 - f) * s)
|
|
|
|
local r, g, b = 0, 0, 0
|
|
|
|
if i == 0 then r, g, b = v, t, p
|
|
elseif i == 1 then r, g, b = q, v, p
|
|
elseif i == 2 then r, g, b = p, v, t
|
|
elseif i == 3 then r, g, b = p, q, v
|
|
elseif i == 4 then r, g, b = t, p, v
|
|
else r, g, b = v, p, q
|
|
end
|
|
|
|
r = math.floor(r * 255 + 0.5)
|
|
g = math.floor(g * 255 + 0.5)
|
|
b = math.floor(b * 255 + 0.5)
|
|
|
|
return string.format("#%02x%02x%02x", r, g, b)
|
|
end
|
|
return HsvToRgb
|