aboutsummaryrefslogtreecommitdiff
path: root/Gem/examples/13.recursion/04.binary_tree.pd
blob: 89cf3d8ff3ff89d829c5d330ecead07c9741558e (plain)
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#N canvas 6 61 602 553 10;
#X declare -lib Gem;
#X obj 14 66 gemwin;
#X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
;
#X msg 48 10 create;
#X msg 55 33 destroy;
#X obj 14 93 gemhead;
#X text 170 17 A tutorial on recursion in Gem;
#X text 170 37 (GPL) 2007 Claude Heiland-Allen <claude@mathr.co.uk>
;
#X obj 24 233 r \$0-recurse;
#X obj 88 213 v \$0-depth;
#X obj 14 193 t a b;
#X floatatom 111 176 5 0 17 2 max-depth - -;
#X obj 14 293 t a a;
#X obj 14 273 separator;
#X obj 36 533 s \$0-recurse;
#X obj 14 413 t b a b;
#X obj 99 443 v \$0-depth;
#X obj 99 463 - 1;
#X obj 99 483 max 0;
#X obj 116 533 v \$0-depth;
#X obj 36 513 spigot;
#X obj 14 443 v \$0-depth;
#X obj 14 483 v \$0-depth;
#X obj 14 463 + 1;
#X obj 184 293 t a a;
#X obj 206 533 s \$0-recurse;
#X obj 184 413 t b a b;
#X obj 269 443 v \$0-depth;
#X obj 269 463 - 1;
#X obj 269 483 max 0;
#X obj 286 533 v \$0-depth;
#X obj 206 513 spigot;
#X obj 184 443 v \$0-depth;
#X obj 184 483 v \$0-depth;
#X obj 184 463 + 1;
#X obj 184 273 separator;
#X obj 14 253 t a a;
#X obj 184 363 translate 1.5 0 1 0;
#X obj 14 363 translate 1.5 0 1 0;
#X obj 14 343 rotate -30 0 0 1;
#X obj 184 343 rotate 30 0 0 1;
#X obj 88 193 f 4;
#X text 211 77 The simplest recursive branching structure is one that
splits into two at each branch. Essentially what we are creating is
a circle \, plus two transformed copies of the whole structure \, limited
to a maximums depth of recursion.;
#X text 211 137 Be careful not to increase the max-depth too much:
the splitting at each recursion leads to an exponential increase in
the number of circles to be drawn.;
#X obj 497 15 declare -lib Gem;
#X obj 259 506 t a a;
#X obj 89 506 t a a;
#X obj 14 135 scale 0.4 0.4 1;
#X obj 14 383 scale 0.95 0.95 1;
#X obj 184 383 scale 0.95 0.95 1;
#X obj 259 316 circle;
#X obj 59 316 circle;
#X obj 59 293 color 1 0 0;
#X obj 259 293 color 0 0 1;
#X obj 14 114 translateXYZ 2 -1 0;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X connect 4 0 53 0;
#X connect 7 0 35 0;
#X connect 9 0 35 0;
#X connect 9 1 40 0;
#X connect 10 0 40 1;
#X connect 11 0 38 0;
#X connect 11 1 51 0;
#X connect 12 0 11 0;
#X connect 14 0 20 0;
#X connect 14 1 19 0;
#X connect 14 2 15 0;
#X connect 15 0 16 0;
#X connect 16 0 17 0;
#X connect 17 0 45 0;
#X connect 19 0 13 0;
#X connect 20 0 22 0;
#X connect 22 0 21 0;
#X connect 23 0 39 0;
#X connect 23 1 52 0;
#X connect 25 0 31 0;
#X connect 25 1 30 0;
#X connect 25 2 26 0;
#X connect 26 0 27 0;
#X connect 27 0 28 0;
#X connect 28 0 44 0;
#X connect 30 0 24 0;
#X connect 31 0 33 0;
#X connect 33 0 32 0;
#X connect 34 0 23 0;
#X connect 35 0 12 0;
#X connect 35 1 34 0;
#X connect 36 0 48 0;
#X connect 37 0 47 0;
#X connect 38 0 37 0;
#X connect 39 0 36 0;
#X connect 40 0 8 0;
#X connect 44 0 30 1;
#X connect 44 1 29 0;
#X connect 45 0 19 1;
#X connect 45 1 18 0;
#X connect 46 0 9 0;
#X connect 47 0 14 0;
#X connect 48 0 25 0;
#X connect 51 0 50 0;
#X connect 52 0 49 0;
#X connect 53 0 46 0;