From 7cd2b268a97917d584f36a22a87c1782fdf80964 Mon Sep 17 00:00:00 2001 From: Frederic Date: Sat, 1 Jun 2019 17:48:01 +0200 Subject: [PATCH] add some more random --- lindenmayer-system/lindenmeyer-system.html | 31 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/lindenmayer-system/lindenmeyer-system.html b/lindenmayer-system/lindenmeyer-system.html index b6890a3..8a2df2a 100644 --- a/lindenmayer-system/lindenmeyer-system.html +++ b/lindenmayer-system/lindenmeyer-system.html @@ -133,8 +133,9 @@ function sierpinski() { * Barnsley Fern ************************************************/ - function barnsley_fern() { + function barnsley_fern(num_defects) { project.clear(); + if(typeof num_defects == 'undefined') { num_defects = 0 }; var r = generate( 'iIXF'.split(''), [ @@ -144,13 +145,30 @@ function sierpinski() { 6 ); + var n = 0; + while(n < num_defects) { + var rnd = Math.floor(Math.random()*r.length); + if((r[rnd] != '[') & (r[rnd] != ']')) { + r[rnd] = '*'; + if(Math.random() > 0.9) { + if(Math.random() < 0.5) { + r.splice(rnd, 0, '+'); + } else { + r.splice(rnd, 0, '-'); + } + } + n += 1; + } + } + console.log(r); var p = draw( r, { 'F': draw_forward(), 'i': draw_set_dir(Math.PI), - 'I': draw_angle_init(25/180 * Math.PI + Math.random() * 0.2), + 'I': draw_angle_init(25/180 * Math.PI), + '*': draw_angle_add((Math.random() - 0.5) * 0.01), '-': draw_angle_turn(-1), '+': draw_angle_turn(1), '[': draw_state_push(), @@ -221,10 +239,14 @@ window.onload = function() { window.globals.sierpinski(); }); - document.getElementById('barnsley_fern').addEventListener('click', function() { + document.getElementById('barnsley-fern').addEventListener('click', function() { window.globals.barnsley_fern(); }); + document.getElementById('barnsley-fern-defects').addEventListener('click', function() { + window.globals.barnsley_fern(150); + }); + } @@ -236,7 +258,8 @@ window.onload = function() { - + +