二维数组

BiDimensional Array

我为每个渐变创建了一个 class,以便使用 2DArrays,但它不起作用。我遵循了一些教程并看到了 Shifmann 的解释,所以我不明白为什么它是错误的(它只显示 1 个圆圈而不是 9 个)。 我想创建一个 3 x 3 的网格,目前它只显示 1 个圆圈

float posY = 200;
int cols = 3;
int rows = 3;
Gradient[][]grad = new Gradient[cols][rows];


void setup() {
  size(600, 800);

  smooth();
  int raio = 30;
  color c1 = color (253, 196, 80, 40);
  color c2 = color(254, 127, 168, 40);
  for (int i=0; i<cols; i++) {
    for (int j=0; j<rows; j++) {
      grad[i][j] = new Gradient (i*150, j*200, raio, c1, c2);
    }
  }

  ellipseMode(RADIUS);

  noStroke();
}

void draw () {

  background (#F6C4C7);

  for (int i = 0; i < cols; i++) {
    for (int j = 0; j < rows; j++) {
      grad[i][j].desenhar_grad();
    }
  }
}


void keyPressed()
{
  if (key == 's') keyDown = true;
  saveFrame("ellipse.jpg");
  //saveFrame("ellipse.png");
  println("sss");
}

class Gradient {

  float x;
  float y;
  color cor1;
  color cor2;
  int raio;

  Gradient(float posX, float posY, int r, color c1, color c2) {
    x=posX;
    y=posY;
    raio=r;
    cor1=c1;
    cor2=c2;
  }

  void desenhar_grad() {
    pushStyle();
    noStroke();
    for (int r = raio; r > 0; r--) {
      int tom = lerpColor(cor1, cor2, map(r, 0, raio, 0.0, 1.0)); // os últimos dois valores são as cores. o primeiro é o centro, o segundo é o exterior
      fill(tom);
      circle(posX, posY, r * 2);
    }
    popStyle();
  }
}```

坐标属性的名称是xy:

circle(posX, posY, r * 2);

circle(x, y, r * 2);