gpt4 book ai didi

java - 如何在 Java 中以彩虹顺序遍历所有 RGB 组合?

转载 作者:搜寻专家 更新时间:2023-10-30 23:02:35 26 4
gpt4 key购买 nike

我试图以彩虹顺序遍历所有 rgb 颜色。目前我有这个:

int state = 1;
int a = 255;
int r = 255;
int g = 0;
int b = 0;

if(g < 255 && state == 1){
g++;
r--;
if(g == 255)
state = 2;
}
if(b < 255 && state == 2){
b++;
g--;
if(b == 255)
state = 3;
}
if(state == 3){
r++;
b--;
if(b == 0)
state = 1;
}

int hex = (a << 24) + (r << 16) + (g << 8) + (b);

它可以工作,但似乎无法获得所有颜色。我知道这可能是一种糟糕的做法,是的,我知道我可以在彼此内部做 3 个循环,但是有人知道更好的做法来获得所有颜色吗?

此外,我没有使用 3 个循环的原因是因为它需要在每次新的 RGB 组合之后更新,而不是在循环完成之后更新,因为这每次都会给我相同的结果。

编辑:感谢 pbabcdefp,我让它工作了,解决方案如下。

int state = 0;
int a = 255;
int r = 255;
int g = 0;
int b = 0;
if(state == 0){
g++;
if(g == 255)
state = 1;
}
if(state == 1){
r--;
if(r == 0)
state = 2;
}
if(state == 2){
b++;
if(b == 255)
state = 3;
}
if(state == 3){
g--;
if(g == 0)
state = 4;
}
if(state == 4){
r++;
if(r == 255)
state = 5;
}
if(state == 5){
b--;
if(b == 0)
state = 0;
}
int hex = (a << 24) + (r << 16) + (g << 8) + (b);

最佳答案

您需要找到所有组合。您的代码的问题是在一个循环中您修改了两个值。在这种情况下,您会跳过一种颜色。例如,您有 G=100 和 R=100:

g++; r--;在这行之后 G 将是 101,R 将是 99。下一次是 G102,R98 您现在有三种组合:

[g100,r100], g[101,r99], g[102,r98]。

但是您在这里错过了很多其他组合,例如 [g100,r99] 和 g[101,r100],或 g[101,r98] 等。

关于java - 如何在 Java 中以彩虹顺序遍历所有 RGB 组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31784658/

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