diff --git a/baumgen.js b/baumgen.js index 94e1ee4..b015c35 100644 --- a/baumgen.js +++ b/baumgen.js @@ -57,70 +57,70 @@ var baum = { }; -function gen_branch(level=0, shape=null, invertAngle=false) { - var baum = {}; - var fac = 1; - var lfac = 1; - if(level > 0) { - lfac = 1.2; - //fac = 1 / (level*2); - fac = 0.5; - } +function gen_tree(pos) { + var baum = new Branch(); - baum.length = (20 + Math.random() * 20) * lfac; + baum.length = (20 + Math.random() * 20); - if(shape == null) { - if(Math.random() < 0.5) { - shape = "kite"; - } else { - shape = "triangle"; - } + var shape; + if(Math.random() < 0.5) { + shape = "kite"; + } else { + shape = "triangle"; } baum.crown = {shape: shape}; if(shape == "kite") { - baum.crown.length = (70 + Math.random() * 30) * fac; + baum.crown.length = (70 + Math.random() * 30); baum.crown.width = 0.4 + Math.random() * 0.2; baum.crown.bisect = 0.3 + Math.random() * 0.1; } else if(shape == "triangle") { - baum.crown.length = (70 + Math.random() * 30) * fac; + baum.crown.length = (70 + Math.random() * 30); baum.crown.width = 0.4 + Math.random() * 0.2; //baum.crown.bisect = 0.3 + Math.random() * 0.1; } - if(level == 0) { - baum.angle = Math.PI / 2; - } else if(level % 2 == 1) { - //if(Math.random() < 0.5) { - if(invertAngle) { - baum.angle = Math.PI / 4 + Math.random() * 0.45; - } else { - baum.angle = Math.PI - Math.PI / 4 - Math.random() * 0.45; + baum.angle = Math.PI / 2; // + Math.random() * 0.2 - 0.1; + + if((shape == "kite") && (Math.random() < 0.5)) { + var b = { + length: baum.length * 0.4, + angle: Math.PI / 5 + Math.random() * 0.45, + crown: { + shape: "kite", + length: baum.crown.length * 0.4, + width: baum.crown.width, + bisect: baum.crown.bisect, + //bisect: 0.5, + } + }; + baum.forks = [{ + pos: 0.2 + Math.random() * 0.4, + branch: new Branch(b), + }]; + + baum.draw(pos); + var rectified = false; + var i=0; + while(baum.collides_crown(baum.forks[0].branch)) { + baum.forks[0].branch.angle -= 0.01; + baum.draw(pos); + rectified = true; + i += 1; + if(i>50) { + var c = new Path.Circle({center:pos, radius: 2, strokeWidt: 1, strokeColor: '#ff0000'}); + //break; + } } - } else { - baum.angle = Math.PI/2 + (Math.random() * 0.6 - 0.3); - } - if(level == 0) { - baum.forks = []; - for(var i=0; i