Я пишу Java-игру, и я хочу использовать измеритель мощности для того, как сильно вы собираетесь что-то снимать.
Мне нужно написать функцию, которая принимает int между 0 - 100 и в зависимости от того, насколько высока эта цифра, она вернет цвет между зеленым (0 по шкале мощности) и красным (100 на шкале мощности).
Аналогично тому, как работают регуляторы громкости:
Какую операцию мне нужно сделать для красных, зеленых и синих компонентов цвета для генерации цветов между зеленым и красным?
Итак, я могу запустить say, getColor(80)
, и он вернет оранжевый цвет (его значения в R, G, B) или getColor(10)
, который вернет более зеленое/желтое значение RGB.
Я знаю, что мне нужно увеличить компоненты значений R, G, B для нового цвета, но я не знаю, что происходит вверх или вниз, когда цвета смещаются от зеленого.
Прогресс:
Я закончил использовать цветовое пространство HSV/HSB, потому что мне понравился градиент лучше (без темно-коричневых в середине).
Используемая функция:
public Color getColor(double power)
{
double H = power * 0.4; // Hue (note 0.4 = Green, see huge chart below)
double S = 0.9; // Saturation
double B = 0.9; // Brightness
return Color.getHSBColor((float)H, (float)S, (float)B);
}
Где "мощность" - это число от 0,0 до 1,0. 0.0 вернет ярко-красный цвет, 1,0 вернет ярко-зеленый цвет.
Java Hue Chart: