Update of /cvsroot/pure-data/abstractions/footils/list-abs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7158
Modified Files: list-minmax.pd Added Files: list-centroid-help.pd list-centroid.pd Log Message: centroid added, minmax optimized
Index: list-minmax.pd =================================================================== RCS file: /cvsroot/pure-data/abstractions/footils/list-abs/list-minmax.pd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** list-minmax.pd 1 Nov 2005 12:41:16 -0000 1.1 --- list-minmax.pd 21 Apr 2007 13:14:48 -0000 1.2 *************** *** 1,12 **** ! #N canvas 499 299 571 374 10; ! #X obj 128 37 list-drip; ! #X obj 128 60 route float; ! #X obj 128 204 f; ! #X obj 112 284 outlet; ! #X obj 171 259 f; ! #X obj 171 286 outlet; ! #X obj 40 198 t b b; ! #X obj 128 13 inlet; ! #X obj 112 256 f; #N canvas 0 0 450 300 once 0; #X obj 110 75 inlet; --- 1,12 ---- ! #N canvas 385 204 676 470 10; ! #X obj 128 97 list-drip; ! #X obj 128 120 route float; ! #X obj 159 256 f; ! #X obj 106 394 outlet; ! #X obj 165 369 f; ! #X obj 165 396 outlet; ! #X obj 106 305 t b b; ! #X obj 106 10 inlet; ! #X obj 106 366 f; #N canvas 0 0 450 300 once 0; #X obj 110 75 inlet; *************** *** 24,60 **** #X connect 4 0 1 1; #X connect 5 0 4 0; ! #X restore 218 112 pd once; ! #X obj 128 90 t f f f; ! #X obj 218 59 s $0-end; ! #X obj 262 87 r $0-end; ! #X obj 40 174 r $0-end; ! #X obj 128 146 <=; ! #X obj 128 168 select 1; ! #X obj 244 205 f; ! #X obj 244 169 select 1; ! #X obj 244 147 >=; #X connect 0 0 1 0; ! #X connect 0 1 11 0; ! #X connect 1 0 10 0; ! #X connect 2 0 8 1; ! #X connect 2 0 14 1; #X connect 4 0 5 0; #X connect 6 0 8 0; #X connect 6 1 4 0; ! #X connect 7 0 0 0; #X connect 8 0 3 0; ! #X connect 9 0 14 1; ! #X connect 9 0 18 1; ! #X connect 10 0 14 0; ! #X connect 10 0 18 0; ! #X connect 10 1 16 1; ! #X connect 10 1 2 1; ! #X connect 10 2 9 0; ! #X connect 12 0 9 1; ! #X connect 13 0 6 0; ! #X connect 14 0 15 0; ! #X connect 15 0 2 0; ! #X connect 16 0 4 1; ! #X connect 16 0 18 1; ! #X connect 17 0 16 0; ! #X connect 18 0 17 0; --- 24,53 ---- #X connect 4 0 1 1; #X connect 5 0 4 0; ! #X restore 260 183 pd once; ! #X obj 275 258 f; ! #X obj 244 257 max; ! #X obj 128 256 min; ! #X obj 128 150 t a a a; ! #X obj 106 30 t b a b; ! #X text 321 183 prime [min] and [max] with first item once; #X connect 0 0 1 0; ! #X connect 1 0 13 0; ! #X connect 2 0 12 1; #X connect 4 0 5 0; #X connect 6 0 8 0; #X connect 6 1 4 0; ! #X connect 7 0 14 0; #X connect 8 0 3 0; ! #X connect 9 0 11 1; ! #X connect 9 0 12 1; ! #X connect 10 0 11 1; ! #X connect 11 0 10 0; ! #X connect 11 0 4 1; ! #X connect 12 0 2 0; ! #X connect 12 0 8 1; ! #X connect 13 0 12 0; ! #X connect 13 1 11 0; ! #X connect 13 2 9 0; ! #X connect 14 0 6 0; ! #X connect 14 1 0 0; ! #X connect 14 2 9 1;
--- NEW FILE: list-centroid.pd --- #N canvas 204 70 675 629 10; #X obj 127 475 f; #X obj 127 65 inlet; #X obj 127 561 outlet; #X obj 163 170 list-enumerate; #X obj 163 197 t a a; #X obj 261 406 /; #X obj 261 376 swap; #X obj 210 345 select 0; #N canvas 286 344 401 287 sum(mi*i) 0; #X obj 126 138 +; #X obj 153 139 f; #X msg 168 88 0; #X obj 126 66 inlet; #X obj 168 66 inlet; #X obj 126 171 outlet; #X obj 126 103 *; #X connect 0 0 1 0; #X connect 0 0 5 0; #X connect 1 0 0 1; #X connect 2 0 0 1; #X connect 3 0 6 0; #X connect 4 0 2 0; #X connect 6 0 0 0; #X restore 284 255 pd sum(mi*i); #N canvas 573 330 450 328 sum(mi) 0; #X obj 179 137 +; #X obj 206 138 f; #X msg 296 77 0; #X obj 179 55 inlet; #X obj 296 55 inlet; #X obj 179 170 outlet; #X text 143 34 in: (idx value); #X text 40 89 swap to: (val idx); #X text 67 172 sum of values; #X obj 179 89 swap; #X connect 0 0 1 0; #X connect 0 0 5 0; #X connect 1 0 0 1; #X connect 2 0 0 1; #X connect 3 0 9 0; #X connect 4 0 2 0; #X connect 9 0 0 0; #X restore 163 253 pd sum(mi); #X obj 210 559 outlet; #X obj 127 399 spigot 1; #X obj 145 285 f; #X obj 240 528 print list-cog; #X obj 210 468 t b b; #X msg 240 503 warning: sum of items equals 0: centroid is undefined! ; #X obj 127 89 t b b a b b; #X text 69 26 centroid (center of mass) = sum(mi * i) / sum(mi); #X connect 0 0 2 0; #X connect 1 0 16 0; #X connect 3 0 4 0; #X connect 4 0 9 0; #X connect 4 1 8 0; #X connect 5 0 0 1; #X connect 6 0 5 0; #X connect 6 1 5 1; #X connect 7 0 14 0; #X connect 7 1 6 0; #X connect 8 0 6 1; #X connect 9 0 12 1; #X connect 11 0 0 0; #X connect 12 0 7 0; #X connect 12 0 11 1; #X connect 14 0 10 0; #X connect 14 1 15 0; #X connect 15 0 13 0; #X connect 16 0 11 0; #X connect 16 1 12 0; #X connect 16 2 3 0; #X connect 16 3 9 1; #X connect 16 4 8 1;
--- NEW FILE: list-centroid-help.pd --- #N canvas 285 188 596 561 10; #X floatatom 129 468 5 0 0 0 centroid - -; #X msg 129 363 1 1 1 1; #X msg 245 260 0 0 0 0; #X msg 245 279 -1 1; #X obj 215 469 bng 15 250 50 0 empty empty result_undefined 17 7 1 10 -262144 -1 -1; #X msg 129 245 0 1 0; #X obj 129 439 list-centroid; #X text 63 25 [list-centroid]; #X text 93 90 centroid = sum(mi * i) / sum(mi); #X text 71 49 Calculates the centroid or center of mass of a list of floats according to:; #X text 67 115 where the index i starts from 0; #X msg 247 344 -1 3; #X msg 129 287 1 2 3; #X text 314 270 these two are undefined!; #X msg 129 341 5 5 5; #N canvas 0 0 450 300 randlist 0; #X obj 134 129 until; #X msg 246 151 set; #X msg 134 193 add2 $1; #X obj 112 101 t b f b; #X obj 135 249 outlet; #X obj 112 31 inlet; #X obj 112 73 + 1; #X obj 112 53 random 10; #X obj 134 151 random 10; #X obj 134 171 - 5; #X connect 0 0 8 0; #X connect 1 0 4 0; #X connect 2 0 4 0; #X connect 3 0 4 0; #X connect 3 1 0 0; #X connect 3 2 1 0; #X connect 5 0 7 0; #X connect 6 0 3 0; #X connect 7 0 6 0; #X connect 8 0 9 0; #X connect 9 0 2 0; #X restore 295 337 pd randlist; #X msg 295 363 4; #X msg 295 315 bang; #X msg 129 306 10 20 30; #X msg 129 267 0 2 0 0 0 1; #X msg 248 325 -1 2; #X msg 248 407 -10 9; #X text 305 406 Note: a centroid can be negative!; #X text 75 520 2007 Frank Barknecht; #X text 67 146 Negative values are possible.; #X text 65 174 If all floats add up to 0 , the result is undefined. In this case , no result will be sent to the first outlet , instead the second outlet will bang and a console warning will be issued.; #X connect 1 0 6 0; #X connect 2 0 6 0; #X connect 3 0 6 0; #X connect 5 0 6 0; #X connect 6 0 0 0; #X connect 6 1 4 0; #X connect 11 0 6 0; #X connect 12 0 6 0; #X connect 14 0 6 0; #X connect 15 0 16 0; #X connect 16 0 6 0; #X connect 17 0 15 0; #X connect 18 0 6 0; #X connect 19 0 6 0; #X connect 20 0 6 0; #X connect 21 0 6 0;