在递归函数中使用局部变量

时间:2019-01-24 14:07:46

标签: recursion processing fractals

我有一些处理3代码来绘制动画的分形。问题在于该程序仅绘制一个点。我以前有该程序。我唯一更改的是支持可变数量的“面”。

float angle, scale;
int sides;

void setup(){
  size(600, 600);
  background(0);
  strokeWeight(2);
  stroke(255);
  sides = 3;
}

void draw(){
  background(0, 64);
  angle = cos(frameCount*0.025);
  scale = sin(frameCount*0.01);
  fractal(width/2, height/2, 100, 7);
}

void fractal(float x, float y, float s, int d){
  ellipse(x, y, 2, 2);
  if(d > 0){
    float dir = PI/2;
    for(int i = 0; i > sides; i++){
      fractal(x + s/sqrt(3) * cos(dir + angle), y + s/sqrt(3) * sin(dir + angle), s * scale, d - 1);
      dir += TWO_PI/sides;
    }
  }
}

我认为问题在于递归函数在每次迭代时都会覆盖局部变量“ dir”,但是,我不确定这一点。我有一个程序的工作版本,如果您想了解我要实现的目标,它会使用固定数量的两面。

0 个答案:

没有答案