在 Processing 中创建填充 window 的彩虹
Creating a Rainbow filled window in Processing
这是一项学校作业。
我是 Processing 软件的新手,我想创建一个充满彩虹的 window,就像下面的图片(在中心)一样。
左边的程序是我现在的程序。
中心的程序是我想要的样子。
右边是我正在使用的代码。我会复制粘贴到这里。
void setup() {
size(255, 255);
}
void draw() {
noStroke();
colorMode(RGB, 255,255,255);
for (int i = 0; i <255; i++) {
for (int j = 0; j < 255; j++) {
stroke(j,i,128);
point(i, j);
}
}
}
任何对代码的帮助、建议和调整,我们将不胜感激。提前致谢。
您将从一些伪代码中获益。永远不要低估伪代码的力量。
在这张图片中,您需要做的一切都写得一清二楚:
因为我们在 RGB 中工作,并且图像告诉您如何处理红色、绿色和蓝色,所以您已经是金色的了,但是为了使事情更透明,我们将稍微更改代码.让我们暂时忘记循环。以下是图片告诉您的操作:
R -> vertical slider, the closer to the bottom the more red you have
G -> horizontal slider, left is less and right is more
B -> vertical slider, the opposite to the red slider
现在,知道您的值在 [0-255] 范围内,但您的图像也是一个 256 像素宽的正方形,您只需使用循环索引来获取 RGB 值:
for (int i = 0; i <255; i++) {
for (int j = 0; j < 255; j++) {
int r = j; // up == more red
int g = i; // right == more green
int b = 255 - j; // down == less blue
stroke(color(r, g, b));
point(i, j);
}
}
此外,只是为了好玩,因为这是静态图像而不是动画,您可以将这段代码放在 setup()
方法中,它会得到相同的结果:
void setup() {
size(255, 255);
for (int i = 0; i <255; i++) {
for (int j = 0; j < 255; j++) {
int r = j; // up == more red
int g = i; // right == more green
int b = 255 - j; // down == less blue
stroke(color(r, g, b));
point(i, j);
}
}
}
void draw() {} // you still need this method even if it's empty
这给你这个结果:
玩得开心!
这是一项学校作业。 我是 Processing 软件的新手,我想创建一个充满彩虹的 window,就像下面的图片(在中心)一样。
左边的程序是我现在的程序。 中心的程序是我想要的样子。 右边是我正在使用的代码。我会复制粘贴到这里。
void setup() {
size(255, 255);
}
void draw() {
noStroke();
colorMode(RGB, 255,255,255);
for (int i = 0; i <255; i++) {
for (int j = 0; j < 255; j++) {
stroke(j,i,128);
point(i, j);
}
}
}
任何对代码的帮助、建议和调整,我们将不胜感激。提前致谢。
您将从一些伪代码中获益。永远不要低估伪代码的力量。
在这张图片中,您需要做的一切都写得一清二楚:
因为我们在 RGB 中工作,并且图像告诉您如何处理红色、绿色和蓝色,所以您已经是金色的了,但是为了使事情更透明,我们将稍微更改代码.让我们暂时忘记循环。以下是图片告诉您的操作:
R -> vertical slider, the closer to the bottom the more red you have
G -> horizontal slider, left is less and right is more
B -> vertical slider, the opposite to the red slider
现在,知道您的值在 [0-255] 范围内,但您的图像也是一个 256 像素宽的正方形,您只需使用循环索引来获取 RGB 值:
for (int i = 0; i <255; i++) {
for (int j = 0; j < 255; j++) {
int r = j; // up == more red
int g = i; // right == more green
int b = 255 - j; // down == less blue
stroke(color(r, g, b));
point(i, j);
}
}
此外,只是为了好玩,因为这是静态图像而不是动画,您可以将这段代码放在 setup()
方法中,它会得到相同的结果:
void setup() {
size(255, 255);
for (int i = 0; i <255; i++) {
for (int j = 0; j < 255; j++) {
int r = j; // up == more red
int g = i; // right == more green
int b = 255 - j; // down == less blue
stroke(color(r, g, b));
point(i, j);
}
}
}
void draw() {} // you still need this method even if it's empty
这给你这个结果:
玩得开心!