处理中的 RGB 渐变

问题描述

我正在尝试找出一种方法生成如下所示的渐变:

RGB Gradient

但是,我不知道如何一次组合多种颜色(红色、蓝色和绿色)。这是我的代码目前的样子:

color red;
color blue;
color green;

void setup() {
  size(255,255);
  
  red = color(255,0);
  blue = color(0,255);
  green = color(0,255,0);
  
  for(int x = 0; x < width; x++) {
    float n = map(x,width,1);
    color newc = lerpColor(blue,red,n);
    stroke(newc);
    line(0,x,height,x);
  }
}
void draw() {
} 

如您所见,目前没有使用绿色,因为我找不到在保留红色和蓝色渐变的同时插入这些颜色的方法。我是 Processing 的初学者,所以我很感激这方面的一些帮助。我应该如何编写代码

解决方法

我会使用嵌套循环来执行此操作并分别执行三个值,如下所示:

void setup() {
  size(255,255);
  
  for (int x = 0; x < width; x++) {
    for(int y = 0; y < height; y++) {
      stroke(y,x,255 - y);
      point(x,y);
    }
  }
}

以下是您希望颜色更改的方式:

  • 红色:顶部为 0(y = 0 处),底部为 255(y = 255 处)
  • 绿色:左侧为 0(x = 0),右侧为 255(x = 255
  • 蓝色:顶部为 255(y = 0 处),底部为 0(y = 255 处)

如果你想要一个不同尺寸的画布,你可以使用 map():

stroke(map(y,height,255),map(x,width,map(y,255,0));

lerp()

float xprop = float(x) / width;
float yprop = float(y) / height;
stroke(lerp(0,yprop),lerp(0,xprop),lerp(255,yprop));