Использование локальной переменной в рекурсивной функции - PullRequest
0 голосов
/ 24 января 2019

У меня есть немного кода Processing 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' каждую итерацию, однако я не знаю,это точно.У меня есть рабочая версия программы, которая использует фиксированное количество сторон, если вы хотите увидеть, чего я пытаюсь достичь.

...