Это был довольно запутанный вопрос
Я хотел создать функцию, которая могла бы создавать градиент между любым количеством цветов, в lua на основе определенного процента шага между цветами.
Это работает для двух цветов,
graident.between_two = function(percent,colorA,colorB)
local r, g, b ,alpha = colorA.r-(colorA.r-colorB.r)*percent,
colorA.g-(colorA.g-colorB.g)*percent,
colorA.b-(colorA.b-colorB.b)*percent,
colorA.alpha-(colorA.alpha-colorB.alpha)*percent
return {r=r,g=g,b=b,alpha=1}
end
Но когда я попытался сделать то же самое с несколькими цветами, я не мог понять, как я могу получить это из работы
local graident = {}
graident.between_two = function(percent,colorA,colorB)
local r, g, b ,alpha = colorA.r-(colorA.r-colorB.r)*percent,
colorA.g-(colorA.g-colorB.g)*percent,
colorA.b-(colorA.b-colorB.b)*percent,
colorA.alpha-(colorA.alpha-colorB.alpha)*percent
return {r=r,g=g,b=b,alpha=1}
end
graident.inf = function(value,colors)
-- the total amount of colors
local totalcolors = #colors-1
local tc = #colors
-- int per graident
local gam = 1/(totalcolors+1)
--print(cir)
-- local color
local color = {}
for i=1,totalcolors do
local min , max = (i-1)/totalcolors , (i)/totalcolors
local imin , imax = i , i+1
if imin == 0 then imin = 1 end
--print("===========")
--print(imin .. " min : " .. min .. " \n" .. imax .. " max : " .. max)
-- if within value
if value >= min and value <= max then
-- get value between this section
local value2 = (value/gam)/tc
--print("color-> : " .. value2)
color = graident.between_two(value2,colors[imin],colors[imax])
end
end
--print("===========")
--print(" r " .. color.r .. " g" .. color.g .. " b " .. color.b )
return color
end
graident.newColor = function(r,g,b,alpha)
return {
r=r,
g=g,
b=b,
alpha=alpha,
}
end
вышеупомянутая функция не работает для получения значений между предоставленными цветами.
желаемая функция сможет получить значения между X количеством цветов