#N canvas 524 30 680 557 10; #X text 287 159 disable falling; #X obj 2 96 fork; #X obj 273 294 # != 0; #X obj 334 332 #fold +; #X obj 8 414 s position; #X obj 192 29 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1 ; #X obj 273 351 #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 273 313 #ravel; #X msg 8 76 100 100; #X obj 217 158 shunt 2; #X obj 34 96 s size; #X obj 273 332 #fold +; #X obj 420 95 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1 ; #X obj 334 294 @! abs; #X obj 402 338 #export; #X obj 402 300 #ravel; #X obj 256 220 shunt 2; #X obj 271 159 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1; #X obj 334 351 #export; #X obj 367 94 shunt 2; #X obj 2 230 #greyscale_to_rgb; #X obj 367 113 r position; #N canvas 504 75 496 430 falling 0; #X obj 42 147 # +; #X text 228 286 vertical falling; #X obj 70 327 # / 3; #X obj 138 25 inlet; #X text 179 25 Dim[rows \, columns \, {height}]; #X obj 43 281 #store; #X obj 43 260 #finished; #X obj 69 168 # / 3; #X obj 70 306 # / 3; #X obj 42 168 # +; #X obj 43 306 # +; #X text 105 366 Dim[rows \, columns \, {height}]; #X text 197 129 horizontal falling; #X obj 69 147 # / 3; #X obj 43 327 # +; #X obj 42 123 #store; #X obj 52 365 outlet; #X obj 42 104 #finished; #X obj 138 58 t a a; #X obj 133 218 t a a; #X obj 110 147 #convolve ( 1 2 # 1 1 0 ) \, fold inv+; #X obj 110 168 #convolve ( 1 3 # 1 1 0 ) \, fold inv+; #X obj 111 306 #convolve ( 2 1 # 1 1 ) \, fold inv+; #X obj 111 327 #convolve ( 3 1 # 1 1 0 ) \, fold inv+; #X connect 0 0 9 0; #X connect 2 0 14 1; #X connect 3 0 18 0; #X connect 5 0 10 0; #X connect 6 0 5 0; #X connect 7 0 9 1; #X connect 8 0 10 1; #X connect 9 0 19 0; #X connect 10 0 14 0; #X connect 13 0 0 1; #X connect 14 0 16 0; #X connect 15 0 0 0; #X connect 17 0 15 0; #X connect 18 0 17 0; #X connect 18 1 15 1; #X connect 18 1 20 0; #X connect 18 1 21 0; #X connect 19 0 6 0; #X connect 19 1 5 1; #X connect 19 1 22 0; #X connect 19 1 23 0; #X connect 20 0 13 0; #X connect 21 0 7 0; #X connect 22 0 8 0; #X connect 23 0 2 0; #X restore 217 178 pd falling sand; #X obj 2 373 #scale_by 2; #X obj 2 170 shunt 3; #X obj 2 452 print; #X obj 197 65 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1; #X text 253 46 auto; #N canvas 292 75 480 513 falling 0; #X obj 105 177 # div 5; #X text 292 85 horizontal falling; #X obj 42 118 #store; #X obj 153 58 fork; #X obj 171 230 fork; #X obj 46 392 outlet; #X obj 42 147 # +; #X obj 46 307 # +; #X obj 46 281 #store; #X obj 42 91 #finished; #X obj 42 176 # +; #X obj 48 260 #finished; #X text 88 17 Dim[rows \, columns \, {height}]; #X text 293 262 vertical falling; #X obj 106 336 # div 5; #X obj 102 148 # div 5; #X obj 46 336 # +; #X obj 103 307 # div 5; #X text 101 392 Dim[rows \, columns \, {height}]; #X obj 47 17 inlet; #X obj 162 149 #convolve (1 2 # 1 1) \, fold inv+ \, seed -3; #X obj 166 177 #convolve (1 3 # 1 1 0) \, fold inv+ \, seed -3; #X obj 170 305 #convolve (2 1 # 1 1) \, fold inv+ \, seed -3; #X obj 171 335 #convolve (3 1 # 1 1 0) \, fold inv+ \, seed -3; #X connect 0 0 10 1; #X connect 2 0 6 0; #X connect 3 0 9 0; #X connect 3 1 2 1; #X connect 3 1 20 0; #X connect 3 1 21 0; #X connect 4 0 11 0; #X connect 4 1 8 1; #X connect 4 1 22 0; #X connect 4 1 23 0; #X connect 6 0 10 0; #X connect 7 0 16 0; #X connect 8 0 7 0; #X connect 9 0 2 0; #X connect 10 0 4 0; #X connect 11 0 8 0; #X connect 14 0 16 1; #X connect 15 0 6 1; #X connect 16 0 5 0; #X connect 17 0 7 1; #X connect 19 0 3 0; #X connect 20 0 15 0; #X connect 21 0 0 0; #X connect 22 0 17 0; #X connect 23 0 14 0; #X restore 262 198 pd falling sand ( 2 ); #N canvas 525 58 536 584 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 63 267 # / 20; #X obj 74 327 # *; #X obj 12 436 #store; #X obj 14 18 inlet; #X obj 73 309 #redim ( 64 64 1 ); #X obj 279 51 loadbang; #X obj 13 38 fork; #X obj 63 247 #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 63 225 #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 12 480 outlet; #X obj 260 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X text 83 293 find out how high the compensation torus should be; #X obj 73 349 # div 256; #X obj 36 58 route grid; #X obj 12 417 #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; #X obj 13 141 #draw_image - ( 1 1 1 # ) ( 0 0 ); #X obj 12 457 #draw_image - ( 1 1 1 # ) ( 0 0 ); #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 296 346 pd torus; #X text 65 475 put extra sand as a ring around the hole; #X connect 0 0 12 0; #X connect 1 0 16 0; #X connect 2 0 6 0; #X connect 3 0 18 0; #X connect 4 0 24 0; #X connect 5 0 8 0; #X connect 6 0 3 0; #X connect 7 0 14 0; #X connect 8 0 23 0; #X connect 8 1 19 0; #X connect 9 0 2 0; #X connect 12 0 23 2; #X connect 12 0 24 2; #X connect 13 0 9 0; #X connect 14 0 22 0; #X connect 14 0 25 0; #X connect 16 0 14 0; #X connect 18 0 24 1; #X connect 19 0 1 0; #X connect 20 0 4 0; #X connect 21 0 20 0; #X connect 21 1 13 0; #X connect 21 1 4 1; #X connect 22 0 23 1; #X connect 23 0 21 0; #X connect 24 0 15 0; #X connect 25 0 3 1; #X restore 260 132 pd finger; #X obj 310 266 # -; #X obj 334 313 #ravel; #X msg 2 56 240 320; #X obj 402 319 #fold +; #X obj 2 211 # + 128; #X obj 55 344 #greyscale_to_rgb; #X obj 270 115 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1; #X text 325 220 enable stats; #X text 239 391 checking for conservation of amounts of sand; #X msg 2 115 \$1 \$2 1 # 0; #N canvas 56 229 441 265 lighting 0; #X obj 27 209 outlet; #X obj 27 180 # +; #X obj 17 9 inlet; #X obj 99 142 #convolve ( 2 1 # 1 1 ) \, op inv+; #X obj 100 65 #convolve ( 1 2 # 1 1 ) \, op inv+; #X obj 103 39 r size; #X obj 27 39 #redim ( ); #X obj 27 79 #finished; #X obj 27 120 #store; #X obj 25 149 # + 128; #X obj 27 59 t a a; #X text 163 47 colourize the horizontal differences; #X text 113 123 colourize the vertical differences; #X obj 100 86 #outer & ( -1 0 0 ); #X obj 99 164 #outer & ( -1 -1 0 ); #X connect 1 0 0 0; #X connect 2 0 6 0; #X connect 3 0 14 0; #X connect 4 0 13 0; #X connect 5 0 6 1; #X connect 6 0 10 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 1 0; #X connect 10 0 7 0; #X connect 10 1 4 0; #X connect 10 1 3 0; #X connect 13 0 8 1; #X connect 14 0 1 1; #X restore 26 268 pd lighting; #X obj 2 433 fps detailed; #X obj 309 221 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1; #X text 213 65 step; #X obj 55 144 vradio 15 1 0 3 empty empty empty 0 -6 0 8 -241291 -1 -1 2; #X obj 2 394 #out window; #X obj 273 372 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 256; #X obj 334 372 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 256; #X obj 402 357 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 256; #X text 74 158 differential; #X text 73 143 heightmap; #X text 73 174 topographic; #X obj 152 82 t a a; #X obj 217 220 t a a; #X obj 56 325 # * 255; #X obj 56 306 # >= 6; #X obj 56 287 # & 7; #X obj 2 37 loadbang; #X text 436 95 disable finger; #X obj 300 244 t a a; #X obj 2 192 # << 2; #X obj 192 46 metro 20; #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 -12 Copyright 2002 Mathieu Bouchard; #X text 0 -25 sand.pd; #X text -1 21 set size & reset; #X obj 2 295 #clip; #X obj 26 249 # << 0; #X connect 1 0 43 0; #X connect 1 1 14 0; #X connect 2 0 11 0; #X connect 3 0 22 0; #X connect 5 0 65 0; #X connect 6 0 50 0; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 8 1 33 0; #X connect 9 0 10 0; #X connect 9 1 23 0; #X connect 10 0 33 1; #X connect 11 0 15 0; #X connect 12 0 1 0; #X connect 13 0 26 0; #X connect 13 1 57 0; #X connect 15 0 6 0; #X connect 16 0 23 1; #X connect 17 0 35 0; #X connect 18 0 52 0; #X connect 19 0 37 0; #X connect 20 1 19 0; #X connect 20 1 63 0; #X connect 21 0 13 1; #X connect 22 0 51 0; #X connect 23 0 8 1; #X connect 24 0 73 0; #X connect 25 0 9 0; #X connect 26 0 57 0; #X connect 27 0 49 0; #X connect 28 0 64 0; #X connect 28 1 74 0; #X connect 28 2 60 0; #X connect 30 0 7 0; #X connect 32 0 57 0; #X connect 33 0 13 0; #X connect 34 0 17 0; #X connect 34 0 2 0; #X connect 35 0 3 0; #X connect 36 0 1 0; #X connect 37 0 18 0; #X connect 38 0 24 0; #X connect 39 0 27 0; #X connect 40 0 8 1; #X connect 43 0 56 0; #X connect 44 0 73 0; #X connect 45 0 29 0; #X connect 46 0 20 1; #X connect 48 0 28 1; #X connect 49 0 45 0; #X connect 49 0 4 0; #X connect 56 0 28 0; #X connect 56 1 7 1; #X connect 57 0 56 0; #X connect 57 1 20 0; #X connect 58 0 39 0; #X connect 59 0 58 0; #X connect 60 0 59 0; #X connect 61 0 36 0; #X connect 63 0 34 1; #X connect 63 1 34 0; #X connect 64 0 38 0; #X connect 65 0 7 0; #X connect 73 0 27 0; #X connect 74 0 44 0;