2010-11-26 131 views
1

使用JavaScript,如果我有一个低整数和一个高整数,并且我想制定一系列HEX颜色,以表示该范围内的不同线索......做到这一点的最佳方式?javascript中的颜色范围

我可以举个例子:

// calculate total value 
var total = 0; 
for(d in data){ 
    total += data[d].value; 
} 

// Our main color 
var r=150,g=200,b=250, 

// some color calculations based on value and total value 

val = (data[iso].value/total)*35; 

r -= Math.round(val*30); 
g -= Math.round(val*30); 
b -= Math.round(val*30); 

目前该代码试图建立一个范围的颜色,但它倒下,其中一个非常高的数字传递给它,因为它低于0每个r,g和b,导致它不适合用于颜色目的...如果你明白我的意思?

任何人都可以提出更好的方法吗?谢谢。

回答

4

将输入标准化为[0,1]范围,然后使用该值在两种有效颜色之间进行插值。

var norm = (value - minimum)/(maximum - minimum); 
r = Math.round(norm * minRed + (1 - norm) * maxRed); 
g = Math.round(norm * minGreen + (1 - norm) * maxGreen); 
b = Math.round(norm * minBlue + (1 - norm) * maxBlue); 
+0

谢谢你的回答,我已经转移到另一个项目上了一段时间,但是一旦我回到这个项目,我会放弃这个项目。谢谢。 – Daniel 2010-12-05 10:16:30