La felce di Barnsley

    let xPrec = 0;
let yPrec = 0;

function setup() {
    createCanvas( 670, 420 );
    background( 255 );
    stroke( 40, 120, 60, 90 );
}

function draw() {
    for (let i=0;  i<200;  ++i) {
        let x;
        let y;
        let caso = random();
        if (caso < 0.01) {  // 1%: stelo
            x = 0;
            y = 0.16*yPrec;
        } else if (caso < 0.86) {  // 85%: copia ridotta e ruotata
            x = 0.85*xPrec + 0.04*yPrec;
            y = -0.04*xPrec + 0.85*yPrec + 1.6;
        } else if (caso < 0.93) {  // 7%: foglia a sinistra
            x = 0.20*xPrec - 0.26*yPrec;
            y = 0.23*xPrec + 0.22*yPrec + 1.6;
        } else {  // 7%: foglia a destra
            x = -0.15*xPrec + 0.28*yPrec;
            y = 0.26*xPrec + 0.24*yPrec + 0.44;
        }
        point( width/2 + x*40, height - 10 - y*40 );
        xPrec = x;
        yPrec = y;
    }
}
  

  

Un solo valore casuale sceglie quale delle quattro trasformazioni applicare, ognuna con la sua probabilità: 1%, 85%, 7% e 7%.


  

Ogni trasformazione ricava il nuovo punto dal precedente, come negli attrattori. Questa, la più probabile, porta il punto in una copia più piccola e leggermente ruotata della felce intera.


  

I valori calcolati, fra -3 e 3 in orizzontale e fra 0 e 10 in verticale, vengono ingranditi 40 volte e disposti a partire dal centro del lato inferiore.

Provare a cambiare un coefficiente di una trasformazione, ad esempio 0.85 in 0.80, oppure le probabilità.

 

Descritta da Michael Barnsley nel 1988 nel libro “Fractals Everywhere”: il caso decide in che ordine compaiono i punti, ma la forma che ne emerge è sempre la stessa.