使用“progress”值进行颜色混合。

我很久以前创建了这段代码,其中我提供了起始颜色、结束颜色和步数。返回的是起始和结束颜色之间的颜色表(数组)。

现在我想将步数转换为“进度”。请看下面这个例子:

s,e = {255,255,255},{0,0,0}

getColorSteps(s,e,0)
> 255, 255, 255, 255

getColorSteps(s,e,0.5)
> 127.5, 127.5, 127.5, 127.5

getColorSteps(s,e,1)
> 0, 0, 0, 0

我只是不确定该怎么做...

点赞
用户752976
用户752976

也许可以使用线性插值?

function getColorSteps(s, e, interp)
    return {
        (e[1]-s[1]) * interp + s[1],
        (e[2]-s[2]) * interp + s[2],
        (e[3]-s[3]) * interp + s[3],
        (e[4]-s[4]) * interp + s[4]
    }
end

但是这只适用于在对应的颜色值i中,e[i] > s[i]。因此每次您可能需要使用math.max(e[0], s[0]) - math.min(e[0], s[0])或类似的方法。

哦,我宁愿使用'a'和'b'而不是start/end;但这可能只是我的偏好。

2012-12-01 19:25:35