From 769b4e5845a6a39ce281a61504e329b55ce91f2e Mon Sep 17 00:00:00 2001 From: Frederic Date: Sat, 1 Jun 2019 17:35:00 +0200 Subject: [PATCH] let fern grow upward --- lindenmayer-system/lindenmeyer-system.html | 7 ++++--- lindenmayer-system/lindenmeyer-system.js | 9 ++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lindenmayer-system/lindenmeyer-system.html b/lindenmayer-system/lindenmeyer-system.html index 2ac8774..b6890a3 100644 --- a/lindenmayer-system/lindenmeyer-system.html +++ b/lindenmayer-system/lindenmeyer-system.html @@ -136,7 +136,7 @@ function sierpinski() { function barnsley_fern() { project.clear(); var r = generate( - 'IXF'.split(''), + 'iIXF'.split(''), [ ['X'.split(''), 'F+[[X]-X]-F[-FX]+X'.split('')], ['F'.split(''), 'FF'.split('')] @@ -149,7 +149,8 @@ function sierpinski() { r, { 'F': draw_forward(), - 'I': draw_angle_init(25/180 * Math.PI), + 'i': draw_set_dir(Math.PI), + 'I': draw_angle_init(25/180 * Math.PI + Math.random() * 0.2), '-': draw_angle_turn(-1), '+': draw_angle_turn(1), '[': draw_state_push(), @@ -157,7 +158,7 @@ function sierpinski() { } ); p.scale(2); - p.translate(new Point(200, 200)); + p.translate(new Point(200, 300)); p.strokeWidth = 1; p.strokeColor = '#ff00ff'; } diff --git a/lindenmayer-system/lindenmeyer-system.js b/lindenmayer-system/lindenmeyer-system.js index aaee5f3..11310c0 100644 --- a/lindenmayer-system/lindenmeyer-system.js +++ b/lindenmayer-system/lindenmeyer-system.js @@ -45,7 +45,7 @@ function generate(start, rules, iterations) { function draw_initstate(p, state) { if(!('dir' in state)) { - state.dir = 0;//Math.PI/2; + state.dir = 0; } if(!('curpath' in state)) { p.addChild(new paper.Path()); @@ -54,6 +54,13 @@ function draw_initstate(p, state) { } +function draw_set_dir(dir) { + return function(p, state) { + state.dir = dir; + } +} + + function draw_forward() { return function(p, state) { draw_initstate(p, state);