Processing 形成某种毯子的彩色线条
所以我试着用彩色线条做一条毯子,但我似乎无法得到下面所示的结果 我的代码首先放置水平线并应用数组中的颜色(颜色正确),然后放置垂直线并应用数组中的颜色 但是我似乎不能得到这个结果 这是我的密码。有人能启发我吗Processing 形成某种毯子的彩色线条,processing,Processing,所以我试着用彩色线条做一条毯子,但我似乎无法得到下面所示的结果 我的代码首先放置水平线并应用数组中的颜色(颜色正确),然后放置垂直线并应用数组中的颜色 但是我似乎不能得到这个结果 这是我的密码。有人能启发我吗 float[][] vclrs = { //Array with color values for the vertical lines {220,31,24}, //Red {128,100,172}, //Purple {39,52,142}, //Blue {225
float[][] vclrs = { //Array with color values for the vertical lines
{220,31,24}, //Red
{128,100,172}, //Purple
{39,52,142}, //Blue
{225,104,0}, //Beige
{77,137,11}, //Green
{83,188,188}, //Light Blue
};
float[][] hclrs = { //Array with color values for the horizontal lines
{220,31,24}, //Red
{187,167,212}, //Purple
{39,52,142}, //Blue
{244,198,149}, //Beige
{77,137,11}, //Green
{183,207,209}, //Light Blue
};
int controller = 8; //Width of the line and distance between the lines
int hlinedistance = controller; //Horizontal distance to place the next line
int vlinedistance = controller; //Vertical distance to place the next line
void setup() {
size(576,480);
background(255);
strokeWeight(controller); //Stroke of the controller
}
void draw() {
for(int i=0;i<6;i=i+1) {
stroke(vclrs[i][0], vclrs[i][1], vclrs[i][2]);
line(vlinedistance, 0, vlinedistance, displayHeight);
vlinedistance = vlinedistance + (controller + controller);
line(0, hlinedistance, displayWidth, hlinedistance);
stroke(hclrs[i][0], hclrs[i][1], hclrs[i][2]);
hlinedistance = hlinedistance + (controller + controller);
}
}
float[][]vclrs={//数组,带有垂直线的颜色值
{220,31,24},//红色
{128100172},//紫色
{39,52142},//蓝色
{225104,0},//米色
{77137,11},//绿色
{83188188},//浅蓝色
};
float[][]hclrs={//带有水平线颜色值的数组
{220,31,24},//红色
{187167212},//紫色
{39,52142},//蓝色
{244198149},//米色
{77137,11},//绿色
{183207209},//浅蓝色
};
int控制器=8//线条的宽度和线条之间的距离
int hlinedistance=控制器//放置下一行的水平距离
int vlinedistance=控制器//放置下一行的垂直距离
无效设置(){
规模(576480);;
背景(255);
冲程重量(控制器);//控制器的冲程
}
作废提款(){
对于(inti=0;我很抱歉没有澄清细节(现在已经很晚了,但现在最好不要澄清),我不想以任何方式冒犯他人。
就像在每种编程语言中一样,代码是从上到下查看的,因此代码行是从上到下排列的
stroke(255, 0, 0); //red
line(x1, y1, x2, y2);
stroke(0, 255, 0); //green
line(x1, y1, x2, y2);
在这个代码段中,先画红线,然后在红线上画绿线。因此,您最终只能看到绿线。在您的示例中,有4层线
第一组垂直线
第一组水平线
第2组垂直线
第2组水平线
这4组中的每一组都存储了不同的颜色。在我的解决方案中,您有如下不同的笔划:
vclrs=垂直组1的颜色
hclrs=水平组1的颜色
vclrs2=垂直组2的颜色
hclrs2=水平组2的颜色
我们还使用strokeCap(项目);使线条边缘化。为了增加线条宽度,我们使用strokeWeight(宽度)
在绘图部分,我们现在编写这4个for循环,它们使用模3-->相应地切换颜色,因此每组有3种不同的颜色。模是可供选择的颜色数组。
所有这4个for循环都有些不同,因为它们涉及不同的位置,我相信您可以理解其中的细节
这是修改后的代码,以匹配您的结果。
我希望这有助于:
float[][] vclrs = { //Array with color values for the vertical lines
{220,31,24}, //Red
{128,100,172}, //Purple
{39,52,142}, //Blue
};
float[][] vclrs2 =
{
{225,104,0}, //Beige
{77,137,11}, //Green
{83,188,188}, //Light Blue
};
float[][] hclrs = { //Array with color values for the horizontal lines
{220,31,24}, //Red
{187,167,212}, //Purple
{39,52,142}, //Blue
};
float[][] hclrs2 =
{
{244,198,149}, //Beige
{77,137,11}, //Green
{183,207,209}, //Light Blue
};
int controller = 30; //Width of the line and distance between the lines
void setup() {
size(576,480);
background(255);
strokeCap(PROJECT);
strokeWeight(controller / 2); //Stroke of the controller
}
void draw() {
background(255);
pushMatrix();
translate(controller / 4, controller / 4);
for(int i = 0; i < displayHeight / (3 * controller); i++) {
stroke(vclrs[i % 3][0], vclrs[i % 3][1], vclrs[i % 3][2]);
line((i * 2 * controller), 0, (i * 2 * controller), displayHeight);
}
for(int i = 0; i < displayWidth / (3 * controller); i++) {
stroke(hclrs[i % 3][0], hclrs[i % 3][1], hclrs[i % 3][2]);
line(0, (i * 2 * controller), displayWidth, (i * 2 * controller));
}
for(int i = 0; i < displayHeight / (3 * controller); i++)
{
stroke(vclrs2[i % 3][0], vclrs2[i % 3][1], vclrs2[i % 3][2]);
line((i * 2 * controller + controller), 0, (i * 2 * controller + controller), displayHeight);
}
for(int i = 0; i < displayWidth / (3 * controller); i++)
{
stroke(hclrs2[i % 3][0], hclrs2[i % 3][1], hclrs2[i % 3][2]);
line(0, (i * 2 * controller + controller), displayWidth, (i * 2 * controller + controller));
}
popMatrix();
}
float[][]vclrs={//数组,带有垂直线的颜色值
{220,31,24},//红色
{128100172},//紫色
{39,52142},//蓝色
};
浮动[][]vclrs2=
{
{225104,0},//米色
{77137,11},//绿色
{83188188},//浅蓝色
};
float[][]hclrs={//带有水平线颜色值的数组
{220,31,24},//红色
{187167212},//紫色
{39,52142},//蓝色
};
浮动[]hclrs2=
{
{244198149},//米色
{77137,11},//绿色
{183207209},//浅蓝色
};
int controller=30;//线条的宽度和线条之间的距离
无效设置(){
规模(576480);;
背景(255);
strokeCap(项目);
冲程重量(控制器/2);//控制器的冲程
}
作废提款(){
背景(255);
pushMatrix();
翻译(控制器/4,控制器/4);
对于(int i=0;i
在示例图像中,您必须更仔细地考虑线条的绘制顺序。哪些线条先绘制?哪些最后绘制?有没有办法在绘制之后更改线条的顺序?或者只有在第一次以正确的顺序绘制线条?您可以尝试使用Z-o进行一些巧妙的操作RDE和OpenGL渲染,但这远不止是坐下来试着弄清楚顺序的工作。即使这个答案解决了问题,它的质量也很低。它没有说明你是如何解决问题的,也没有说明OP做错了什么。我尝试了很多事情,但没有得到上面所示的结果。发布了我想要的结果中的结果对我一点帮助都没有。对于“懒惰”部分来说,这是非常令人反感的。我对处理是新手,不知道你的代码到底做了什么。所以我不感谢你,因为这对我一点帮助都没有,也没有激励我。。