-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathtree.js
78 lines (73 loc) · 2.51 KB
/
tree.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
load(__folder + "lsystem.js");
Drone.extend('tree',function(blockID,size,generations)
{
var s = [];
var dr = new Drone();
size = size == null ? 200 : size;
blockID = blockID == null ? 1 : blockID;
generations = generations == null ? 30 : generations;
var d = 4;
var a = 1;
var ls = new Lsystem({
F: function() {
for(var i =0;i<d;i++){
dr.box(blockID).up(1);
}
},
"+": function() {
for(var i =0;i<d;i++){
dr.box(blockID).left(1);
}
},
"-": function() {
for(var i =0;i<d;i++){
dr.box(blockID).right(1);
}
},
"[": function() { s.push({x:dr.x,y:dr.y,d:d,a:a}); },
"]": function() {
var p = s.pop();
dr.moveTo(p.x,p.y);
d = p.d;
a = p.a;
}
},
[ {id:"F"},{id:"1"},{id:"F"},{id:"1"},{id:"F"},{id:"1"} ],
[
{ p: [ {id:"0"},{dir:"^",id:"0"},{dir:".>",id:"0"} ],
s: function() { return [{id:"0"}];}
},
{ p: [ {id:"0"},{dir:"^",id:"0"},{dir:".>",id:"1"} ],
s: function() { return [{id:"1"},[{id:"-"},{id:"F"},{id:"1"},{id:"F"},{id:"1"}]];}
},
{ p: [ {id:"1"},{dir:"^",id:"0"},{dir:".>",id:"0"} ],
s: function() { return [{id:"1"}];}
},
{ p: [ {id:"1"},{dir:"^",id:"0"},{dir:".>",id:"1"} ],
s: function() { return [{id:"1"}];}
},
{ p: [ {id:"0"},{dir:"^",id:"1"},{dir:".>",id:"0"} ],
s: function() { return [{id:"0"}];}
},
{ p: [ {id:"0"},{dir:"^",id:"1"},{dir:".>",id:"1"} ],
s: function() { return [{id:"1"},{id:"F"},{id:"1"}];}
},
{ p: [ {id:"1"},{dir:"^",id:"1"},{dir:".>",id:"0"} ],
s: function() { return [{id:"1"}];}
},
{ p: [ {id:"1"},{dir:"^",id:"1"},{dir:".>",id:"1"} ],
s: function() { return [{id:"0"}];}
},
{ p: [ {id:"+"} ],
s: function() { return [{id:"-"}];}
},
{ p: [ {id:"-"} ],
s: function() { return [{id:"+"}];}
}
],
{ F: "", "+": "", "-": "" }
);
ls.generateN(generations);
ls.render();
return this;
});