Colors 颜色插值

Colors 颜色插值,colors,interpolation,polynomial-math,blending,Colors,Interpolation,Polynomial Math,Blending,好的,我在看一个典型的颜色选择器,它看起来像这样: R 255 G 0 B 0 R 255 G 0 -> 255 B 0 R 255 G 255 B 0 R 255 -> 0 G 255 B 0 R 0 G 255 B 0 R 0 G 255 B 0 -> 255 R 0 G 255 B 255 R 0 G 255 -> 0 B 255 R 0 G 0

好的,我在看一个典型的颜色选择器,它看起来像这样:

R 255  
G 0  
B 0  

R 255  
G 0 -> 255  
B 0  

R 255  
G 255  
B 0  

R 255 -> 0  
G 255  
B 0  

R 0  
G 255  
B 0  

R 0  
G 255  
B 0 -> 255  

R 0  
G 255  
B 255  

R 0  
G 255 -> 0  
B 255  

R 0  
G 0  
B 255  

R 0 -> 255  
G 0  
B 255  

R 255  
G 0  
B 255  

R 255  
G 0  
B 255 -> 0  

R 255  
G 0  
B 0  
如果我们只处理高度饱和的颜色,则混合模式的行为如下:

R 255  
G 0  
B 0  

R 255  
G 0 -> 255  
B 0  

R 255  
G 255  
B 0  

R 255 -> 0  
G 255  
B 0  

R 0  
G 255  
B 0  

R 0  
G 255  
B 0 -> 255  

R 0  
G 255  
B 255  

R 0  
G 255 -> 0  
B 255  

R 0  
G 0  
B 255  

R 0 -> 255  
G 0  
B 255  

R 255  
G 0  
B 255  

R 255  
G 0  
B 255 -> 0  

R 255  
G 0  
B 0  
是否可以定义一个插值函数f,该函数取0到1之间的值,并在该光谱上产生一种颜色,其中0和1对应于上述光谱的左侧和右侧?我只关心高度饱和的颜色,一种成分总是255。。另外,我注意到这个图案从R到G再到B混合。然而,青色、品红色和黄色之间是否也有类似的混合功能?虽然这是不正确的,但如果f0产生青色,f1产生黄色,那么f0.5将产生一种绿色,类似于混合两种颜料时可能得到的颜色


我希望这是有道理的。请随时让我澄清任何事情。谢谢

介绍了稀缺的CSS3 web的HSL,并包括一个简单的HSL->RGB实现。

HSL在某些情况下可能比RGB更好,但在视觉上是最好的。这在计算上比较昂贵,但您可以将其用作中间步骤。标准插值函数始终为:

C(x) = (1.0 - x) * color_1 + x * color_2, where x in (0.0, 1.0)
您希望对每个组件执行此操作,其中红色、绿色和蓝色或色调饱和度和值

其中,每个组件可以在0.0到1.0之间标准化,也可以在0.0到255.0之间直线化

使用RGB值时,中间结果可能不是您希望在视觉上实现的结果。然而,数值结果应始终保持一致。换言之,R G和B值应从起始编号平滑移动到结束编号。然而,在视觉上,这可能会导致一些未着色的灰色,这就是HCL发光的地方


查看教程,我将在其中深入了解。

欢迎来到StackOverflow!我已经为您添加了图像。希望有帮助。谢谢!太快了!也许会有帮助。你想要的0-1范围是0-360度。@Pod:这正是他需要的-应该是答案而不是评论。是的,没错!现在,有没有一个更像电磁波谱的混合方案?酷!是的,看起来我在HSL中的函数只是从最小到最大的色调,而饱和度保持不变。然而,有没有一个方案更接近于罗伊格比夫的电磁频谱?