diff options
-rwxr-xr-x | src/mtx_qhull/convhull.pd | 311 |
1 files changed, 311 insertions, 0 deletions
diff --git a/src/mtx_qhull/convhull.pd b/src/mtx_qhull/convhull.pd new file mode 100755 index 0000000..3328bf4 --- /dev/null +++ b/src/mtx_qhull/convhull.pd @@ -0,0 +1,311 @@ +#N canvas 516 162 809 477 12; +#N canvas 361 7 823 746 alltriangles 0; +#X obj 90 -47 t a a; +#X obj 90 -21 mtx_size; +#X obj 90 48 until; +#X obj 132 48 f; +#X obj 168 49 + 1; +#X msg 150 26 1; +#X obj 331 370 mtx; +#X obj 273 370 mtx; +#X obj 216 370 mtx; +#X msg 216 348 row \$1; +#X obj 132 154 until; +#X obj 174 154 f; +#X obj 202 154 + 1; +#X obj 132 68 + 1; +#X obj 132 110 -; +#X obj 90 -1 t f b f; +#X obj 132 88 t f f f; +#X obj 216 283 pack f f f; +#X obj 132 132 * -1; +#X obj 90 27 - 2; +#X obj 186 112 - 1; +#X obj 174 262 until; +#X obj 216 262 f; +#X obj 244 262 + 1; +#X obj 174 218 -; +#X obj 174 196 t f f f; +#X obj 174 240 * -1; +#X obj 228 220 - 1; +#X obj 174 176 + 1; +#X obj 206 176 + 1; +#X obj 90 -71 inlet; +#X obj 216 508 outlet; +#X obj 216 433 list append; +#X obj 273 403 list append; +#X obj 216 455 mtx 3 3; +#X text 218 54 n=1...L; +#X text 249 158 m=n+1...L; +#X text 302 267 k=m+1...L; +#X text 351 285 [k m n(; +#X text 312 451 comment; +#X obj 216 482 mtx_transpose; +#X text 330 482 [ak \, am \, an]; +#X obj 462 511 outlet kmn; +#X msg 273 348 row \$2; +#X msg 331 348 row \$3; +#X obj 216 304 t l l l; +#X connect 0 0 1 0; +#X connect 0 1 6 1; +#X connect 0 1 7 1; +#X connect 0 1 8 1; +#X connect 1 0 15 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 13 0; +#X connect 4 0 3 1; +#X connect 5 0 3 1; +#X connect 6 0 33 1; +#X connect 7 0 33 0; +#X connect 8 0 32 0; +#X connect 9 0 8 0; +#X connect 10 0 11 0; +#X connect 11 0 12 0; +#X connect 11 0 17 1; +#X connect 11 0 28 0; +#X connect 12 0 11 1; +#X connect 13 0 16 0; +#X connect 14 0 18 0; +#X connect 15 0 19 0; +#X connect 15 1 5 0; +#X connect 15 2 14 1; +#X connect 15 2 29 0; +#X connect 16 0 14 0; +#X connect 16 1 11 1; +#X connect 16 2 20 0; +#X connect 17 0 42 0; +#X connect 17 0 45 0; +#X connect 18 0 10 0; +#X connect 19 0 2 0; +#X connect 20 0 17 2; +#X connect 21 0 22 0; +#X connect 22 0 23 0; +#X connect 22 0 17 0; +#X connect 23 0 22 1; +#X connect 24 0 26 0; +#X connect 25 0 24 0; +#X connect 25 1 22 1; +#X connect 25 2 27 0; +#X connect 26 0 21 0; +#X connect 27 0 22 1; +#X connect 28 0 25 0; +#X connect 29 0 24 1; +#X connect 30 0 0 0; +#X connect 32 0 34 0; +#X connect 33 0 32 1; +#X connect 34 0 40 0; +#X connect 40 0 31 0; +#X connect 43 0 7 0; +#X connect 44 0 6 0; +#X connect 45 0 9 0; +#X connect 45 1 43 0; +#X connect 45 2 44 0; +#X restore 107 124 pd alltriangles; +#X obj 107 96 t a a; +#X obj 16 16 inlet; +#X obj 16 389 outlet; +#N canvas 0 0 450 474 normalizepoints 0; +#X obj 94 39 inlet; +#X obj 94 63 t a a; +#X obj 139 133 mtx_.^ 2; +#X obj 139 156 mtx_sum; +#X obj 139 180 t l l; +#X obj 139 207 mtx; +#X obj 185 180 length; +#X obj 94 308 outlet; +#X obj 94 282 mtx_./; +#X obj 139 230 mtx_.^ 0.5; +#X msg 240 180 size \$1 1; +#X obj 138 254 mtx_repmat 1 3; +#X obj 138 108 mtx_transpose; +#X connect 0 0 1 0; +#X connect 1 0 8 0; +#X connect 1 1 12 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 6 0; +#X connect 5 0 9 0; +#X connect 6 0 10 0; +#X connect 8 0 7 0; +#X connect 9 0 11 0; +#X connect 10 0 5 0; +#X connect 11 0 8 1; +#X connect 12 0 2 0; +#X restore 107 69 pd normalizepoints; +#X obj 98 270 t l; +#X obj 16 297 list; +#X obj 16 321 t l l; +#X obj 16 355 mtx; +#X obj 70 321 length; +#X obj 130 321 / 3; +#X msg 164 321 size \$1 3; +#X obj 59 270 list; +#X obj 16 42 t b a b; +#X text 308 55 \$1 allows to specify the algorithmic exactness; +#X text 329 73 if \$1>0 \, triangles that are not strictly; +#X text 330 91 part of the convex hull can be enclosed; +#X text 329 109 it is recommended for numerical reasons to use; +#X text 331 126 0.001 to ensure all triangles can be found; +#N canvas 25 51 450 300 normal_vector 0; +#X obj 47 32 inlet; +#X obj 47 228 outlet; +#X obj 109 166 mtx_-; +#X obj 47 148 t a a; +#X obj 47 59 t a a; +#X obj 47 171 mtx_-; +#X text 128 194 n_kmn = (am-ak) x (am-an); +#X obj 95 84 mtx_slice 1 3 end 3; +#X obj 79 105 mtx_slice 1 1 end 1; +#X obj 47 128 mtx_slice 1 2 end 2; +#X obj 47 193 mtx_xprod; +#X connect 0 0 4 0; +#X connect 2 0 10 1; +#X connect 3 0 5 0; +#X connect 3 1 2 0; +#X connect 4 0 9 0; +#X connect 4 1 7 0; +#X connect 4 1 8 0; +#X connect 5 0 10 0; +#X connect 7 0 2 1; +#X connect 8 0 5 1; +#X connect 9 0 3 0; +#X connect 10 0 1 0; +#X restore 107 153 pd normal_vector; +#N canvas 93 179 470 520 normal_distances 0; +#X obj 16 21 inlet; +#X obj 16 489 outlet; +#X obj 333 24 inlet Punkte; +#X obj 214 28 inlet k; +#X obj 16 318 mtx_*; +#X obj 16 183 t a a; +#X obj 333 199 mtx_transpose; +#X obj 214 155 mtx; +#X msg 214 128 row \$1; +#X obj 213 178 mtx 3 1; +#X obj 69 349 mtx_*; +#X text 30 290 n_kmn^T * P; +#X text 116 348 n_kmn^T * ak; +#X obj 16 153 mtx_transpose; +#X obj 16 438 mtx_- 0; +#X msg 69 378 \$3; +#N canvas 612 2 450 474 normalizepoints2 0; +#X obj 94 19 inlet; +#X obj 94 43 t a a; +#X obj 139 93 mtx_.^ 2; +#X obj 139 116 mtx_sum; +#X obj 139 140 t l l; +#X obj 139 167 mtx; +#X obj 185 140 length; +#X obj 94 268 outlet; +#X obj 94 242 mtx_./; +#X obj 139 190 mtx_.^ 0.5; +#X msg 240 141 size 1 \$1; +#X obj 138 212 mtx_repmat 3 1; +#X connect 0 0 1 0; +#X connect 1 0 8 0; +#X connect 1 1 2 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 6 0; +#X connect 5 0 9 0; +#X connect 6 0 10 0; +#X connect 8 0 7 0; +#X connect 9 0 11 0; +#X connect 10 0 5 0; +#X connect 11 0 8 1; +#X restore 16 98 pd normalizepoints2; +#X connect 0 0 16 0; +#X connect 2 0 6 0; +#X connect 2 0 7 1; +#X connect 3 0 8 0; +#X connect 4 0 14 0; +#X connect 5 0 4 0; +#X connect 5 1 10 0; +#X connect 6 0 4 1; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 9 0 10 1; +#X connect 10 0 15 0; +#X connect 13 0 5 0; +#X connect 14 0 1 0; +#X connect 15 0 14 1; +#X connect 16 0 13 0; +#X restore 107 186 pd normal_distances; +#N canvas 0 0 678 377 filter_triangle_of_hull 0; +#X obj 23 11 inlet; +#X text 32 -8 normalabstaende; +#X obj 241 12 inlet; +#X text 246 -7 k m n; +#X obj 23 58 t a a; +#X obj 146 142 mtx_* -1; +#X obj 146 188 mtx_prod; +#X obj 23 36 mtx_transpose; +#X obj 23 178 mtx_prod; +#X obj 23 202 sel 1; +#X obj 146 211 sel 1; +#X obj 146 238 list; +#X msg 23 278 \$3 \$2 \$1; +#X obj 23 232 list; +#X obj 23 325 outlet; +#X text 419 40 \$1 adds some inaccuracy; +#X text 446 57 to "convex"; +#X text 265 202 of the regarded triangle?; +#X text 298 265 hull; +#X obj 365 14 loadbang; +#X obj 146 165 mtx_>= 0; +#X obj 23 142 mtx_>= 0; +#X obj 365 36 f \$1; +#X obj 365 57 abs; +#X obj 364 79 * -1; +#X text 264 185 are all points on one or the other side; +#X text 296 248 then it is part of the convex; +#X text 261 218 (or at least close to that); +#X connect 0 0 7 0; +#X connect 2 0 11 1; +#X connect 2 0 13 1; +#X connect 4 0 21 0; +#X connect 4 1 5 0; +#X connect 5 0 20 0; +#X connect 6 0 10 0; +#X connect 7 0 4 0; +#X connect 8 0 9 0; +#X connect 9 0 13 0; +#X connect 10 0 11 0; +#X connect 11 0 14 0; +#X connect 12 0 14 0; +#X connect 13 0 12 0; +#X connect 19 0 22 0; +#X connect 20 0 6 0; +#X connect 21 0 8 0; +#X connect 22 0 23 0; +#X connect 23 0 24 0; +#X connect 24 0 20 1; +#X connect 24 0 21 1; +#X restore 107 218 pd filter_triangle_of_hull; +#X connect 0 0 19 0; +#X connect 0 1 20 1; +#X connect 0 1 21 1; +#X connect 1 0 0 0; +#X connect 1 1 20 2; +#X connect 2 0 13 0; +#X connect 4 0 1 0; +#X connect 5 0 12 1; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 7 1 9 0; +#X connect 8 0 3 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 8 0; +#X connect 12 0 5 0; +#X connect 12 0 6 1; +#X connect 13 0 6 0; +#X connect 13 1 4 0; +#X connect 13 2 6 1; +#X connect 13 2 12 1; +#X connect 19 0 20 0; +#X connect 20 0 21 0; +#X connect 21 0 12 0; |