0

我已经尝试过关于处理的 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);
 }

}
4

1 回答 1

0

您翻译每列的 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
于 2021-11-30T00:32:43.130 回答