цветовой диапазон в javascript

Используя JavaScript, если у меня есть низкое целое и высокое целое число, и я хочу разработать диапазон цветов HEX, чтобы представить различные значения в этом диапазоне... как лучше всего это сделать?

Могу привести пример:

// 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, что делает его бесполезным для целей цвета. ... если вы понимаете, что я имею в виду?

Может ли кто-нибудь предложить лучший способ? Спасибо.


person Daniel    schedule 26.11.2010    source источник


Ответы (1)


Нормализуйте ввод в диапазоне [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);
person Victor Nicollet    schedule 26.11.2010
comment
Спасибо за ответ, меня на некоторое время перевели в другой проект, но как только я вернусь к этому, я попробую. Спасибо. - person Daniel; 05.12.2010