#N canvas 102 54 1029 638 10;
#X obj 209 223 gemhead;
#X obj 241 277 t a a a;
#X obj 264 320 cube 1;
#X obj 238 66 world_light;
#X obj 238 41 gemhead;
#X obj 37 226 gemhead;
#X obj 37 321 sphere 1.3 33;
#X obj 34 67 gemwin;
#X msg 46 44 0 \, destroy;
#X msg 34 21 create \, lighting 1 \, 1;
#X obj 287 300 rotateXYZ 60 30 0;
#X obj 37 300 rotateXYZ 60 30 0;
#X text 36 184 #1:;
#X text 209 181 #2:;
#X obj 37 428 sphere 1.3 33;
#X obj 37 407 rotateXYZ 60 30 0;
#X obj 209 248 t a a;
#X obj 595 288 gemlist;
#X obj 595 223 gemhead;
#X obj 595 250 t b b a;
#X obj 37 202 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 209 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 595 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 37 342 translateXYZ 2 0 0;
#X obj 37 449 translateXYZ 2 0 0;
#X obj 241 341 translateXYZ 2 0 0;
#X obj 209 386 t a a a;
#X obj 232 429 cube 1;
#X obj 255 409 rotateXYZ 60 30 0;
#X obj 209 450 translateXYZ 2 0 0;
#X obj 595 410 rotateXYZ 60 30 0;
#X obj 595 452 translateXYZ 2 0 0;
#X obj 595 431 sphere 1.6 4;
#X text 29 498 example #1 is the usual way to use Gem \, but the technique
shown in example #2 can be more flexible...;
#N canvas 677 282 446 463 more_interating_1 0;
#X obj 22 64 gemhead;
#X obj 22 351 rotateXYZ 0 0 12;
#X obj 22 274 scaleXYZ 0.97 0.9 1;
#X obj 22 296 translateXYZ 0.5 0 0;
#X obj 22 376 circle 0.2;
#X floatatom 131 331 5 0 0 0 - - -;
#X obj 22 226 gemlist;
#X obj 22 204 until;
#X msg 22 180 100;
#X obj 22 158 t b a;
#X obj 22 111 translateXYZ -3 0 0;
#X obj 22 43 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
;
#X text 85 198 "repeat" 100 times the same "gemlist";
#X connect 0 0 10 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 5 0 1 3;
#X connect 6 0 2 0;
#X connect 7 0 6 0;
#X connect 8 0 7 0;
#X connect 9 0 8 0;
#X connect 9 1 6 1;
#X connect 10 0 9 0;
#X connect 11 0 0 0;
#X restore 32 561 pd more_interating_1;
#N canvas 549 169 464 582 more_interating_2 0;
#X obj 22 69 gemhead;
#X obj 22 377 scaleXYZ 0.97 0.9 1;
#X obj 22 505 circle 0.2;
#X obj 22 235 gemlist;
#X obj 22 213 until;
#X msg 22 189 100;
#X obj 22 167 t b a;
#X obj 185 322 f;
#X obj 277 309 random 1000;
#X obj 22 480 rotateXYZ 0 0 0;
#X obj 185 420 *;
#X obj 22 132 t a b;
#X obj 22 264 t a b b;
#X msg 277 283 seed \$1;
#X obj 277 256 f;
#X floatatom 295 234 5 0 0 0 - - -;
#X obj 277 334 - 500;
#X obj 185 441 / 1000;
#X obj 22 400 translateXYZ -0.5 0 0;
#X obj 22 103 translateXYZ 3 0 0;
#X obj 22 42 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
;
#X text 343 233 <- change random;
#X text 276 356 rotation angle is random;
#X text 200 390 amplitude decrease;
#X msg 203 296 100;
#X obj 222 351 - 1;
#X connect 0 0 19 0;
#X connect 1 0 18 0;
#X connect 3 0 12 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 6 0 5 0;
#X connect 6 1 3 1;
#X connect 7 0 25 0;
#X connect 7 0 10 0;
#X connect 8 0 16 0;
#X connect 9 0 2 0;
#X connect 10 0 17 0;
#X connect 11 0 6 0;
#X connect 11 1 24 0;
#X connect 11 1 14 0;
#X connect 12 0 1 0;
#X connect 12 1 7 0;
#X connect 12 2 8 0;
#X connect 13 0 8 0;
#X connect 14 0 13 0;
#X connect 15 0 14 1;
#X connect 16 0 10 1;
#X connect 17 0 9 3;
#X connect 18 0 9 0;
#X connect 19 0 11 0;
#X connect 20 0 0 0;
#X connect 24 0 7 1;
#X connect 25 0 7 1;
#X restore 32 581 pd more_interating_2;
#X obj 445 223 gemhead;
#X obj 445 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 443 178 #3:;
#X obj 445 410 rotateXYZ 60 30 0;
#X obj 445 452 translateXYZ 2 0 0;
#X obj 445 271 t a a;
#X text 593 178 #4:;
#X text 611 314 [gemlist] stores the current state;
#X text 613 330 and outputs it when banged;
#X text 30 528 The example #4 can easily be extended to use many primitives.
;
#X text 31 122 [gemhead]'s output is a special message describing the
"state" of the system. This state is changed by the GEM objects. This
means that the examples below are equivalent:;
#X obj 445 431 teapot 1;
#X connect 0 0 16 0;
#X connect 1 0 25 0;
#X connect 1 1 2 0;
#X connect 1 2 10 0;
#X connect 4 0 3 0;
#X connect 5 0 11 0;
#X connect 6 0 23 0;
#X connect 8 0 7 0;
#X connect 9 0 7 0;
#X connect 11 0 6 0;
#X connect 14 0 24 0;
#X connect 15 0 14 0;
#X connect 16 0 26 0;
#X connect 16 1 1 0;
#X connect 17 0 30 0;
#X connect 18 0 19 0;
#X connect 19 0 17 0;
#X connect 19 1 17 0;
#X connect 19 2 17 1;
#X connect 20 0 5 0;
#X connect 21 0 0 0;
#X connect 22 0 18 0;
#X connect 23 0 15 0;
#X connect 26 0 29 0;
#X connect 26 1 27 0;
#X connect 26 2 28 0;
#X connect 30 0 32 0;
#X connect 32 0 31 0;
#X connect 36 0 41 0;
#X connect 37 0 36 0;
#X connect 39 0 47 0;
#X connect 41 0 39 0;
#X connect 41 1 39 0;
#X connect 47 0 40 0;
