我想要創建一個顏色列表,紅色 - 黃色 - 綠色 - 藍色,並跨越100個範圍相互混合。任何人都有經驗這種事情?生成顏色列表,從藍色到紅色,從0%到100%
編輯:好吧,RGB實際上。任何語言都可以。我只需要這個算法。
我想要創建一個顏色列表,紅色 - 黃色 - 綠色 - 藍色,並跨越100個範圍相互混合。任何人都有經驗這種事情?生成顏色列表,從藍色到紅色,從0%到100%
編輯:好吧,RGB實際上。任何語言都可以。我只需要這個算法。
簡單的嵌套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:
這應該這樣做,給所有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;
}
是的!我推薦[蛋彩畫](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
...並且如果它不夠清楚,我想說的是您至少應該指定一種編程語言或平臺,一個顏色空間(RGB?HSV?CMYK?)並添加更多相關標籤: P – 2010-09-04 13:19:18