J'écris un jeu Java et je veux implémenter un wattmètre pour savoir à quel point vous allez tirer quelque chose.
J'ai besoin d'écrire une fonction qui prend un int entre 0 - 100, et en fonction de la hauteur de ce nombre, elle renverra une couleur entre le vert (0 sur l'échelle de puissance) et le rouge (100 sur l'échelle de puissance).
Similaire au fonctionnement des commandes de volume:
Quelle opération dois-je effectuer sur les composants rouge, vert et bleu d'une couleur pour générer les couleurs entre le vert et le rouge?
Donc, je pourrais courir dire, getColor(80)
et il renverra une couleur orangée (ses valeurs en R, V, B) ou getColor(10)
qui renverra une valeur RVB plus verte / jaune.
Je sais que j'ai besoin d'augmenter les composants des valeurs R, V, B pour une nouvelle couleur, mais je ne sais pas spécifiquement ce qui augmente ou diminue lorsque les couleurs passent du vert au rouge.
Le progrès:
J'ai fini par utiliser l'espace colorimétrique HSV / HSB parce que j'aimais mieux le dégradé (pas de brun foncé au milieu).
La fonction que j'ai utilisée était:
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);
}
Où «puissance» est un nombre compris entre 0,0 et 1,0. 0.0 renvoie un rouge vif, 1.0 renvoie un vert brillant.
Graphique de teinte Java: