aboutsummaryrefslogtreecommitdiff
path: root/src/mtx_qhull/convhull.pd
blob: 3328bf440cf51f24ba84267365b27db3792e26e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
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;