在处理中尝试转到 10 失败
Failed attempt at goto 10 in Processing
我已经尝试了有关处理的 Goto 10 练习,但不知道我的错误在哪里。目的是制作类似 Goto 10 的场景,但我缺少一些东西。我相信循环可能已关闭。
//line size
int a = 15;
void setup(){
background(255);
size(500,500);
noLoop();
strokeWeight(2);
}
void draw(){
// Y
for(int lineY = 0; lineY < height/a; lineY++){
// X
for(int lineX = 0; lineX < width/a; lineX++){
float randomN = random(1);
pushMatrix();
if (randomN >= 0.5){
rotate(-90);
}
else {
rotate(-45);
}
line(0,0,a,0);
popMatrix();
translate(a, 0);
}
translate((-width), a);
}
}
每列的 x 移动平移量加起来不等于草图的整个宽度:
for(int lineX = 0; lineX < width/a; lineX++)
width/a
在您的示例中将为 33.333 (500 / 15)。所以你最终会得到 33 个循环和 33 列。但是 33 列 * 15 像素宽 = 495(不是 500)。
因此,当您尝试使用 translate((-width), a);
转换回新行的开头时,您每行都向后移动了一点点(-500 而不是 -495)。
要解决此问题,请确保您只向后移动您在绘制柱子时向前移动的距离:
int numCols = floor(width/a); // calculate the number of columns
translate((-numCols * a), a); // move back the correct x distance
我已经尝试了有关处理的 Goto 10 练习,但不知道我的错误在哪里。目的是制作类似 Goto 10 的场景,但我缺少一些东西。我相信循环可能已关闭。
//line size
int a = 15;
void setup(){
background(255);
size(500,500);
noLoop();
strokeWeight(2);
}
void draw(){
// Y
for(int lineY = 0; lineY < height/a; lineY++){
// X
for(int lineX = 0; lineX < width/a; lineX++){
float randomN = random(1);
pushMatrix();
if (randomN >= 0.5){
rotate(-90);
}
else {
rotate(-45);
}
line(0,0,a,0);
popMatrix();
translate(a, 0);
}
translate((-width), a);
}
}
每列的 x 移动平移量加起来不等于草图的整个宽度:
for(int lineX = 0; lineX < width/a; lineX++)
width/a
在您的示例中将为 33.333 (500 / 15)。所以你最终会得到 33 个循环和 33 列。但是 33 列 * 15 像素宽 = 495(不是 500)。
因此,当您尝试使用 translate((-width), a);
转换回新行的开头时,您每行都向后移动了一点点(-500 而不是 -495)。
要解决此问题,请确保您只向后移动您在绘制柱子时向前移动的距离:
int numCols = floor(width/a); // calculate the number of columns
translate((-numCols * a), a); // move back the correct x distance