//variables para el sistema
float radio=200.0f;
float angulo=0.0f;
float escalamiento=0.65f;
float angulo2=0.0f;
int fade=25;
int tol=6;
float hueContador=0;
int brazos=4;
void setup() {
size(800, 800);
background(0);
smooth();
rectMode(CENTER);
colorMode(HSB);
}
void draw() {
//diferentes maneras de limpiar la pantalla
// background(0);
fill(0,25);
rect(width/2,height/2,width,height);
stroke(255);
//trasladamos al centro
translate(width/2, height/2);
//calculamos angulos con la posicion del mouse
angulo=(mouseX/float(width-20))*TWO_PI;
angulo2=(mouseY/float(height-20))*TWO_PI;
//emepzamos el fractal en la etapa 0
drawFractal(0);
}
//funcion para dibujar fractal
void drawFractal(int n) {
//si no nos hemos pasado en nuestra iteracion
//si lo dibujamos
if( n < tol ) {
//Diferentes maneras de dibujar, checalas
//fill(hueContador,255,255,255-fade*n);
//noFill();
// fill(255-fade*n,255-fade*2*n);
//strokeWeight(2*n);
stroke(255);
rect(0,0,radio,radio);
//circuloChido(20);
//Contador para ir cambiando el hue
hueContador+=0.01;
if(hueContador > 255.0f)hueContador=0;
//Aqui dibujo un brazo
for(int i=0; i < brazos; i++) {
pushMatrix();
translate(radio*cos(angulo2 *i),radio*sin(angulo2 *i));
scale(escalamiento);
rotate(angulo);
drawFractal(n+1);
popMatrix();
}
}
}
void circuloChido(int rad){
noFill();
stroke(255);
for(int i=1;i < 20; i++){
ellipse(0,0,i*rad,i*rad);
}
}