#N canvas 344 26 680 557 10; #X text 287 159 disable falling; #X obj 2 96 t a a; #X obj 323 314 # != 0; #X obj 384 352 #fold +; #X obj 8 442 s position; #X obj 192 29 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1 ; #X obj 323 371 #export; #X obj 192 82 #store; #X obj 217 113 shunt 2; #N canvas 25 226 369 359 mouse 0; #X text 143 214 is there a click?; #X obj 44 114 != 0; #X text 112 256 coordinates; #X obj 19 8 inlet; #X text 56 9 #out's outlet 0; #X obj 44 93 >> 8; #X obj 65 237 listsublist 0 2; #X obj 16 31 route position; #X obj 94 214 outlet; #X obj 65 257 outlet; #X obj 16 214 shunt 2; #X obj 44 72 listelement 2; #X obj 16 51 t a a; #X connect 1 0 8 0; #X connect 1 0 10 1; #X connect 3 0 7 0; #X connect 5 0 1 0; #X connect 6 0 9 0; #X connect 7 0 12 0; #X connect 10 1 6 0; #X connect 11 0 5 0; #X connect 12 0 10 0; #X connect 12 1 11 0; #X restore 366 132 pd mouse click/drag; #X obj 327 132 # / 2; #X obj 323 333 #ravel; #X obj 217 158 shunt 2; #X obj 34 96 s size; #X obj 323 352 #fold +; #X obj 420 95 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1 ; #X obj 452 358 #export; #X obj 452 320 #ravel; #X obj 306 220 shunt 2; #X obj 271 159 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1; #X obj 384 371 #export; #X obj 367 94 shunt 2; #X obj 2 230 #greyscale_to_rgb; #X obj 367 113 r position; #N canvas 364 105 496 344 falling 0; #X obj 42 147 # +; #X text 227 189 vertical falling; #X obj 42 40 inlet; #X text 83 40 Dim[rows \, columns \, {height}]; #X obj 42 168 # +; #X obj 42 209 # +; #X text 95 250 Dim[rows \, columns \, {height}]; #X text 216 129 horizontal falling; #X obj 42 230 # +; #X obj 42 103 #store; #X obj 42 249 outlet; #X obj 42 84 #finished; #X obj 110 209 #convolve (2 1 # 1 1) \, fold inv+; #X obj 110 230 #convolve (3 1 # 1 1 0) \, fold inv+; #X obj 69 209 # / 4; #X obj 69 230 # / 4; #X obj 69 147 # / 4; #X obj 69 168 # / 4; #X obj 108 147 #convolve (1 2 # 1 1) \, fold inv+; #X obj 109 168 #convolve (1 3 # 1 1 0) \, fold inv+; #X obj 159 78 # rand; #X obj 123 116 # +; #X obj 42 59 t a a a; #X obj 159 59 # put 128; #X obj 159 97 # - 32; #X obj 159 116 # div 50; #X connect 0 0 4 0; #X connect 2 0 22 0; #X connect 4 0 5 0; #X connect 5 0 8 0; #X connect 8 0 10 0; #X connect 9 0 0 0; #X connect 11 0 9 0; #X connect 12 0 14 0; #X connect 13 0 15 0; #X connect 14 0 5 1; #X connect 15 0 8 1; #X connect 16 0 0 1; #X connect 17 0 4 1; #X connect 18 0 16 0; #X connect 19 0 17 0; #X connect 20 0 24 0; #X connect 21 0 18 0; #X connect 21 0 19 0; #X connect 21 0 12 0; #X connect 21 0 13 0; #X connect 22 0 11 0; #X connect 22 1 9 1; #X connect 22 1 21 0; #X connect 22 2 23 0; #X connect 23 0 20 0; #X connect 24 0 25 0; #X connect 25 0 21 1; #X restore 217 178 pd falling sand; #X obj 2 170 shunt 3; #X obj 2 480 print; #X obj 197 65 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1; #X text 210 27 auto; #N canvas 301 45 536 447 finger 0; #X obj 192 7 inlet; #X obj 36 78 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 112 244 # / 20; #X obj 112 297 # *; #X obj 13 244 #store; #X obj 14 18 inlet; #X obj 279 51 loadbang; #X obj 13 38 t a a; #X obj 112 225 #fold +; #X text 22 159 "dig" the sphere into the sand; #X text 240 104 compute a halfsphere; #X obj 192 29 # - 32; #X obj 112 206 #ravel; #N canvas 1 58 415 284 make 0; #X obj 28 129 #fold +; #X obj 28 66 # -; #X obj 28 108 @! sq; #X obj 28 45 #for ( -32 -32 ) ( 32 32 ) ( 1 1 ); #X obj 28 171 outlet; #X obj 28 87 # << 2; #X obj 28 150 @! sqrt; #X text 63 21 bang; #X obj 27 20 inlet; #X text 98 92 make distance map; #X connect 0 0 6 0; #X connect 1 0 5 0; #X connect 2 0 0 0; #X connect 3 0 1 0; #X connect 5 0 2 0; #X connect 6 0 4 0; #X connect 8 0 3 0; #X restore 259 74 pd make distance map with center 32; #X obj 13 420 outlet; #X obj 260 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X text 122 262 find out how high the compensation torus should be ; #X obj 112 316 # div 256; #X obj 36 58 route grid; #X obj 13 225 #finished; #X obj 13 206 t a a; #N canvas 669 471 315 202 halfsphere 0; #X obj 45 19 inlet distancemap; #X obj 45 143 outlet image; #X obj 46 102 @! sqrt; #X obj 46 122 #outer ignore ( 0 ); #X obj 46 62 # inv+ 200; #X text 121 63 16 * radius^2; #X obj 46 41 @! sq; #X obj 46 82 # max 0; #X connect 0 0 6 0; #X connect 2 0 3 0; #X connect 3 0 1 0; #X connect 4 0 7 0; #X connect 6 0 4 0; #X connect 7 0 2 0; #X restore 126 120 pd halfsphere; #N canvas 0 0 323 279 torus 0; #X obj 59 26 inlet; #X obj 56 185 outlet; #X obj 57 97 # inv+ 200; #X obj 57 76 @! sq; #X text 102 54 toroidal radius; #X obj 57 162 #outer ignore ( 0 ); #X obj 56 120 # max 0; #X text 138 99 16*radius^2; #X obj 57 141 @! sqrt; #X obj 57 56 # - 20; #X connect 0 0 9 0; #X connect 2 0 6 0; #X connect 3 0 2 0; #X connect 5 0 1 0; #X connect 6 0 8 0; #X connect 8 0 5 0; #X connect 9 0 3 0; #X restore 259 326 pd torus; #X text 66 415 put extra sand as a ring around the hole; #X obj 112 278 #redim (64 64 1); #X obj 13 397 #draw_image - (1 1 1 #) (0 0); #X obj 13 141 #draw_image - (1 1 1 #) (0 0); #X obj 13 343 shunt 2; #X obj 64 343 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1 ; #X connect 0 0 11 0; #X connect 1 0 15 0; #X connect 2 0 24 0; #X connect 3 0 17 0; #X connect 4 0 27 0; #X connect 5 0 7 0; #X connect 6 0 13 0; #X connect 7 0 26 0; #X connect 7 1 18 0; #X connect 8 0 2 0; #X connect 11 0 25 2; #X connect 11 0 26 2; #X connect 12 0 8 0; #X connect 13 0 21 0; #X connect 13 0 22 0; #X connect 15 0 13 0; #X connect 17 0 25 1; #X connect 18 0 1 0; #X connect 19 0 4 0; #X connect 20 0 19 0; #X connect 20 1 12 0; #X connect 20 1 4 1; #X connect 21 0 26 1; #X connect 22 0 3 1; #X connect 24 0 3 0; #X connect 25 0 14 0; #X connect 26 0 20 0; #X connect 27 0 25 0; #X connect 27 1 14 0; #X connect 28 0 27 1; #X restore 260 132 pd finger; #X obj 360 286 # -; #X obj 384 333 #ravel; #X msg 2 56 240 320; #X obj 452 339 #fold +; #X obj 2 211 # + 128; #X text 375 220 enable stats; #X text 289 411 checking for conservation of amounts of sand; #X msg 2 115 \$1 \$2 1 # 0; #N canvas 499 117 441 278 lighting 0; #X obj 28 234 outlet; #X obj 27 18 inlet; #X text 184 103 colourize the horizontal differences; #X text 184 149 colourize the vertical differences; #X obj 60 149 #outer & (0 -1 0); #X obj 60 129 #convolve (4 1 # 1 -8 8 -1); #X obj 60 84 #convolve (1 4 # 1 -8 8 -1); #X obj 28 177 # << 2; #X obj 28 215 #clip; #X obj 28 196 # + (220 200 180); #X obj 27 37 #t; #X obj 28 56 #greyscale_to_rgb; #X obj 28 104 # +; #X obj 28 149 # +; #X obj 60 104 #outer & (-1 0 0); #X connect 1 0 10 0; #X connect 4 0 13 1; #X connect 5 0 4 0; #X connect 6 0 14 0; #X connect 7 0 9 0; #X connect 8 0 0 0; #X connect 9 0 8 0; #X connect 10 0 11 0; #X connect 10 1 6 0; #X connect 10 1 5 0; #X connect 11 0 12 0; #X connect 12 0 13 0; #X connect 13 0 7 0; #X connect 14 0 12 1; #X restore 24 298 pd lighting; #X obj 2 461 fps detailed; #X obj 359 221 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1; #X text 213 65 step; #X obj 67 183 vradio 15 1 0 3 empty empty empty 0 -6 0 8 -241291 -1 -1 1; #X obj 2 422 #out window; #X obj 323 392 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 256; #X obj 384 392 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 256; #X obj 452 377 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 256; #X text 87 196 differential; #X text 86 181 heightmap; #X text 86 212 topographic; #X obj 152 82 t a a; #X obj 217 220 t a a; #X obj 2 37 loadbang; #X text 436 95 disable finger; #X obj 350 264 t a a; #X obj 2 192 # << 2; #X obj -15 499 cnv 15 680 30 empty empty empty 20 12 0 14 -200249 -66577 0; #X text -7 506 GridFlow 0.8.0; #X text -7 506 GridFlow 0.8.0; #X obj -13 -25 cnv 15 680 30 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 0 -25 sand.pd; #X text -1 21 set size & reset; #X obj 2 249 #clip; #X obj 24 279 # << 0; #X obj 68 144 loadbang; #X msg 68 163 1; #X obj 270 115 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1; #X msg 8 76 120 160; #X obj 192 46 metro 33.3667; #X obj 2 400 #scale_by 2; #N canvas 0 0 450 300 topographic 0; #X obj 35 18 inlet; #X obj 35 170 #greyscale_to_rgb; #X obj 35 37 #convolve (3 3 # 1 2 1 2 4 2); #X obj 35 151 #clip; #X obj 35 56 # & 127; #X obj 35 189 outlet; #X obj 35 75 # abs- 108; #X obj 35 94 # min 20; #X obj 35 113 # inv+ 20; #X obj 35 132 # << 5; #X connect 0 0 2 0; #X connect 1 0 5 0; #X connect 2 0 4 0; #X connect 3 0 1 0; #X connect 4 0 6 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 3 0; #X restore 46 317 pd topographic; #X text 0 -12 Copyright 2002 \, 2006 Mathieu Bouchard; #X obj 384 314 # abs-; #X connect 1 0 37 0; #X connect 1 1 13 0; #X connect 2 0 11 0; #X connect 3 0 20 0; #X connect 5 0 68 0; #X connect 6 0 44 0; #X connect 7 0 8 0; #X connect 8 0 12 0; #X connect 8 1 29 0; #X connect 9 0 10 0; #X connect 9 1 21 0; #X connect 10 0 29 1; #X connect 11 0 14 0; #X connect 12 0 24 0; #X connect 12 1 51 0; #X connect 14 0 6 0; #X connect 15 0 21 1; #X connect 16 0 46 0; #X connect 17 0 33 0; #X connect 18 1 17 0; #X connect 18 1 54 0; #X connect 19 0 12 1; #X connect 20 0 45 0; #X connect 21 0 8 1; #X connect 22 0 62 0; #X connect 23 0 9 0; #X connect 24 0 51 0; #X connect 25 0 55 0; #X connect 25 1 63 0; #X connect 25 2 70 0; #X connect 27 0 7 0; #X connect 29 0 12 0; #X connect 30 0 2 0; #X connect 30 0 72 0; #X connect 31 0 3 0; #X connect 32 0 1 0; #X connect 33 0 16 0; #X connect 34 0 22 0; #X connect 37 0 50 0; #X connect 38 0 69 0; #X connect 39 0 26 0; #X connect 40 0 18 1; #X connect 42 0 25 1; #X connect 43 0 39 0; #X connect 43 0 4 0; #X connect 50 0 25 0; #X connect 50 1 7 1; #X connect 51 0 50 0; #X connect 51 1 18 0; #X connect 52 0 32 0; #X connect 54 0 30 1; #X connect 54 1 30 0; #X connect 55 0 34 0; #X connect 62 0 69 0; #X connect 63 0 38 0; #X connect 64 0 65 0; #X connect 65 0 42 0; #X connect 66 0 8 1; #X connect 67 0 1 0; #X connect 68 0 7 0; #X connect 69 0 43 0; #X connect 70 0 69 0; #X connect 72 0 31 0;