Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Colors 在RGB中滚动颜色效果_Colors_Rgb - Fatal编程技术网

Colors 在RGB中滚动颜色效果

Colors 在RGB中滚动颜色效果,colors,rgb,Colors,Rgb,我想创建一个彩色滚动效果。我有一个函数,我给它一个RGB值(例如setColor(189234,45)),我想快速改变颜色,但我不想重复很多次来创建滚动颜色的效果 我尝试了以下方法,但并没有产生我想要的效果 for (int i = 0; i < 256; i++) { for (int j = 0; j < 256; j++) { for (int k = 0; k < 256; k++) { setColor(i, j, k);

我想创建一个彩色滚动效果。我有一个函数,我给它一个RGB值(例如setColor(189234,45)),我想快速改变颜色,但我不想重复很多次来创建滚动颜色的效果

我尝试了以下方法,但并没有产生我想要的效果

for (int i = 0; i < 256; i++) {
    for (int j = 0; j < 256; j++) {
      for (int k = 0; k < 256; k++) {
        setColor(i, j, k);
      }
    }
  }
for(int i=0;i<256;i++){
对于(int j=0;j<256;j++){
对于(int k=0;k<256;k++){
setColor(i,j,k);
}
}
}

我想知道是否有人知道彩色卷轴的颜色是如何排列在一起的。我正在寻找的排列看起来像。

正如您在编辑中提到的那样,您不喜欢颜色的顺序,因为您从黑色开始,在白色结束,而不是从彩虹的一端开始,然后到另一端

所以你需要计算出一个RGB序列,从蓝色到绿色,从黄色到红色。这意味着您需要从(0,0255)开始,并在(255,0,0)结束,而不是通过(255255255)或(0,0,0)-简而言之,这就是如何完成的

有很多方法可以做到这一点,并获得令人愉快的效果-超出了这里的答案范围。本文将对其进行深入探讨:


您使用的颜色表示为R、G、B(红、绿、蓝)值。然而,另一个 思考颜色的方式是色调、饱和度和颜色值。在您尝试模拟的滚动图像中, 这是色调的变化-饱和度和值(亮度)不受影响

下面是一个函数,它恰好可以生成一个色调循环渐变,就像您链接到的图像中的那样:

int n = 256; // number of steps
float TWO_PI = 3.14159*2;

for (int i = 0; i < n; ++i) {
    int red = 128 + sin(i*TWO_PI/n + 0) + 127;
    int grn = 128 + sin(i*TWO_PI/n + TWO_PI/3) + 127;
    int blu = 128 + sin(i*TWO_PI/n + 2*TWO_PI/3) + 127;
    setColor(red, grn, blu);
}

这段代码比它需要的要复杂一些,因为该站点上的颜色转换使用0-1的浮点颜色组件,而不是像您使用的那样使用0-255的整数,所以我花了几行代码在这两种表示之间进行转换。您可能会发现,只需将颜色保留在HSB空间中,然后在需要显示时转换为RGB就更简单了。

这段代码给您的内容有什么问题吗?这是一个非常长的序列,重复的颜色略有不同。我忘了说:欢迎使用StackOverflow。使用您提供的额外信息编辑您的答案将是“良好做法”。投票选出对你有帮助的答案,并接受能为你解决问题的答案,这也是一种很好的做法。干杯……我太没用了,没法投票(你需要15个代表才能投票);)链接很棒,尤其是标题“用javascript制作恼人的彩虹”。这家伙真的知道他的肤色。
void cycleMyColor(int *r, int *g, int *b) {
    float h,s,v,  fr,fg,fb;
    RGBtoHSV(*r/255.0,*g/255.0,*b/255.0,&h,&s,&v);
    h += 1/256.0;  // increment the hue here
    h -= (int) h;  // and cycle around if necessary
    HSVtoRGB(&fr,&fg,&fb,h,s,v);
    *r = fr*255; *g = fg*255; *b = fb*255;
    setColor(*r,*g,*b);
}