生成颜色列表,从蓝色到红色,从0%到100%

问题描述:

我想要创建一个颜色列表,红色 - 黄色 - 绿色 - 蓝色,并跨越100个范围相互混合。任何人都有经验这种事情?生成颜色列表,从蓝色到红色,从0%到100%

编辑:好吧,RGB实际上。任何语言都可以。我只需要这个算法。

+1

是的!我推荐[蛋彩画](http://en.wikipedia.org/wiki/Tempera)或[水粉画](http://en.wikipedia.org/wiki/Gouache),它们最容易混合并且是水溶性的。 [石油](http://en.wikipedia.org/wiki/Oil_paint)在我的经验中是最准确和可预测的,但混合时,松节油的恶臭会非常烦人。 – 2010-09-04 13:14:41

+0

...并且如果它不够清楚,我想说的是您至少应该指定一种编程语言或平台,一个颜色空间(RGB?HSV?CMYK?)并添加更多相关标签: P – 2010-09-04 13:19:18

简单的嵌套RGB循环不会生成您的红黄蓝绿渐变。如果这真的是你特别想要的东西,那么你应该知道一点的色轮:

    red 
        | 
      magenta__ | __yellow 
        \|/ 
        __/|\__ 
       blue | green 
        | 
        cyan 

这实际上是一个HSV色轮工作得非常好理解加色。据此,通过混合红色和绿色就会变黄。所以,对于你的渐变:

// in javascript: 
function cssColor (r, g, b) { 
    return 'rgb('+r+','+g+','+b+')'; 
} 

var colors = []; 
// Start with solid red: 
var r = 255; 
var g = 0; 
var b = 0; 
// From red to yellow: 
for (var g=0;g<=255;g++) colors.push(cssColor(r,g,b)); 
// From yellow to green: 
for (var r=255;r>=0;r--) colors.push(cssColor(r,g,b)); 
// From green to blue: 
for (var b=0;b<=255;b++,g--) colors.push(cssColor(r,g,b)); 

这给你一个768色的数组。如果您使用的每个第八颜色,你应该得到的大约100个颜色的排列:

var subColors = []; 
for (var i=0;i<colors.length;i++) { 
    if (i%8 == 0) subColors.push(colors[i]); 
} 

不管怎样,利用这些知识,你可以得到你想要的任何梯度。

3个嵌套循环。 循环一次在1个R到n 一次循环从1克至ň 一次循环b上从1到n

应该给你3^n或使颜色 -

使用HSV色彩空间为您颜色(红色为H = 0,S = V = 1,和蓝色是H = 240,S = V = 1),线性内插在所述色调值并将其转换为RGB:

http://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB

这应该这样做,给所有1600万左右的颜色。

int[] colors; 

for (int r = 0; i <= 255; i++) 
{ 
    for (int g = 0; g <= 255; g++) 
    { 
     for (int b = 0; b <= 255; b++) 
     { 
      colors[] = rgb2int(r, g, b); 
     } 
    } 
} 

rgb2int(int red, int green, int blue) 
{ 
    return (red << 16) + (green << 8) + blue; 
}