1

使用 JavaScript,如果我有一个低整数和一个高整数,并且我想计算出一系列 HEX 颜色,以表示该范围内的不同 vlues……最好的方法是什么?

我可以举个例子:

// 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);

此代码当前正在尝试创建一系列颜色,但在传递给它的数字非常高时它会下降,因为它对于 r、g 和 b 中的每一个都低于 0,导致它不适合用于颜色目的...如果你明白我的意思吗?

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

4

1 回答 1

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);
于 2010-11-26T13:15:19.870 回答