您没有清楚地说明为什么结果令人失望,所以我假设这意味着您获得的颜色过渡不如您预期的那么好。
您的一般方法似乎是正确的,也许您只是缺少一些细节,所以我会用不同的方式重写它。设color1
和color2
为三元组 (R, G, B),其中 R、G、B 中的每一个都在 [0, 1] 范围内。如果不是这种情况,则除以 255(如果这是您的情况的限制),然后再乘以 255。让我们从 过渡到s
的步数,这里我包括在初始帧中,但不包括最后一帧。在步骤,你有这样的价值。与您通过执行获得框架中的颜色。现在你可能想乘以255。color1
color2
s
color1
color2
k
p
p = (s - k)/s
p
k
color = p * color1 + (1 - p) * color2
color
此描述的伪代码是:
color1 = (R1, G1, B1)
color2 = (R2, G2, B2)
s = N
for k = 0 to s: # s + 1 steps, according to the description
p = (s - k) / s
color = (p * color1) + ((1 - p) * color2)
请注意,at k = 0
you have onlycolor1
和 at k = s
you get only color2
。如您所见,它与您发布的更多详细信息相似。请注意,这里我将 R、G、B 中的每一个乘以p
。
下面是一些分别从黄色过渡到蓝色的示例steps = 10, 25, 500
。