为功率计生成红色和绿色之间的颜色 (colors that start with f)

我正在写一个 Java 游戏,我想实现一个功率计,你将如何努力拍摄的东西。

我正在写一个 Java 游戏,我想实现一个功率计,你将如何努力拍摄的东西。

我需要写一个函数,它需要一个介于 0-100 之间的 int,并且根据这个数字有多高,它将返回绿色(功率标度上的 0)和红色(功率标度上的 100)之间的颜色。

Similar to how volume controls work:
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 Hue Chart:
Java Hue Chart

206

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

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

(针对整数数学进行了修订,对 Ferrucio 表示敬意)

另一种方法是使用HSV colour model,并以适合您的任何饱和度和值将色调从0 degrees(红色)循环到120 degrees(绿色)。

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

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

32

在我的头顶,这里是 HSV 空间中的绿色-红调过渡,转换为 RGB:

blue = 0.0
if 0<=power<0.5:        #first, green stays at 100%, red raises to 100%
    green = 1.0
    red = 2 * power
if 0.5<=power<=1:       #then red stays at 100%, green decays
    red = 1.0
    green = 1.0 - 2 * (power-0.5)

上例中的红色,绿色,蓝色值是百分比,您可能希望将它们乘以 255 以获得最常用的 0-255 范围。

14

简短复制 `n` 粘贴答案...

在 Java Std 上:

int getTrafficlightColor(double value){
    return java.awt.Color.HSBtoRGB((float)value/3f, 1f, 1f);
}

在 Android 上:

int getTrafficlightColor(double value){
    return android.graphics.Color.HSVToColor(new float[]{(float)value*120f,1f,1f});
}

注意:value 是介于 0 和 1 之间的数字,表示红色到绿色条件。

10

如果你想要一个绿色--红色的表示像接受的答案建议,然后看看这个。

http://jsfiddle.net/0awncw5u/2/
function percentToRGB(percent) {
    if (percent === 100) {
        percent = 99
    }
    var r, g, b;
    if (percent < 50) {
        // green to yellow
        r = Math.floor(255 * (percent / 50));
        g = 255;
    } else {
        // yellow to red
        r = 255;
        g = Math.floor(255 * ((50 - percent % 50) / 50));
    }
    b = 0;
    return "rgb(" + r + "," + g + "," + b + ")";
}
function render(i) {
    var item = "<li style='background-color:" + percentToRGB(i) + "'>" + i + "</li>";
    $("ul").append(item);
}
function repeat(fn, times) {
    for (var i = 0; i < times; i++) fn(i);
}
repeat(render, 100);
li {
    font-size:8px;
    height:10px;
}
<script src="https://ajax.googlea.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul></ul>

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(321)
java听 ContextRefreshedEvent
上一篇
GoogleChrome奇怪的光标在页面上闪烁 以前从未见过
下一篇

相关推荐

  • colors of the wind歌词 Colors of the Wind

    Colors of the Wind 歌词:Verse…

    2023-05-02 05:13:01
    0 56 51
  • 使用定位小部件时 氩气按钮仅从底部工作(argon colors)

    当按钮被按下时,按钮工作的底部只有一半,我正在投票栏,我在顶部使用堆栈并使用两个氩气按钮,一个是屏幕的左侧,一个是屏幕的右侧,两个按钮都是半裁剪的,所以当我点击按钮时,它没有反应,看起来不是 wokring,但是当我们点击 Argon 按钮的底部时,它的工作这里是Screenshot…

    2022-11-11 15:20:18
    0 88 23
  • cvt和自动挡哪个好提升驾驶体验的最佳选择

    CVT(可变转换器)是一种由传动带及传动轮组成的无级变速器,它可以在没有传动档位的情况下,根据驾驶者的驾驶习惯,自动调整传动轮之间的转速比,从而实现无级变速。自动挡是指车辆自动变速箱,它使用液力传动来实现变速,可以自动适应车辆的行驶状态,减少司机的疲劳,提高行车的舒适性。…

    2023-06-08 07:42:19
    0 71 67
  • cv一叶扁舟和清影轩阳:漫游在一叶扁舟和清影轩阳之间

    cv一叶扁舟是一款开源的计算机视觉库,用于图像处理、计算机视觉等。它提供了丰富的API,可以帮助开发者快速实现各种图像处理任务,如图像分割、目标检测、图像识别等。清影轩阳是一款开源的计算机视觉框架,用于图像处理、目标检测、分类等。它提供了丰富的API,可以帮助开发者快速实现各种图像处理任务,如图像分割、目标检测、图像识别等。…

    2023-08-05 07:06:20
    0 86 43
  • css设置滚动条宽度设置:This is a title

    CSS设置滚动条宽度的方法:使用CSS3的。-webkit-属性:…

    2023-06-06 10:53:01
    0 57 59
  • xl和xe汽车cvt:探索XL和XE汽车的CVT技术优势

    XL和XE汽车CVT是一种变速器,它使用液力变矩器代替传统的机械变速器,以达到更高的效率。它的工作原理是,当发动机输出功率时,液力变矩器就会将这些功率转换为液压能量,然后将能量传递到变速器的输出轴上,从而实现变速。…

    2023-04-09 00:41:04
    0 92 70
  • cordon bleu是什么意思:法式炸鸡卷——Cordon Bleu的经典之作

    Cordon Bleu是一种烹饪技术,其中肉片被置于奶酪和火腿之间,然后用面包屑裹上,最后煎炸或烤熟。这种技术通常用于制作鸡肉,但也可以用于制作其他类型的肉类,如牛肉或猪肉。…

    2024-01-27 15:13:30
    0 20 44
  • countif 非空:非空单元格的计数

    Countif 非空是指计算某个单元格不为空的数量。代码如下:…

    2023-04-22 15:54:15
    0 84 92

发表评论

登录 后才能评论

评论列表(30条)