在处理中创建彼此内部的无限圆

问题描述

我正在尝试创建一些像这张图片这样的迷幻“动画”; Trippy circles

我可以通过蛮力将另一个圆圈放入圆圈中。但是,我很确定通过使用“while”或“for”有一种更简单的方法。我对编码很陌生,所以我不知道要使用哪种逻辑。

下面是我的暴力破解代码

int m = millis();

void setup(){
  
 size(1136,936);
 
}

void draw(){
  

  ellipseMode(CENTER);
  frameRate(1.3);
  background(255);
  
  
 if (millis() > m + 1000){
  for (int diameter = 0; diameter < 500; diameter = diameter+1) {
  float r1 = random(1,1000);
  float r2 = random(1,900);
  fill(255);
  circle(r1,r2,diameter);
  fill(0);
  circle(r1,diameter/2);

}
 
}

}

谢谢!

解决方法

这与您的示例的外观非常接近(基于您的原始代码):

int m = millis();

void setup(){
 size(1136,936);
}

int colors[] = { 0,255 };

void draw(){
  ellipseMode(CENTER);
  //frameRate(1.3);
  background(255);

   if (millis() > m + 1000) {
    for (int i = 0; i < 500; i = i+1) {
      float x = random(1,1000);
      float y = random(1,900);
      float radius = 300;
      float delta = 30;
      
      int counter = 0;
      while (radius >= delta) {
        fill(colors[counter % colors.length]);
        ellipse(x,y,radius,radius);
        counter++;
        radius -= delta;
      }
    }
  }
}