最佳答案
我正在写一个 Java 游戏,我想实现一个功率计,来计算射击的难度。
我需要写一个在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);
}
其中“ power”是介于0.0和1.0之间的数字。0将返回一个亮红色,1.0将返回一个亮绿色。
爪哇色调图: