gpt4 book ai didi

language-agnostic - 为功率计生成红色和绿色之间的颜色?

转载 作者:行者123 更新时间:2023-12-03 04:28:59 25 4
gpt4 key购买 nike

我正在编写一个 Java 游戏,我想实现一个功率计来测量您射击某物的力度。

我需要编写一个函数,它接受 0 - 100 之间的整数,并根据该数字的高低,它将返回绿色(功率刻度上的 0)和红色(功率刻度上的 100)之间的颜色.

类似于音量控制的工作方式:
volume control

我需要对颜色的红、绿、蓝分量进行什么操作才能生成绿和红之间的颜色?

所以,我可以运行 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.0 将返回亮红色,1.0 将返回亮绿色。

Java 色调图表:
Java Hue Chart

最佳答案

这应该可行 - 只需线性缩放红色和绿色值。假设您的最大红/绿/蓝值为 255,并且 n0 .. 100

范围内
R = (255 * n) / 100
G = (255 * (100 - n)) / 100
B = 0

(针对整数数学进行了修改,向 Ferrucio 致敬)

另一种方法是使用 HSV colour model ,然后使用适合您的饱和度和值将色调从 0 度(红色)到 120 度(绿色)循环。这应该会产生更令人满意的渐变。

以下是每种技术的演示 - 顶部渐变使用 RGB,底部使用 HSV:

http://i38.tinypic.com/29o0q4k.jpg

关于language-agnostic - 为功率计生成红色和绿色之间的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/340209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com