可从滑块调整嵌套循环

Nested loop adjustable from slider

我想制作一个正方形网格,可以通过两个滑块进行调整,一个用于宽度,另一个用于高度。 我设法以某种方式让它适用于网格的宽度,但我对高度没有把握。

代码如下:

let bubbles = [];
var slider, slider2 ;
function setup() {
 var canvas=createCanvas(windowWidth, windowHeight);
 slider = createSlider (10,260,260);
 slider2 = createSlider (10,260,260);
 for (var i=0; i<25; i++) {
    for ( var j=0; j<5; j++){
      var x = i * 260;
      var y=j*260;
   
    let b = new Bubble(x, y);
    bubbles.push(b);
    }
  }
}
function draw() {
  
  background(0);
var value = slider.value();
   for (let i = 0; i < bubbles.length; i++) {
    bubbles[i].show(i);
   
  }
}
class Bubble {
  constructor(x, y) {
    this.x = x;
    this.y = y;
    this.brightness = (0);
    this.slider=slider.value();
     this.slider2=slider2.value();
  }

 show(i) {
   push();
    stroke(255);
   //noStroke ;
    strokeWeight(0.2);
    fill(this.brightness);
  this.x=((i/5) - ((i%5)/5) ) * slider.value();
      //this.y=((i/5) - ((i%5)/5) ) * slider2.value();
 

   translate(this.x, this.y);
 rect(0 ,0,260);
   pop(); 
  }
}

 

如果这是您要达到的最终产品,那么我不推荐 类,因为数量有限。有什么你想要的具体告诉我,告诉我是什么,我也可以给你注释和解释。

var slider, slider2 ;
function setup() {
 var canvas=createCanvas(windowWidth, windowHeight);
 slider = createSlider (10,260,260);
 slider2 = createSlider (10,260,260);
}
function draw() {
  
 for(i = 0; i < width / slider.value(); i ++){
   for(j =0; j < height / slider2.value(); j ++){
     fill(255,i/slider.value() * 255 ,j / slider.value() * 255);
     rect(i * slider.value(),j * slider2.value(),slider.value(),slider2.value());
   }
 }
}

这是对 类 和数组的编辑:

var maxVal = 30;
var resX = 20;
var resY = 20;
var sliderX, sliderY;

var grid = [];
function setup() {
  
  for(i = 0; i < maxVal; i ++){
    grid[i] = [];
    for(j =0; j < maxVal; j ++){
      grid[i][j] = new Point(i,j);
    }
}
  
 var canvas=createCanvas(windowWidth, windowHeight);
 sliderX = createSlider (10,30,resX);
 sliderY = createSlider (10,30,resX);
}
function draw() {
  background(0);
  resX = sliderX.value();
  resY = sliderY.value();
  
  for(let i of grid){
    for(let j of i){
      j.display();
    }
  }
}

class Point{
  constructor(x,y){
    this.x = x;
    this.y = y;
  }
  display(){
    rect(this.x * resX,this.y * resY,resX,resY);
  }
}

如果您要将 maxVal 扩展到一个非常大的数字,那么我建议仅在更改滑块时重绘而不是每秒重绘 60 次。