内插RGB颜色

时间:2010-08-10 14:49:47

标签: javascript html5 canvas

我正在努力解决如何插入颜色,给定start_timeend_timestart_colorend_color。为简单起见,这里有一个例子,说明我只想用红色组件来做这件事:

start_time = 0
end_time = 1
start_color = F //base 16 ftw
end_color = 0

我可以看到时间.5,red_out应该是8.这将是从亮红色变为黑色的中途。

它是time_elapsed * start_color吗?但是如果它从另一个方向逐渐消失,从黑色变为鲜红色呢?这是我感到困惑的地方。

3 个答案:

答案 0 :(得分:1)

对于每个颜色组件,您必须使用以下公式(没有什么神奇的):

color = time_elapsed * (end_color - start_color) / (end_time - star_time)

答案 1 :(得分:1)

另一种方式似乎很简单,如果您认为在时间t(其中t的范围从0到1),则通道的值为:

start + t * (end - start)

这样,如果结束值小于起始值(如红色 - >黑色情况),则end - start子句为负,因此随着时间的增加值根据需要减少

在边缘情况下,也可以看到

t = 0   =>   start + 0 = start
t = 1   =>   start + (end - start) = end

根据需要。

编辑:关于这种表示的好处在于它清楚地说明了如何修改衰减率。只要t的值从0开始并最终达到1,它就不一定必须线性修改。例如,如果您希望插值开始缓慢并加速到最后,则可以使用t 2

答案 2 :(得分:1)

interpolated_color_component = (current_time - start_time) / (end_time - start_time) * (end_color_component - start_color_component) + start_color_component