aboutsummaryrefslogtreecommitdiff
path: root/src/mtx_qhull
diff options
context:
space:
mode:
Diffstat (limited to 'src/mtx_qhull')
-rwxr-xr-xsrc/mtx_qhull/convhull.pd311
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;