Я пишу гру на Java і хочу впровадити лічильник потужності для того, наскільки важко ви збираєтесь щось знімати.
Мені потрібно написати функцію, яка займає int між 0 - 100, і виходячи з того, наскільки високе це число, вона поверне колір між зеленим (0 за шкалою потужності) та червоним (100 за шкалою потужності).
Подібно до того, як працюють регулятори гучності:
Які операції мені потрібно зробити на червоному, зеленому та синьому компонентах кольору, щоб генерувати кольори між зеленим та червоним?
Отже, я можу запустити скажу, 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: