我有一个问题,需要一个解决办法,经过一整天的思考。我想要生成一个画布,它通过使用范围来改变他的颜色。听起来很简单。
颜色在(HSB)里。有6种颜色。
饱和度和亮度微乎其微(可以一直保持不变)。
颜色必须在这个范围内改变。
所以如果我能得到像这样的数据
var sample Data = new Array(0.1,0.2,0.3,0.4,3.4,5.9,9.3,9.4,9.5,9.6,...);画布必须改变颜色之间的慢从蓝色到绿色,然后应该有一个“剪彩”,因为“大跳跃”从0.4到3.4 (绿色和黄色之间的东西)。
我在寻找这个问题背后的“逻辑”。我已经有了带有画布的HTML。对于画布和颜色,我使用的是Paper.js
希望有人能理解我的问题!
谢谢
发布于 2014-10-21 17:16:18
我不知道Paper.js,所以我不得不在画布上得到颜色,但是我可以帮助将数据转换成颜色。由于您的五色范围没有相同的大小,我们必须对每一种颜色进行单独的计算。
var sampleColors = [],
l = sampleData.length,
s = '50%',
b = '50%';
function getColor(d) {
var c, m = d % 3;
if (d < 3) c = 230 - m * 33.333;
else if (d < 6) c = 130 - m * 25;
else if (d < 9) c = 55 - m * 5;
else if (d < 12) c = 40 - m * 13.333;
else c = 360 - m * 15;
return 'hsb(' + Math.round(c) + 'deg,' + s + ',' + b + ')';
}
for(var i = 0; i < l; i++) {
sampleColors.push(getColor(sampleData[i]));
}现在,sampleColors包含属于sampleData中项的hsb颜色字符串。
sampleData[0] == 0.1; sampleColor[0] == 'hsb(227deg,50%,50%)';
sampleData[4] == 3.4; sampleColor[4] == 'hsb(120deg,50%,50%)';如果颜色符号不符合您的需要,请发表评论。
https://stackoverflow.com/questions/26491164
复制相似问题