@tscircuit/hypergraph 0.0.41 → 0.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1714 -43
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,3 +1,1471 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
19
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
20
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
21
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
22
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
23
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
24
|
+
mod
|
|
25
|
+
));
|
|
26
|
+
|
|
27
|
+
// node_modules/binary-search-bounds/search-bounds.js
|
|
28
|
+
var require_search_bounds = __commonJS({
|
|
29
|
+
"node_modules/binary-search-bounds/search-bounds.js"(exports, module) {
|
|
30
|
+
"use strict";
|
|
31
|
+
function ge(a, y, c, l, h) {
|
|
32
|
+
var i = h + 1;
|
|
33
|
+
while (l <= h) {
|
|
34
|
+
var m = l + h >>> 1, x = a[m];
|
|
35
|
+
var p = c !== void 0 ? c(x, y) : x - y;
|
|
36
|
+
if (p >= 0) {
|
|
37
|
+
i = m;
|
|
38
|
+
h = m - 1;
|
|
39
|
+
} else {
|
|
40
|
+
l = m + 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return i;
|
|
44
|
+
}
|
|
45
|
+
function gt(a, y, c, l, h) {
|
|
46
|
+
var i = h + 1;
|
|
47
|
+
while (l <= h) {
|
|
48
|
+
var m = l + h >>> 1, x = a[m];
|
|
49
|
+
var p = c !== void 0 ? c(x, y) : x - y;
|
|
50
|
+
if (p > 0) {
|
|
51
|
+
i = m;
|
|
52
|
+
h = m - 1;
|
|
53
|
+
} else {
|
|
54
|
+
l = m + 1;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return i;
|
|
58
|
+
}
|
|
59
|
+
function lt(a, y, c, l, h) {
|
|
60
|
+
var i = l - 1;
|
|
61
|
+
while (l <= h) {
|
|
62
|
+
var m = l + h >>> 1, x = a[m];
|
|
63
|
+
var p = c !== void 0 ? c(x, y) : x - y;
|
|
64
|
+
if (p < 0) {
|
|
65
|
+
i = m;
|
|
66
|
+
l = m + 1;
|
|
67
|
+
} else {
|
|
68
|
+
h = m - 1;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return i;
|
|
72
|
+
}
|
|
73
|
+
function le(a, y, c, l, h) {
|
|
74
|
+
var i = l - 1;
|
|
75
|
+
while (l <= h) {
|
|
76
|
+
var m = l + h >>> 1, x = a[m];
|
|
77
|
+
var p = c !== void 0 ? c(x, y) : x - y;
|
|
78
|
+
if (p <= 0) {
|
|
79
|
+
i = m;
|
|
80
|
+
l = m + 1;
|
|
81
|
+
} else {
|
|
82
|
+
h = m - 1;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return i;
|
|
86
|
+
}
|
|
87
|
+
function eq(a, y, c, l, h) {
|
|
88
|
+
while (l <= h) {
|
|
89
|
+
var m = l + h >>> 1, x = a[m];
|
|
90
|
+
var p = c !== void 0 ? c(x, y) : x - y;
|
|
91
|
+
if (p === 0) {
|
|
92
|
+
return m;
|
|
93
|
+
}
|
|
94
|
+
if (p <= 0) {
|
|
95
|
+
l = m + 1;
|
|
96
|
+
} else {
|
|
97
|
+
h = m - 1;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return -1;
|
|
101
|
+
}
|
|
102
|
+
function norm(a, y, c, l, h, f) {
|
|
103
|
+
if (typeof c === "function") {
|
|
104
|
+
return f(a, y, c, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0);
|
|
105
|
+
}
|
|
106
|
+
return f(a, y, void 0, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0);
|
|
107
|
+
}
|
|
108
|
+
module.exports = {
|
|
109
|
+
ge: function(a, y, c, l, h) {
|
|
110
|
+
return norm(a, y, c, l, h, ge);
|
|
111
|
+
},
|
|
112
|
+
gt: function(a, y, c, l, h) {
|
|
113
|
+
return norm(a, y, c, l, h, gt);
|
|
114
|
+
},
|
|
115
|
+
lt: function(a, y, c, l, h) {
|
|
116
|
+
return norm(a, y, c, l, h, lt);
|
|
117
|
+
},
|
|
118
|
+
le: function(a, y, c, l, h) {
|
|
119
|
+
return norm(a, y, c, l, h, le);
|
|
120
|
+
},
|
|
121
|
+
eq: function(a, y, c, l, h) {
|
|
122
|
+
return norm(a, y, c, l, h, eq);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// node_modules/two-product/two-product.js
|
|
129
|
+
var require_two_product = __commonJS({
|
|
130
|
+
"node_modules/two-product/two-product.js"(exports, module) {
|
|
131
|
+
"use strict";
|
|
132
|
+
module.exports = twoProduct;
|
|
133
|
+
var SPLITTER = +(Math.pow(2, 27) + 1);
|
|
134
|
+
function twoProduct(a, b, result) {
|
|
135
|
+
var x = a * b;
|
|
136
|
+
var c = SPLITTER * a;
|
|
137
|
+
var abig = c - a;
|
|
138
|
+
var ahi = c - abig;
|
|
139
|
+
var alo = a - ahi;
|
|
140
|
+
var d = SPLITTER * b;
|
|
141
|
+
var bbig = d - b;
|
|
142
|
+
var bhi = d - bbig;
|
|
143
|
+
var blo = b - bhi;
|
|
144
|
+
var err1 = x - ahi * bhi;
|
|
145
|
+
var err2 = err1 - alo * bhi;
|
|
146
|
+
var err3 = err2 - ahi * blo;
|
|
147
|
+
var y = alo * blo - err3;
|
|
148
|
+
if (result) {
|
|
149
|
+
result[0] = y;
|
|
150
|
+
result[1] = x;
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
153
|
+
return [y, x];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
// node_modules/robust-sum/robust-sum.js
|
|
159
|
+
var require_robust_sum = __commonJS({
|
|
160
|
+
"node_modules/robust-sum/robust-sum.js"(exports, module) {
|
|
161
|
+
"use strict";
|
|
162
|
+
module.exports = linearExpansionSum;
|
|
163
|
+
function scalarScalar(a, b) {
|
|
164
|
+
var x = a + b;
|
|
165
|
+
var bv = x - a;
|
|
166
|
+
var av = x - bv;
|
|
167
|
+
var br = b - bv;
|
|
168
|
+
var ar = a - av;
|
|
169
|
+
var y = ar + br;
|
|
170
|
+
if (y) {
|
|
171
|
+
return [y, x];
|
|
172
|
+
}
|
|
173
|
+
return [x];
|
|
174
|
+
}
|
|
175
|
+
function linearExpansionSum(e, f) {
|
|
176
|
+
var ne = e.length | 0;
|
|
177
|
+
var nf = f.length | 0;
|
|
178
|
+
if (ne === 1 && nf === 1) {
|
|
179
|
+
return scalarScalar(e[0], f[0]);
|
|
180
|
+
}
|
|
181
|
+
var n = ne + nf;
|
|
182
|
+
var g = new Array(n);
|
|
183
|
+
var count = 0;
|
|
184
|
+
var eptr = 0;
|
|
185
|
+
var fptr = 0;
|
|
186
|
+
var abs = Math.abs;
|
|
187
|
+
var ei = e[eptr];
|
|
188
|
+
var ea = abs(ei);
|
|
189
|
+
var fi = f[fptr];
|
|
190
|
+
var fa = abs(fi);
|
|
191
|
+
var a, b;
|
|
192
|
+
if (ea < fa) {
|
|
193
|
+
b = ei;
|
|
194
|
+
eptr += 1;
|
|
195
|
+
if (eptr < ne) {
|
|
196
|
+
ei = e[eptr];
|
|
197
|
+
ea = abs(ei);
|
|
198
|
+
}
|
|
199
|
+
} else {
|
|
200
|
+
b = fi;
|
|
201
|
+
fptr += 1;
|
|
202
|
+
if (fptr < nf) {
|
|
203
|
+
fi = f[fptr];
|
|
204
|
+
fa = abs(fi);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (eptr < ne && ea < fa || fptr >= nf) {
|
|
208
|
+
a = ei;
|
|
209
|
+
eptr += 1;
|
|
210
|
+
if (eptr < ne) {
|
|
211
|
+
ei = e[eptr];
|
|
212
|
+
ea = abs(ei);
|
|
213
|
+
}
|
|
214
|
+
} else {
|
|
215
|
+
a = fi;
|
|
216
|
+
fptr += 1;
|
|
217
|
+
if (fptr < nf) {
|
|
218
|
+
fi = f[fptr];
|
|
219
|
+
fa = abs(fi);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
var x = a + b;
|
|
223
|
+
var bv = x - a;
|
|
224
|
+
var y = b - bv;
|
|
225
|
+
var q0 = y;
|
|
226
|
+
var q1 = x;
|
|
227
|
+
var _x, _bv, _av, _br, _ar;
|
|
228
|
+
while (eptr < ne && fptr < nf) {
|
|
229
|
+
if (ea < fa) {
|
|
230
|
+
a = ei;
|
|
231
|
+
eptr += 1;
|
|
232
|
+
if (eptr < ne) {
|
|
233
|
+
ei = e[eptr];
|
|
234
|
+
ea = abs(ei);
|
|
235
|
+
}
|
|
236
|
+
} else {
|
|
237
|
+
a = fi;
|
|
238
|
+
fptr += 1;
|
|
239
|
+
if (fptr < nf) {
|
|
240
|
+
fi = f[fptr];
|
|
241
|
+
fa = abs(fi);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
b = q0;
|
|
245
|
+
x = a + b;
|
|
246
|
+
bv = x - a;
|
|
247
|
+
y = b - bv;
|
|
248
|
+
if (y) {
|
|
249
|
+
g[count++] = y;
|
|
250
|
+
}
|
|
251
|
+
_x = q1 + x;
|
|
252
|
+
_bv = _x - q1;
|
|
253
|
+
_av = _x - _bv;
|
|
254
|
+
_br = x - _bv;
|
|
255
|
+
_ar = q1 - _av;
|
|
256
|
+
q0 = _ar + _br;
|
|
257
|
+
q1 = _x;
|
|
258
|
+
}
|
|
259
|
+
while (eptr < ne) {
|
|
260
|
+
a = ei;
|
|
261
|
+
b = q0;
|
|
262
|
+
x = a + b;
|
|
263
|
+
bv = x - a;
|
|
264
|
+
y = b - bv;
|
|
265
|
+
if (y) {
|
|
266
|
+
g[count++] = y;
|
|
267
|
+
}
|
|
268
|
+
_x = q1 + x;
|
|
269
|
+
_bv = _x - q1;
|
|
270
|
+
_av = _x - _bv;
|
|
271
|
+
_br = x - _bv;
|
|
272
|
+
_ar = q1 - _av;
|
|
273
|
+
q0 = _ar + _br;
|
|
274
|
+
q1 = _x;
|
|
275
|
+
eptr += 1;
|
|
276
|
+
if (eptr < ne) {
|
|
277
|
+
ei = e[eptr];
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
while (fptr < nf) {
|
|
281
|
+
a = fi;
|
|
282
|
+
b = q0;
|
|
283
|
+
x = a + b;
|
|
284
|
+
bv = x - a;
|
|
285
|
+
y = b - bv;
|
|
286
|
+
if (y) {
|
|
287
|
+
g[count++] = y;
|
|
288
|
+
}
|
|
289
|
+
_x = q1 + x;
|
|
290
|
+
_bv = _x - q1;
|
|
291
|
+
_av = _x - _bv;
|
|
292
|
+
_br = x - _bv;
|
|
293
|
+
_ar = q1 - _av;
|
|
294
|
+
q0 = _ar + _br;
|
|
295
|
+
q1 = _x;
|
|
296
|
+
fptr += 1;
|
|
297
|
+
if (fptr < nf) {
|
|
298
|
+
fi = f[fptr];
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
if (q0) {
|
|
302
|
+
g[count++] = q0;
|
|
303
|
+
}
|
|
304
|
+
if (q1) {
|
|
305
|
+
g[count++] = q1;
|
|
306
|
+
}
|
|
307
|
+
if (!count) {
|
|
308
|
+
g[count++] = 0;
|
|
309
|
+
}
|
|
310
|
+
g.length = count;
|
|
311
|
+
return g;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
// node_modules/two-sum/two-sum.js
|
|
317
|
+
var require_two_sum = __commonJS({
|
|
318
|
+
"node_modules/two-sum/two-sum.js"(exports, module) {
|
|
319
|
+
"use strict";
|
|
320
|
+
module.exports = fastTwoSum;
|
|
321
|
+
function fastTwoSum(a, b, result) {
|
|
322
|
+
var x = a + b;
|
|
323
|
+
var bv = x - a;
|
|
324
|
+
var av = x - bv;
|
|
325
|
+
var br = b - bv;
|
|
326
|
+
var ar = a - av;
|
|
327
|
+
if (result) {
|
|
328
|
+
result[0] = ar + br;
|
|
329
|
+
result[1] = x;
|
|
330
|
+
return result;
|
|
331
|
+
}
|
|
332
|
+
return [ar + br, x];
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
// node_modules/robust-scale/robust-scale.js
|
|
338
|
+
var require_robust_scale = __commonJS({
|
|
339
|
+
"node_modules/robust-scale/robust-scale.js"(exports, module) {
|
|
340
|
+
"use strict";
|
|
341
|
+
var twoProduct = require_two_product();
|
|
342
|
+
var twoSum = require_two_sum();
|
|
343
|
+
module.exports = scaleLinearExpansion;
|
|
344
|
+
function scaleLinearExpansion(e, scale2) {
|
|
345
|
+
var n = e.length;
|
|
346
|
+
if (n === 1) {
|
|
347
|
+
var ts = twoProduct(e[0], scale2);
|
|
348
|
+
if (ts[0]) {
|
|
349
|
+
return ts;
|
|
350
|
+
}
|
|
351
|
+
return [ts[1]];
|
|
352
|
+
}
|
|
353
|
+
var g = new Array(2 * n);
|
|
354
|
+
var q = [0.1, 0.1];
|
|
355
|
+
var t = [0.1, 0.1];
|
|
356
|
+
var count = 0;
|
|
357
|
+
twoProduct(e[0], scale2, q);
|
|
358
|
+
if (q[0]) {
|
|
359
|
+
g[count++] = q[0];
|
|
360
|
+
}
|
|
361
|
+
for (var i = 1; i < n; ++i) {
|
|
362
|
+
twoProduct(e[i], scale2, t);
|
|
363
|
+
var pq = q[1];
|
|
364
|
+
twoSum(pq, t[0], q);
|
|
365
|
+
if (q[0]) {
|
|
366
|
+
g[count++] = q[0];
|
|
367
|
+
}
|
|
368
|
+
var a = t[1];
|
|
369
|
+
var b = q[1];
|
|
370
|
+
var x = a + b;
|
|
371
|
+
var bv = x - a;
|
|
372
|
+
var y = b - bv;
|
|
373
|
+
q[1] = x;
|
|
374
|
+
if (y) {
|
|
375
|
+
g[count++] = y;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
if (q[1]) {
|
|
379
|
+
g[count++] = q[1];
|
|
380
|
+
}
|
|
381
|
+
if (count === 0) {
|
|
382
|
+
g[count++] = 0;
|
|
383
|
+
}
|
|
384
|
+
g.length = count;
|
|
385
|
+
return g;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
// node_modules/robust-subtract/robust-diff.js
|
|
391
|
+
var require_robust_diff = __commonJS({
|
|
392
|
+
"node_modules/robust-subtract/robust-diff.js"(exports, module) {
|
|
393
|
+
"use strict";
|
|
394
|
+
module.exports = robustSubtract;
|
|
395
|
+
function scalarScalar(a, b) {
|
|
396
|
+
var x = a + b;
|
|
397
|
+
var bv = x - a;
|
|
398
|
+
var av = x - bv;
|
|
399
|
+
var br = b - bv;
|
|
400
|
+
var ar = a - av;
|
|
401
|
+
var y = ar + br;
|
|
402
|
+
if (y) {
|
|
403
|
+
return [y, x];
|
|
404
|
+
}
|
|
405
|
+
return [x];
|
|
406
|
+
}
|
|
407
|
+
function robustSubtract(e, f) {
|
|
408
|
+
var ne = e.length | 0;
|
|
409
|
+
var nf = f.length | 0;
|
|
410
|
+
if (ne === 1 && nf === 1) {
|
|
411
|
+
return scalarScalar(e[0], -f[0]);
|
|
412
|
+
}
|
|
413
|
+
var n = ne + nf;
|
|
414
|
+
var g = new Array(n);
|
|
415
|
+
var count = 0;
|
|
416
|
+
var eptr = 0;
|
|
417
|
+
var fptr = 0;
|
|
418
|
+
var abs = Math.abs;
|
|
419
|
+
var ei = e[eptr];
|
|
420
|
+
var ea = abs(ei);
|
|
421
|
+
var fi = -f[fptr];
|
|
422
|
+
var fa = abs(fi);
|
|
423
|
+
var a, b;
|
|
424
|
+
if (ea < fa) {
|
|
425
|
+
b = ei;
|
|
426
|
+
eptr += 1;
|
|
427
|
+
if (eptr < ne) {
|
|
428
|
+
ei = e[eptr];
|
|
429
|
+
ea = abs(ei);
|
|
430
|
+
}
|
|
431
|
+
} else {
|
|
432
|
+
b = fi;
|
|
433
|
+
fptr += 1;
|
|
434
|
+
if (fptr < nf) {
|
|
435
|
+
fi = -f[fptr];
|
|
436
|
+
fa = abs(fi);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
if (eptr < ne && ea < fa || fptr >= nf) {
|
|
440
|
+
a = ei;
|
|
441
|
+
eptr += 1;
|
|
442
|
+
if (eptr < ne) {
|
|
443
|
+
ei = e[eptr];
|
|
444
|
+
ea = abs(ei);
|
|
445
|
+
}
|
|
446
|
+
} else {
|
|
447
|
+
a = fi;
|
|
448
|
+
fptr += 1;
|
|
449
|
+
if (fptr < nf) {
|
|
450
|
+
fi = -f[fptr];
|
|
451
|
+
fa = abs(fi);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
var x = a + b;
|
|
455
|
+
var bv = x - a;
|
|
456
|
+
var y = b - bv;
|
|
457
|
+
var q0 = y;
|
|
458
|
+
var q1 = x;
|
|
459
|
+
var _x, _bv, _av, _br, _ar;
|
|
460
|
+
while (eptr < ne && fptr < nf) {
|
|
461
|
+
if (ea < fa) {
|
|
462
|
+
a = ei;
|
|
463
|
+
eptr += 1;
|
|
464
|
+
if (eptr < ne) {
|
|
465
|
+
ei = e[eptr];
|
|
466
|
+
ea = abs(ei);
|
|
467
|
+
}
|
|
468
|
+
} else {
|
|
469
|
+
a = fi;
|
|
470
|
+
fptr += 1;
|
|
471
|
+
if (fptr < nf) {
|
|
472
|
+
fi = -f[fptr];
|
|
473
|
+
fa = abs(fi);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
b = q0;
|
|
477
|
+
x = a + b;
|
|
478
|
+
bv = x - a;
|
|
479
|
+
y = b - bv;
|
|
480
|
+
if (y) {
|
|
481
|
+
g[count++] = y;
|
|
482
|
+
}
|
|
483
|
+
_x = q1 + x;
|
|
484
|
+
_bv = _x - q1;
|
|
485
|
+
_av = _x - _bv;
|
|
486
|
+
_br = x - _bv;
|
|
487
|
+
_ar = q1 - _av;
|
|
488
|
+
q0 = _ar + _br;
|
|
489
|
+
q1 = _x;
|
|
490
|
+
}
|
|
491
|
+
while (eptr < ne) {
|
|
492
|
+
a = ei;
|
|
493
|
+
b = q0;
|
|
494
|
+
x = a + b;
|
|
495
|
+
bv = x - a;
|
|
496
|
+
y = b - bv;
|
|
497
|
+
if (y) {
|
|
498
|
+
g[count++] = y;
|
|
499
|
+
}
|
|
500
|
+
_x = q1 + x;
|
|
501
|
+
_bv = _x - q1;
|
|
502
|
+
_av = _x - _bv;
|
|
503
|
+
_br = x - _bv;
|
|
504
|
+
_ar = q1 - _av;
|
|
505
|
+
q0 = _ar + _br;
|
|
506
|
+
q1 = _x;
|
|
507
|
+
eptr += 1;
|
|
508
|
+
if (eptr < ne) {
|
|
509
|
+
ei = e[eptr];
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
while (fptr < nf) {
|
|
513
|
+
a = fi;
|
|
514
|
+
b = q0;
|
|
515
|
+
x = a + b;
|
|
516
|
+
bv = x - a;
|
|
517
|
+
y = b - bv;
|
|
518
|
+
if (y) {
|
|
519
|
+
g[count++] = y;
|
|
520
|
+
}
|
|
521
|
+
_x = q1 + x;
|
|
522
|
+
_bv = _x - q1;
|
|
523
|
+
_av = _x - _bv;
|
|
524
|
+
_br = x - _bv;
|
|
525
|
+
_ar = q1 - _av;
|
|
526
|
+
q0 = _ar + _br;
|
|
527
|
+
q1 = _x;
|
|
528
|
+
fptr += 1;
|
|
529
|
+
if (fptr < nf) {
|
|
530
|
+
fi = -f[fptr];
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
if (q0) {
|
|
534
|
+
g[count++] = q0;
|
|
535
|
+
}
|
|
536
|
+
if (q1) {
|
|
537
|
+
g[count++] = q1;
|
|
538
|
+
}
|
|
539
|
+
if (!count) {
|
|
540
|
+
g[count++] = 0;
|
|
541
|
+
}
|
|
542
|
+
g.length = count;
|
|
543
|
+
return g;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
// node_modules/robust-orientation/orientation.js
|
|
549
|
+
var require_orientation = __commonJS({
|
|
550
|
+
"node_modules/robust-orientation/orientation.js"(exports, module) {
|
|
551
|
+
"use strict";
|
|
552
|
+
var twoProduct = require_two_product();
|
|
553
|
+
var robustSum = require_robust_sum();
|
|
554
|
+
var robustScale = require_robust_scale();
|
|
555
|
+
var robustSubtract = require_robust_diff();
|
|
556
|
+
var NUM_EXPAND = 5;
|
|
557
|
+
var EPSILON = 11102230246251565e-32;
|
|
558
|
+
var ERRBOUND3 = (3 + 16 * EPSILON) * EPSILON;
|
|
559
|
+
var ERRBOUND4 = (7 + 56 * EPSILON) * EPSILON;
|
|
560
|
+
function orientation_3(sum, prod, scale2, sub) {
|
|
561
|
+
return function orientation3Exact2(m0, m1, m2) {
|
|
562
|
+
var p = sum(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])));
|
|
563
|
+
var n = sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0]));
|
|
564
|
+
var d = sub(p, n);
|
|
565
|
+
return d[d.length - 1];
|
|
566
|
+
};
|
|
567
|
+
}
|
|
568
|
+
function orientation_4(sum, prod, scale2, sub) {
|
|
569
|
+
return function orientation4Exact2(m0, m1, m2, m3) {
|
|
570
|
+
var p = sum(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))));
|
|
571
|
+
var n = sum(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), sum(scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))));
|
|
572
|
+
var d = sub(p, n);
|
|
573
|
+
return d[d.length - 1];
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
function orientation_5(sum, prod, scale2, sub) {
|
|
577
|
+
return function orientation5Exact(m0, m1, m2, m3, m4) {
|
|
578
|
+
var p = sum(sum(sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m2[2]), sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), -m3[2]), scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m4[2]))), m1[3]), sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m3[2]), scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m4[2]))), -m2[3]), scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m4[2]))), m3[3]))), sum(scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), -m4[3]), sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m3[2]), scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m4[2]))), m0[3]), scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m3[2]), scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), m4[2]))), -m1[3])))), sum(sum(scale2(sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m4[2]))), m3[3]), sum(scale2(sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))), -m4[3]), scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), m0[3]))), sum(scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), -m1[3]), sum(scale2(sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))), m2[3]), scale2(sum(scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))), -m3[3])))));
|
|
579
|
+
var n = sum(sum(sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m2[2]), sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), -m3[2]), scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m4[2]))), m0[3]), scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m3[2]), scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), m4[2]))), -m2[3])), sum(scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m4[2]))), m3[3]), scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), -m4[3]))), sum(sum(scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m4[2]))), m0[3]), scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m4[2]))), -m1[3])), sum(scale2(sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m4[2]))), m2[3]), scale2(sum(scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))), -m4[3]))));
|
|
580
|
+
var d = sub(p, n);
|
|
581
|
+
return d[d.length - 1];
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
function orientation2(n) {
|
|
585
|
+
var fn = n === 3 ? orientation_3 : n === 4 ? orientation_4 : orientation_5;
|
|
586
|
+
return fn(robustSum, twoProduct, robustScale, robustSubtract);
|
|
587
|
+
}
|
|
588
|
+
var orientation3Exact = orientation2(3);
|
|
589
|
+
var orientation4Exact = orientation2(4);
|
|
590
|
+
var CACHED = [
|
|
591
|
+
function orientation0() {
|
|
592
|
+
return 0;
|
|
593
|
+
},
|
|
594
|
+
function orientation1() {
|
|
595
|
+
return 0;
|
|
596
|
+
},
|
|
597
|
+
function orientation22(a, b) {
|
|
598
|
+
return b[0] - a[0];
|
|
599
|
+
},
|
|
600
|
+
function orientation3(a, b, c) {
|
|
601
|
+
var l = (a[1] - c[1]) * (b[0] - c[0]);
|
|
602
|
+
var r = (a[0] - c[0]) * (b[1] - c[1]);
|
|
603
|
+
var det = l - r;
|
|
604
|
+
var s;
|
|
605
|
+
if (l > 0) {
|
|
606
|
+
if (r <= 0) {
|
|
607
|
+
return det;
|
|
608
|
+
} else {
|
|
609
|
+
s = l + r;
|
|
610
|
+
}
|
|
611
|
+
} else if (l < 0) {
|
|
612
|
+
if (r >= 0) {
|
|
613
|
+
return det;
|
|
614
|
+
} else {
|
|
615
|
+
s = -(l + r);
|
|
616
|
+
}
|
|
617
|
+
} else {
|
|
618
|
+
return det;
|
|
619
|
+
}
|
|
620
|
+
var tol = ERRBOUND3 * s;
|
|
621
|
+
if (det >= tol || det <= -tol) {
|
|
622
|
+
return det;
|
|
623
|
+
}
|
|
624
|
+
return orientation3Exact(a, b, c);
|
|
625
|
+
},
|
|
626
|
+
function orientation4(a, b, c, d) {
|
|
627
|
+
var adx = a[0] - d[0];
|
|
628
|
+
var bdx = b[0] - d[0];
|
|
629
|
+
var cdx = c[0] - d[0];
|
|
630
|
+
var ady = a[1] - d[1];
|
|
631
|
+
var bdy = b[1] - d[1];
|
|
632
|
+
var cdy = c[1] - d[1];
|
|
633
|
+
var adz = a[2] - d[2];
|
|
634
|
+
var bdz = b[2] - d[2];
|
|
635
|
+
var cdz = c[2] - d[2];
|
|
636
|
+
var bdxcdy = bdx * cdy;
|
|
637
|
+
var cdxbdy = cdx * bdy;
|
|
638
|
+
var cdxady = cdx * ady;
|
|
639
|
+
var adxcdy = adx * cdy;
|
|
640
|
+
var adxbdy = adx * bdy;
|
|
641
|
+
var bdxady = bdx * ady;
|
|
642
|
+
var det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady);
|
|
643
|
+
var permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);
|
|
644
|
+
var tol = ERRBOUND4 * permanent;
|
|
645
|
+
if (det > tol || -det > tol) {
|
|
646
|
+
return det;
|
|
647
|
+
}
|
|
648
|
+
return orientation4Exact(a, b, c, d);
|
|
649
|
+
}
|
|
650
|
+
];
|
|
651
|
+
function slowOrient(args) {
|
|
652
|
+
var proc2 = CACHED[args.length];
|
|
653
|
+
if (!proc2) {
|
|
654
|
+
proc2 = CACHED[args.length] = orientation2(args.length);
|
|
655
|
+
}
|
|
656
|
+
return proc2.apply(void 0, args);
|
|
657
|
+
}
|
|
658
|
+
function proc(slow, o0, o1, o2, o3, o4, o5) {
|
|
659
|
+
return function getOrientation(a0, a1, a2, a3, a4) {
|
|
660
|
+
switch (arguments.length) {
|
|
661
|
+
case 0:
|
|
662
|
+
case 1:
|
|
663
|
+
return 0;
|
|
664
|
+
case 2:
|
|
665
|
+
return o2(a0, a1);
|
|
666
|
+
case 3:
|
|
667
|
+
return o3(a0, a1, a2);
|
|
668
|
+
case 4:
|
|
669
|
+
return o4(a0, a1, a2, a3);
|
|
670
|
+
case 5:
|
|
671
|
+
return o5(a0, a1, a2, a3, a4);
|
|
672
|
+
}
|
|
673
|
+
var s = new Array(arguments.length);
|
|
674
|
+
for (var i = 0; i < arguments.length; ++i) {
|
|
675
|
+
s[i] = arguments[i];
|
|
676
|
+
}
|
|
677
|
+
return slow(s);
|
|
678
|
+
};
|
|
679
|
+
}
|
|
680
|
+
function generateOrientationProc() {
|
|
681
|
+
while (CACHED.length <= NUM_EXPAND) {
|
|
682
|
+
CACHED.push(orientation2(CACHED.length));
|
|
683
|
+
}
|
|
684
|
+
module.exports = proc.apply(void 0, [slowOrient].concat(CACHED));
|
|
685
|
+
for (var i = 0; i <= NUM_EXPAND; ++i) {
|
|
686
|
+
module.exports[i] = CACHED[i];
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
generateOrientationProc();
|
|
690
|
+
}
|
|
691
|
+
});
|
|
692
|
+
|
|
693
|
+
// node_modules/cdt2d/lib/monotone.js
|
|
694
|
+
var require_monotone = __commonJS({
|
|
695
|
+
"node_modules/cdt2d/lib/monotone.js"(exports, module) {
|
|
696
|
+
"use strict";
|
|
697
|
+
var bsearch = require_search_bounds();
|
|
698
|
+
var orient = require_orientation()[3];
|
|
699
|
+
var EVENT_POINT = 0;
|
|
700
|
+
var EVENT_END = 1;
|
|
701
|
+
var EVENT_START = 2;
|
|
702
|
+
module.exports = monotoneTriangulate;
|
|
703
|
+
function PartialHull(a, b, idx, lowerIds, upperIds) {
|
|
704
|
+
this.a = a;
|
|
705
|
+
this.b = b;
|
|
706
|
+
this.idx = idx;
|
|
707
|
+
this.lowerIds = lowerIds;
|
|
708
|
+
this.upperIds = upperIds;
|
|
709
|
+
}
|
|
710
|
+
function Event(a, b, type, idx) {
|
|
711
|
+
this.a = a;
|
|
712
|
+
this.b = b;
|
|
713
|
+
this.type = type;
|
|
714
|
+
this.idx = idx;
|
|
715
|
+
}
|
|
716
|
+
function compareEvent(a, b) {
|
|
717
|
+
var d = a.a[0] - b.a[0] || a.a[1] - b.a[1] || a.type - b.type;
|
|
718
|
+
if (d) {
|
|
719
|
+
return d;
|
|
720
|
+
}
|
|
721
|
+
if (a.type !== EVENT_POINT) {
|
|
722
|
+
d = orient(a.a, a.b, b.b);
|
|
723
|
+
if (d) {
|
|
724
|
+
return d;
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
return a.idx - b.idx;
|
|
728
|
+
}
|
|
729
|
+
function testPoint(hull, p) {
|
|
730
|
+
return orient(hull.a, hull.b, p);
|
|
731
|
+
}
|
|
732
|
+
function addPoint(cells, hulls, points, p, idx) {
|
|
733
|
+
var lo = bsearch.lt(hulls, p, testPoint);
|
|
734
|
+
var hi = bsearch.gt(hulls, p, testPoint);
|
|
735
|
+
for (var i = lo; i < hi; ++i) {
|
|
736
|
+
var hull = hulls[i];
|
|
737
|
+
var lowerIds = hull.lowerIds;
|
|
738
|
+
var m = lowerIds.length;
|
|
739
|
+
while (m > 1 && orient(
|
|
740
|
+
points[lowerIds[m - 2]],
|
|
741
|
+
points[lowerIds[m - 1]],
|
|
742
|
+
p
|
|
743
|
+
) > 0) {
|
|
744
|
+
cells.push(
|
|
745
|
+
[
|
|
746
|
+
lowerIds[m - 1],
|
|
747
|
+
lowerIds[m - 2],
|
|
748
|
+
idx
|
|
749
|
+
]
|
|
750
|
+
);
|
|
751
|
+
m -= 1;
|
|
752
|
+
}
|
|
753
|
+
lowerIds.length = m;
|
|
754
|
+
lowerIds.push(idx);
|
|
755
|
+
var upperIds = hull.upperIds;
|
|
756
|
+
var m = upperIds.length;
|
|
757
|
+
while (m > 1 && orient(
|
|
758
|
+
points[upperIds[m - 2]],
|
|
759
|
+
points[upperIds[m - 1]],
|
|
760
|
+
p
|
|
761
|
+
) < 0) {
|
|
762
|
+
cells.push(
|
|
763
|
+
[
|
|
764
|
+
upperIds[m - 2],
|
|
765
|
+
upperIds[m - 1],
|
|
766
|
+
idx
|
|
767
|
+
]
|
|
768
|
+
);
|
|
769
|
+
m -= 1;
|
|
770
|
+
}
|
|
771
|
+
upperIds.length = m;
|
|
772
|
+
upperIds.push(idx);
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
function findSplit(hull, edge) {
|
|
776
|
+
var d;
|
|
777
|
+
if (hull.a[0] < edge.a[0]) {
|
|
778
|
+
d = orient(hull.a, hull.b, edge.a);
|
|
779
|
+
} else {
|
|
780
|
+
d = orient(edge.b, edge.a, hull.a);
|
|
781
|
+
}
|
|
782
|
+
if (d) {
|
|
783
|
+
return d;
|
|
784
|
+
}
|
|
785
|
+
if (edge.b[0] < hull.b[0]) {
|
|
786
|
+
d = orient(hull.a, hull.b, edge.b);
|
|
787
|
+
} else {
|
|
788
|
+
d = orient(edge.b, edge.a, hull.b);
|
|
789
|
+
}
|
|
790
|
+
return d || hull.idx - edge.idx;
|
|
791
|
+
}
|
|
792
|
+
function splitHulls(hulls, points, event) {
|
|
793
|
+
var splitIdx = bsearch.le(hulls, event, findSplit);
|
|
794
|
+
var hull = hulls[splitIdx];
|
|
795
|
+
var upperIds = hull.upperIds;
|
|
796
|
+
var x = upperIds[upperIds.length - 1];
|
|
797
|
+
hull.upperIds = [x];
|
|
798
|
+
hulls.splice(
|
|
799
|
+
splitIdx + 1,
|
|
800
|
+
0,
|
|
801
|
+
new PartialHull(event.a, event.b, event.idx, [x], upperIds)
|
|
802
|
+
);
|
|
803
|
+
}
|
|
804
|
+
function mergeHulls(hulls, points, event) {
|
|
805
|
+
var tmp = event.a;
|
|
806
|
+
event.a = event.b;
|
|
807
|
+
event.b = tmp;
|
|
808
|
+
var mergeIdx = bsearch.eq(hulls, event, findSplit);
|
|
809
|
+
var upper = hulls[mergeIdx];
|
|
810
|
+
var lower = hulls[mergeIdx - 1];
|
|
811
|
+
lower.upperIds = upper.upperIds;
|
|
812
|
+
hulls.splice(mergeIdx, 1);
|
|
813
|
+
}
|
|
814
|
+
function monotoneTriangulate(points, edges) {
|
|
815
|
+
var numPoints = points.length;
|
|
816
|
+
var numEdges = edges.length;
|
|
817
|
+
var events = [];
|
|
818
|
+
for (var i = 0; i < numPoints; ++i) {
|
|
819
|
+
events.push(new Event(
|
|
820
|
+
points[i],
|
|
821
|
+
null,
|
|
822
|
+
EVENT_POINT,
|
|
823
|
+
i
|
|
824
|
+
));
|
|
825
|
+
}
|
|
826
|
+
for (var i = 0; i < numEdges; ++i) {
|
|
827
|
+
var e = edges[i];
|
|
828
|
+
var a = points[e[0]];
|
|
829
|
+
var b = points[e[1]];
|
|
830
|
+
if (a[0] < b[0]) {
|
|
831
|
+
events.push(
|
|
832
|
+
new Event(a, b, EVENT_START, i),
|
|
833
|
+
new Event(b, a, EVENT_END, i)
|
|
834
|
+
);
|
|
835
|
+
} else if (a[0] > b[0]) {
|
|
836
|
+
events.push(
|
|
837
|
+
new Event(b, a, EVENT_START, i),
|
|
838
|
+
new Event(a, b, EVENT_END, i)
|
|
839
|
+
);
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
events.sort(compareEvent);
|
|
843
|
+
var minX = events[0].a[0] - (1 + Math.abs(events[0].a[0])) * Math.pow(2, -52);
|
|
844
|
+
var hull = [new PartialHull([minX, 1], [minX, 0], -1, [], [], [], [])];
|
|
845
|
+
var cells = [];
|
|
846
|
+
for (var i = 0, numEvents = events.length; i < numEvents; ++i) {
|
|
847
|
+
var event = events[i];
|
|
848
|
+
var type = event.type;
|
|
849
|
+
if (type === EVENT_POINT) {
|
|
850
|
+
addPoint(cells, hull, points, event.a, event.idx);
|
|
851
|
+
} else if (type === EVENT_START) {
|
|
852
|
+
splitHulls(hull, points, event);
|
|
853
|
+
} else {
|
|
854
|
+
mergeHulls(hull, points, event);
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
return cells;
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
});
|
|
861
|
+
|
|
862
|
+
// node_modules/cdt2d/lib/triangulation.js
|
|
863
|
+
var require_triangulation = __commonJS({
|
|
864
|
+
"node_modules/cdt2d/lib/triangulation.js"(exports, module) {
|
|
865
|
+
"use strict";
|
|
866
|
+
var bsearch = require_search_bounds();
|
|
867
|
+
module.exports = createTriangulation;
|
|
868
|
+
function Triangulation(stars, edges) {
|
|
869
|
+
this.stars = stars;
|
|
870
|
+
this.edges = edges;
|
|
871
|
+
}
|
|
872
|
+
var proto = Triangulation.prototype;
|
|
873
|
+
function removePair(list, j, k) {
|
|
874
|
+
for (var i = 1, n = list.length; i < n; i += 2) {
|
|
875
|
+
if (list[i - 1] === j && list[i] === k) {
|
|
876
|
+
list[i - 1] = list[n - 2];
|
|
877
|
+
list[i] = list[n - 1];
|
|
878
|
+
list.length = n - 2;
|
|
879
|
+
return;
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
proto.isConstraint = /* @__PURE__ */ (function() {
|
|
884
|
+
var e = [0, 0];
|
|
885
|
+
function compareLex(a, b) {
|
|
886
|
+
return a[0] - b[0] || a[1] - b[1];
|
|
887
|
+
}
|
|
888
|
+
return function(i, j) {
|
|
889
|
+
e[0] = Math.min(i, j);
|
|
890
|
+
e[1] = Math.max(i, j);
|
|
891
|
+
return bsearch.eq(this.edges, e, compareLex) >= 0;
|
|
892
|
+
};
|
|
893
|
+
})();
|
|
894
|
+
proto.removeTriangle = function(i, j, k) {
|
|
895
|
+
var stars = this.stars;
|
|
896
|
+
removePair(stars[i], j, k);
|
|
897
|
+
removePair(stars[j], k, i);
|
|
898
|
+
removePair(stars[k], i, j);
|
|
899
|
+
};
|
|
900
|
+
proto.addTriangle = function(i, j, k) {
|
|
901
|
+
var stars = this.stars;
|
|
902
|
+
stars[i].push(j, k);
|
|
903
|
+
stars[j].push(k, i);
|
|
904
|
+
stars[k].push(i, j);
|
|
905
|
+
};
|
|
906
|
+
proto.opposite = function(j, i) {
|
|
907
|
+
var list = this.stars[i];
|
|
908
|
+
for (var k = 1, n = list.length; k < n; k += 2) {
|
|
909
|
+
if (list[k] === j) {
|
|
910
|
+
return list[k - 1];
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
return -1;
|
|
914
|
+
};
|
|
915
|
+
proto.flip = function(i, j) {
|
|
916
|
+
var a = this.opposite(i, j);
|
|
917
|
+
var b = this.opposite(j, i);
|
|
918
|
+
this.removeTriangle(i, j, a);
|
|
919
|
+
this.removeTriangle(j, i, b);
|
|
920
|
+
this.addTriangle(i, b, a);
|
|
921
|
+
this.addTriangle(j, a, b);
|
|
922
|
+
};
|
|
923
|
+
proto.edges = function() {
|
|
924
|
+
var stars = this.stars;
|
|
925
|
+
var result = [];
|
|
926
|
+
for (var i = 0, n = stars.length; i < n; ++i) {
|
|
927
|
+
var list = stars[i];
|
|
928
|
+
for (var j = 0, m = list.length; j < m; j += 2) {
|
|
929
|
+
result.push([list[j], list[j + 1]]);
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
return result;
|
|
933
|
+
};
|
|
934
|
+
proto.cells = function() {
|
|
935
|
+
var stars = this.stars;
|
|
936
|
+
var result = [];
|
|
937
|
+
for (var i = 0, n = stars.length; i < n; ++i) {
|
|
938
|
+
var list = stars[i];
|
|
939
|
+
for (var j = 0, m = list.length; j < m; j += 2) {
|
|
940
|
+
var s = list[j];
|
|
941
|
+
var t = list[j + 1];
|
|
942
|
+
if (i < Math.min(s, t)) {
|
|
943
|
+
result.push([i, s, t]);
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
return result;
|
|
948
|
+
};
|
|
949
|
+
function createTriangulation(numVerts, edges) {
|
|
950
|
+
var stars = new Array(numVerts);
|
|
951
|
+
for (var i = 0; i < numVerts; ++i) {
|
|
952
|
+
stars[i] = [];
|
|
953
|
+
}
|
|
954
|
+
return new Triangulation(stars, edges);
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
});
|
|
958
|
+
|
|
959
|
+
// node_modules/robust-in-sphere/in-sphere.js
|
|
960
|
+
var require_in_sphere = __commonJS({
|
|
961
|
+
"node_modules/robust-in-sphere/in-sphere.js"(exports, module) {
|
|
962
|
+
"use strict";
|
|
963
|
+
var twoProduct = require_two_product();
|
|
964
|
+
var robustSum = require_robust_sum();
|
|
965
|
+
var robustDiff = require_robust_diff();
|
|
966
|
+
var robustScale = require_robust_scale();
|
|
967
|
+
var NUM_EXPAND = 6;
|
|
968
|
+
function orientation2(n) {
|
|
969
|
+
var fn = n === 3 ? inSphere3 : n === 4 ? inSphere4 : n === 5 ? inSphere5 : inSphere6;
|
|
970
|
+
return fn(robustSum, robustDiff, twoProduct, robustScale);
|
|
971
|
+
}
|
|
972
|
+
function inSphere0() {
|
|
973
|
+
return 0;
|
|
974
|
+
}
|
|
975
|
+
function inSphere1() {
|
|
976
|
+
return 0;
|
|
977
|
+
}
|
|
978
|
+
function inSphere2() {
|
|
979
|
+
return 0;
|
|
980
|
+
}
|
|
981
|
+
function inSphere3(sum, diff, prod, scale2) {
|
|
982
|
+
function exactInSphere3(m0, m1, m2) {
|
|
983
|
+
var w0 = prod(m0[0], m0[0]);
|
|
984
|
+
var w0m1 = scale2(w0, m1[0]);
|
|
985
|
+
var w0m2 = scale2(w0, m2[0]);
|
|
986
|
+
var w1 = prod(m1[0], m1[0]);
|
|
987
|
+
var w1m0 = scale2(w1, m0[0]);
|
|
988
|
+
var w1m2 = scale2(w1, m2[0]);
|
|
989
|
+
var w2 = prod(m2[0], m2[0]);
|
|
990
|
+
var w2m0 = scale2(w2, m0[0]);
|
|
991
|
+
var w2m1 = scale2(w2, m1[0]);
|
|
992
|
+
var p = sum(diff(w2m1, w1m2), diff(w1m0, w0m1));
|
|
993
|
+
var n = diff(w2m0, w0m2);
|
|
994
|
+
var d = diff(p, n);
|
|
995
|
+
return d[d.length - 1];
|
|
996
|
+
}
|
|
997
|
+
return exactInSphere3;
|
|
998
|
+
}
|
|
999
|
+
function inSphere4(sum, diff, prod, scale2) {
|
|
1000
|
+
function exactInSphere4(m0, m1, m2, m3) {
|
|
1001
|
+
var w0 = sum(prod(m0[0], m0[0]), prod(m0[1], m0[1]));
|
|
1002
|
+
var w0m1 = scale2(w0, m1[0]);
|
|
1003
|
+
var w0m2 = scale2(w0, m2[0]);
|
|
1004
|
+
var w0m3 = scale2(w0, m3[0]);
|
|
1005
|
+
var w1 = sum(prod(m1[0], m1[0]), prod(m1[1], m1[1]));
|
|
1006
|
+
var w1m0 = scale2(w1, m0[0]);
|
|
1007
|
+
var w1m2 = scale2(w1, m2[0]);
|
|
1008
|
+
var w1m3 = scale2(w1, m3[0]);
|
|
1009
|
+
var w2 = sum(prod(m2[0], m2[0]), prod(m2[1], m2[1]));
|
|
1010
|
+
var w2m0 = scale2(w2, m0[0]);
|
|
1011
|
+
var w2m1 = scale2(w2, m1[0]);
|
|
1012
|
+
var w2m3 = scale2(w2, m3[0]);
|
|
1013
|
+
var w3 = sum(prod(m3[0], m3[0]), prod(m3[1], m3[1]));
|
|
1014
|
+
var w3m0 = scale2(w3, m0[0]);
|
|
1015
|
+
var w3m1 = scale2(w3, m1[0]);
|
|
1016
|
+
var w3m2 = scale2(w3, m2[0]);
|
|
1017
|
+
var p = sum(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))));
|
|
1018
|
+
var n = sum(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))));
|
|
1019
|
+
var d = diff(p, n);
|
|
1020
|
+
return d[d.length - 1];
|
|
1021
|
+
}
|
|
1022
|
+
return exactInSphere4;
|
|
1023
|
+
}
|
|
1024
|
+
function inSphere5(sum, diff, prod, scale2) {
|
|
1025
|
+
function exactInSphere5(m0, m1, m2, m3, m4) {
|
|
1026
|
+
var w0 = sum(prod(m0[0], m0[0]), sum(prod(m0[1], m0[1]), prod(m0[2], m0[2])));
|
|
1027
|
+
var w0m1 = scale2(w0, m1[0]);
|
|
1028
|
+
var w0m2 = scale2(w0, m2[0]);
|
|
1029
|
+
var w0m3 = scale2(w0, m3[0]);
|
|
1030
|
+
var w0m4 = scale2(w0, m4[0]);
|
|
1031
|
+
var w1 = sum(prod(m1[0], m1[0]), sum(prod(m1[1], m1[1]), prod(m1[2], m1[2])));
|
|
1032
|
+
var w1m0 = scale2(w1, m0[0]);
|
|
1033
|
+
var w1m2 = scale2(w1, m2[0]);
|
|
1034
|
+
var w1m3 = scale2(w1, m3[0]);
|
|
1035
|
+
var w1m4 = scale2(w1, m4[0]);
|
|
1036
|
+
var w2 = sum(prod(m2[0], m2[0]), sum(prod(m2[1], m2[1]), prod(m2[2], m2[2])));
|
|
1037
|
+
var w2m0 = scale2(w2, m0[0]);
|
|
1038
|
+
var w2m1 = scale2(w2, m1[0]);
|
|
1039
|
+
var w2m3 = scale2(w2, m3[0]);
|
|
1040
|
+
var w2m4 = scale2(w2, m4[0]);
|
|
1041
|
+
var w3 = sum(prod(m3[0], m3[0]), sum(prod(m3[1], m3[1]), prod(m3[2], m3[2])));
|
|
1042
|
+
var w3m0 = scale2(w3, m0[0]);
|
|
1043
|
+
var w3m1 = scale2(w3, m1[0]);
|
|
1044
|
+
var w3m2 = scale2(w3, m2[0]);
|
|
1045
|
+
var w3m4 = scale2(w3, m4[0]);
|
|
1046
|
+
var w4 = sum(prod(m4[0], m4[0]), sum(prod(m4[1], m4[1]), prod(m4[2], m4[2])));
|
|
1047
|
+
var w4m0 = scale2(w4, m0[0]);
|
|
1048
|
+
var w4m1 = scale2(w4, m1[0]);
|
|
1049
|
+
var w4m2 = scale2(w4, m2[0]);
|
|
1050
|
+
var w4m3 = scale2(w4, m3[0]);
|
|
1051
|
+
var p = sum(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m1[2]), sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m2[2]), scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m3[2]))), sum(scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m4[2]), sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m1[2])))), sum(sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m3[2]), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m4[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), m0[2]))), sum(scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m1[2]), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m3[2])))));
|
|
1052
|
+
var n = sum(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m4[2]))), sum(sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m4[2]))));
|
|
1053
|
+
var d = diff(p, n);
|
|
1054
|
+
return d[d.length - 1];
|
|
1055
|
+
}
|
|
1056
|
+
return exactInSphere5;
|
|
1057
|
+
}
|
|
1058
|
+
function inSphere6(sum, diff, prod, scale2) {
|
|
1059
|
+
function exactInSphere6(m0, m1, m2, m3, m4, m5) {
|
|
1060
|
+
var w0 = sum(sum(prod(m0[0], m0[0]), prod(m0[1], m0[1])), sum(prod(m0[2], m0[2]), prod(m0[3], m0[3])));
|
|
1061
|
+
var w0m1 = scale2(w0, m1[0]);
|
|
1062
|
+
var w0m2 = scale2(w0, m2[0]);
|
|
1063
|
+
var w0m3 = scale2(w0, m3[0]);
|
|
1064
|
+
var w0m4 = scale2(w0, m4[0]);
|
|
1065
|
+
var w0m5 = scale2(w0, m5[0]);
|
|
1066
|
+
var w1 = sum(sum(prod(m1[0], m1[0]), prod(m1[1], m1[1])), sum(prod(m1[2], m1[2]), prod(m1[3], m1[3])));
|
|
1067
|
+
var w1m0 = scale2(w1, m0[0]);
|
|
1068
|
+
var w1m2 = scale2(w1, m2[0]);
|
|
1069
|
+
var w1m3 = scale2(w1, m3[0]);
|
|
1070
|
+
var w1m4 = scale2(w1, m4[0]);
|
|
1071
|
+
var w1m5 = scale2(w1, m5[0]);
|
|
1072
|
+
var w2 = sum(sum(prod(m2[0], m2[0]), prod(m2[1], m2[1])), sum(prod(m2[2], m2[2]), prod(m2[3], m2[3])));
|
|
1073
|
+
var w2m0 = scale2(w2, m0[0]);
|
|
1074
|
+
var w2m1 = scale2(w2, m1[0]);
|
|
1075
|
+
var w2m3 = scale2(w2, m3[0]);
|
|
1076
|
+
var w2m4 = scale2(w2, m4[0]);
|
|
1077
|
+
var w2m5 = scale2(w2, m5[0]);
|
|
1078
|
+
var w3 = sum(sum(prod(m3[0], m3[0]), prod(m3[1], m3[1])), sum(prod(m3[2], m3[2]), prod(m3[3], m3[3])));
|
|
1079
|
+
var w3m0 = scale2(w3, m0[0]);
|
|
1080
|
+
var w3m1 = scale2(w3, m1[0]);
|
|
1081
|
+
var w3m2 = scale2(w3, m2[0]);
|
|
1082
|
+
var w3m4 = scale2(w3, m4[0]);
|
|
1083
|
+
var w3m5 = scale2(w3, m5[0]);
|
|
1084
|
+
var w4 = sum(sum(prod(m4[0], m4[0]), prod(m4[1], m4[1])), sum(prod(m4[2], m4[2]), prod(m4[3], m4[3])));
|
|
1085
|
+
var w4m0 = scale2(w4, m0[0]);
|
|
1086
|
+
var w4m1 = scale2(w4, m1[0]);
|
|
1087
|
+
var w4m2 = scale2(w4, m2[0]);
|
|
1088
|
+
var w4m3 = scale2(w4, m3[0]);
|
|
1089
|
+
var w4m5 = scale2(w4, m5[0]);
|
|
1090
|
+
var w5 = sum(sum(prod(m5[0], m5[0]), prod(m5[1], m5[1])), sum(prod(m5[2], m5[2]), prod(m5[3], m5[3])));
|
|
1091
|
+
var w5m0 = scale2(w5, m0[0]);
|
|
1092
|
+
var w5m1 = scale2(w5, m1[0]);
|
|
1093
|
+
var w5m2 = scale2(w5, m2[0]);
|
|
1094
|
+
var w5m3 = scale2(w5, m3[0]);
|
|
1095
|
+
var w5m4 = scale2(w5, m4[0]);
|
|
1096
|
+
var p = sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m2[2]), scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), -m5[2]))), m1[3]), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m5[2]))), -m2[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), -m5[2]))), m3[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m5[2]))), -m4[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m1[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m4[2]))), m5[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m5[2]))), m0[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m5[2]))), -m1[3])))), sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), -m5[2]))), m3[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m5[2]))), -m4[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m4[2]))), m5[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m5[2]))), m0[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m5[2]))), -m1[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m5[2]))), m2[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m5[2]))), -m3[3]), scale2(sum(sum(scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), m0[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m3[2]))), m5[3])))));
|
|
1097
|
+
var n = sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m2[2]), scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), -m5[2]))), m0[3]), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m5[2]))), -m2[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m5[2]))), m3[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m5[2]))), -m4[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m4[2]))), m5[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), -m5[2]))), m0[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m5[2]))), -m1[3])))), sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), -m5[2]))), m2[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m5[2]))), -m4[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m4[2]))), m5[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m1[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m4[2]))), m0[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m4[2]))), -m1[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m4[2]))), m2[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m4[2]))), -m3[3]), scale2(sum(sum(scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), m0[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m3[2]))), m4[3])))));
|
|
1098
|
+
var d = diff(p, n);
|
|
1099
|
+
return d[d.length - 1];
|
|
1100
|
+
}
|
|
1101
|
+
return exactInSphere6;
|
|
1102
|
+
}
|
|
1103
|
+
var CACHED = [
|
|
1104
|
+
inSphere0,
|
|
1105
|
+
inSphere1,
|
|
1106
|
+
inSphere2
|
|
1107
|
+
];
|
|
1108
|
+
function slowInSphere(args) {
|
|
1109
|
+
var proc2 = CACHED[args.length];
|
|
1110
|
+
if (!proc2) {
|
|
1111
|
+
proc2 = CACHED[args.length] = orientation2(args.length);
|
|
1112
|
+
}
|
|
1113
|
+
return proc2.apply(void 0, args);
|
|
1114
|
+
}
|
|
1115
|
+
function proc(slow, o0, o1, o2, o3, o4, o5, o6) {
|
|
1116
|
+
function testInSphere(a0, a1, a2, a3, a4, a5) {
|
|
1117
|
+
switch (arguments.length) {
|
|
1118
|
+
case 0:
|
|
1119
|
+
case 1:
|
|
1120
|
+
return 0;
|
|
1121
|
+
case 2:
|
|
1122
|
+
return o2(a0, a1);
|
|
1123
|
+
case 3:
|
|
1124
|
+
return o3(a0, a1, a2);
|
|
1125
|
+
case 4:
|
|
1126
|
+
return o4(a0, a1, a2, a3);
|
|
1127
|
+
case 5:
|
|
1128
|
+
return o5(a0, a1, a2, a3, a4);
|
|
1129
|
+
case 6:
|
|
1130
|
+
return o6(a0, a1, a2, a3, a4, a5);
|
|
1131
|
+
}
|
|
1132
|
+
var s = new Array(arguments.length);
|
|
1133
|
+
for (var i = 0; i < arguments.length; ++i) {
|
|
1134
|
+
s[i] = arguments[i];
|
|
1135
|
+
}
|
|
1136
|
+
return slow(s);
|
|
1137
|
+
}
|
|
1138
|
+
return testInSphere;
|
|
1139
|
+
}
|
|
1140
|
+
function generateInSphereTest() {
|
|
1141
|
+
while (CACHED.length <= NUM_EXPAND) {
|
|
1142
|
+
CACHED.push(orientation2(CACHED.length));
|
|
1143
|
+
}
|
|
1144
|
+
module.exports = proc.apply(void 0, [slowInSphere].concat(CACHED));
|
|
1145
|
+
for (var i = 0; i <= NUM_EXPAND; ++i) {
|
|
1146
|
+
module.exports[i] = CACHED[i];
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
generateInSphereTest();
|
|
1150
|
+
}
|
|
1151
|
+
});
|
|
1152
|
+
|
|
1153
|
+
// node_modules/cdt2d/lib/delaunay.js
|
|
1154
|
+
var require_delaunay = __commonJS({
|
|
1155
|
+
"node_modules/cdt2d/lib/delaunay.js"(exports, module) {
|
|
1156
|
+
"use strict";
|
|
1157
|
+
var inCircle = require_in_sphere()[4];
|
|
1158
|
+
var bsearch = require_search_bounds();
|
|
1159
|
+
module.exports = delaunayRefine;
|
|
1160
|
+
function testFlip(points, triangulation, stack, a, b, x) {
|
|
1161
|
+
var y = triangulation.opposite(a, b);
|
|
1162
|
+
if (y < 0) {
|
|
1163
|
+
return;
|
|
1164
|
+
}
|
|
1165
|
+
if (b < a) {
|
|
1166
|
+
var tmp = a;
|
|
1167
|
+
a = b;
|
|
1168
|
+
b = tmp;
|
|
1169
|
+
tmp = x;
|
|
1170
|
+
x = y;
|
|
1171
|
+
y = tmp;
|
|
1172
|
+
}
|
|
1173
|
+
if (triangulation.isConstraint(a, b)) {
|
|
1174
|
+
return;
|
|
1175
|
+
}
|
|
1176
|
+
if (inCircle(points[a], points[b], points[x], points[y]) < 0) {
|
|
1177
|
+
stack.push(a, b);
|
|
1178
|
+
}
|
|
1179
|
+
}
|
|
1180
|
+
function delaunayRefine(points, triangulation) {
|
|
1181
|
+
var stack = [];
|
|
1182
|
+
var numPoints = points.length;
|
|
1183
|
+
var stars = triangulation.stars;
|
|
1184
|
+
for (var a = 0; a < numPoints; ++a) {
|
|
1185
|
+
var star = stars[a];
|
|
1186
|
+
for (var j = 1; j < star.length; j += 2) {
|
|
1187
|
+
var b = star[j];
|
|
1188
|
+
if (b < a) {
|
|
1189
|
+
continue;
|
|
1190
|
+
}
|
|
1191
|
+
if (triangulation.isConstraint(a, b)) {
|
|
1192
|
+
continue;
|
|
1193
|
+
}
|
|
1194
|
+
var x = star[j - 1], y = -1;
|
|
1195
|
+
for (var k = 1; k < star.length; k += 2) {
|
|
1196
|
+
if (star[k - 1] === b) {
|
|
1197
|
+
y = star[k];
|
|
1198
|
+
break;
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
if (y < 0) {
|
|
1202
|
+
continue;
|
|
1203
|
+
}
|
|
1204
|
+
if (inCircle(points[a], points[b], points[x], points[y]) < 0) {
|
|
1205
|
+
stack.push(a, b);
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
while (stack.length > 0) {
|
|
1210
|
+
var b = stack.pop();
|
|
1211
|
+
var a = stack.pop();
|
|
1212
|
+
var x = -1, y = -1;
|
|
1213
|
+
var star = stars[a];
|
|
1214
|
+
for (var i = 1; i < star.length; i += 2) {
|
|
1215
|
+
var s = star[i - 1];
|
|
1216
|
+
var t = star[i];
|
|
1217
|
+
if (s === b) {
|
|
1218
|
+
y = t;
|
|
1219
|
+
} else if (t === b) {
|
|
1220
|
+
x = s;
|
|
1221
|
+
}
|
|
1222
|
+
}
|
|
1223
|
+
if (x < 0 || y < 0) {
|
|
1224
|
+
continue;
|
|
1225
|
+
}
|
|
1226
|
+
if (inCircle(points[a], points[b], points[x], points[y]) >= 0) {
|
|
1227
|
+
continue;
|
|
1228
|
+
}
|
|
1229
|
+
triangulation.flip(a, b);
|
|
1230
|
+
testFlip(points, triangulation, stack, x, a, y);
|
|
1231
|
+
testFlip(points, triangulation, stack, a, y, x);
|
|
1232
|
+
testFlip(points, triangulation, stack, y, b, x);
|
|
1233
|
+
testFlip(points, triangulation, stack, b, x, y);
|
|
1234
|
+
}
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
});
|
|
1238
|
+
|
|
1239
|
+
// node_modules/cdt2d/lib/filter.js
|
|
1240
|
+
var require_filter = __commonJS({
|
|
1241
|
+
"node_modules/cdt2d/lib/filter.js"(exports, module) {
|
|
1242
|
+
"use strict";
|
|
1243
|
+
var bsearch = require_search_bounds();
|
|
1244
|
+
module.exports = classifyFaces;
|
|
1245
|
+
function FaceIndex(cells, neighbor, constraint, flags, active, next, boundary) {
|
|
1246
|
+
this.cells = cells;
|
|
1247
|
+
this.neighbor = neighbor;
|
|
1248
|
+
this.flags = flags;
|
|
1249
|
+
this.constraint = constraint;
|
|
1250
|
+
this.active = active;
|
|
1251
|
+
this.next = next;
|
|
1252
|
+
this.boundary = boundary;
|
|
1253
|
+
}
|
|
1254
|
+
var proto = FaceIndex.prototype;
|
|
1255
|
+
function compareCell(a, b) {
|
|
1256
|
+
return a[0] - b[0] || a[1] - b[1] || a[2] - b[2];
|
|
1257
|
+
}
|
|
1258
|
+
proto.locate = /* @__PURE__ */ (function() {
|
|
1259
|
+
var key = [0, 0, 0];
|
|
1260
|
+
return function(a, b, c) {
|
|
1261
|
+
var x = a, y = b, z = c;
|
|
1262
|
+
if (b < c) {
|
|
1263
|
+
if (b < a) {
|
|
1264
|
+
x = b;
|
|
1265
|
+
y = c;
|
|
1266
|
+
z = a;
|
|
1267
|
+
}
|
|
1268
|
+
} else if (c < a) {
|
|
1269
|
+
x = c;
|
|
1270
|
+
y = a;
|
|
1271
|
+
z = b;
|
|
1272
|
+
}
|
|
1273
|
+
if (x < 0) {
|
|
1274
|
+
return -1;
|
|
1275
|
+
}
|
|
1276
|
+
key[0] = x;
|
|
1277
|
+
key[1] = y;
|
|
1278
|
+
key[2] = z;
|
|
1279
|
+
return bsearch.eq(this.cells, key, compareCell);
|
|
1280
|
+
};
|
|
1281
|
+
})();
|
|
1282
|
+
function indexCells(triangulation, infinity) {
|
|
1283
|
+
var cells = triangulation.cells();
|
|
1284
|
+
var nc = cells.length;
|
|
1285
|
+
for (var i = 0; i < nc; ++i) {
|
|
1286
|
+
var c = cells[i];
|
|
1287
|
+
var x = c[0], y = c[1], z = c[2];
|
|
1288
|
+
if (y < z) {
|
|
1289
|
+
if (y < x) {
|
|
1290
|
+
c[0] = y;
|
|
1291
|
+
c[1] = z;
|
|
1292
|
+
c[2] = x;
|
|
1293
|
+
}
|
|
1294
|
+
} else if (z < x) {
|
|
1295
|
+
c[0] = z;
|
|
1296
|
+
c[1] = x;
|
|
1297
|
+
c[2] = y;
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1300
|
+
cells.sort(compareCell);
|
|
1301
|
+
var flags = new Array(nc);
|
|
1302
|
+
for (var i = 0; i < flags.length; ++i) {
|
|
1303
|
+
flags[i] = 0;
|
|
1304
|
+
}
|
|
1305
|
+
var active = [];
|
|
1306
|
+
var next = [];
|
|
1307
|
+
var neighbor = new Array(3 * nc);
|
|
1308
|
+
var constraint = new Array(3 * nc);
|
|
1309
|
+
var boundary = null;
|
|
1310
|
+
if (infinity) {
|
|
1311
|
+
boundary = [];
|
|
1312
|
+
}
|
|
1313
|
+
var index = new FaceIndex(
|
|
1314
|
+
cells,
|
|
1315
|
+
neighbor,
|
|
1316
|
+
constraint,
|
|
1317
|
+
flags,
|
|
1318
|
+
active,
|
|
1319
|
+
next,
|
|
1320
|
+
boundary
|
|
1321
|
+
);
|
|
1322
|
+
for (var i = 0; i < nc; ++i) {
|
|
1323
|
+
var c = cells[i];
|
|
1324
|
+
for (var j = 0; j < 3; ++j) {
|
|
1325
|
+
var x = c[j], y = c[(j + 1) % 3];
|
|
1326
|
+
var a = neighbor[3 * i + j] = index.locate(y, x, triangulation.opposite(y, x));
|
|
1327
|
+
var b = constraint[3 * i + j] = triangulation.isConstraint(x, y);
|
|
1328
|
+
if (a < 0) {
|
|
1329
|
+
if (b) {
|
|
1330
|
+
next.push(i);
|
|
1331
|
+
} else {
|
|
1332
|
+
active.push(i);
|
|
1333
|
+
flags[i] = 1;
|
|
1334
|
+
}
|
|
1335
|
+
if (infinity) {
|
|
1336
|
+
boundary.push([y, x, -1]);
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
return index;
|
|
1342
|
+
}
|
|
1343
|
+
function filterCells(cells, flags, target) {
|
|
1344
|
+
var ptr = 0;
|
|
1345
|
+
for (var i = 0; i < cells.length; ++i) {
|
|
1346
|
+
if (flags[i] === target) {
|
|
1347
|
+
cells[ptr++] = cells[i];
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
cells.length = ptr;
|
|
1351
|
+
return cells;
|
|
1352
|
+
}
|
|
1353
|
+
function classifyFaces(triangulation, target, infinity) {
|
|
1354
|
+
var index = indexCells(triangulation, infinity);
|
|
1355
|
+
if (target === 0) {
|
|
1356
|
+
if (infinity) {
|
|
1357
|
+
return index.cells.concat(index.boundary);
|
|
1358
|
+
} else {
|
|
1359
|
+
return index.cells;
|
|
1360
|
+
}
|
|
1361
|
+
}
|
|
1362
|
+
var side = 1;
|
|
1363
|
+
var active = index.active;
|
|
1364
|
+
var next = index.next;
|
|
1365
|
+
var flags = index.flags;
|
|
1366
|
+
var cells = index.cells;
|
|
1367
|
+
var constraint = index.constraint;
|
|
1368
|
+
var neighbor = index.neighbor;
|
|
1369
|
+
while (active.length > 0 || next.length > 0) {
|
|
1370
|
+
while (active.length > 0) {
|
|
1371
|
+
var t = active.pop();
|
|
1372
|
+
if (flags[t] === -side) {
|
|
1373
|
+
continue;
|
|
1374
|
+
}
|
|
1375
|
+
flags[t] = side;
|
|
1376
|
+
var c = cells[t];
|
|
1377
|
+
for (var j = 0; j < 3; ++j) {
|
|
1378
|
+
var f = neighbor[3 * t + j];
|
|
1379
|
+
if (f >= 0 && flags[f] === 0) {
|
|
1380
|
+
if (constraint[3 * t + j]) {
|
|
1381
|
+
next.push(f);
|
|
1382
|
+
} else {
|
|
1383
|
+
active.push(f);
|
|
1384
|
+
flags[f] = side;
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
var tmp = next;
|
|
1390
|
+
next = active;
|
|
1391
|
+
active = tmp;
|
|
1392
|
+
next.length = 0;
|
|
1393
|
+
side = -side;
|
|
1394
|
+
}
|
|
1395
|
+
var result = filterCells(cells, flags, target);
|
|
1396
|
+
if (infinity) {
|
|
1397
|
+
return result.concat(index.boundary);
|
|
1398
|
+
}
|
|
1399
|
+
return result;
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
});
|
|
1403
|
+
|
|
1404
|
+
// node_modules/cdt2d/cdt2d.js
|
|
1405
|
+
var require_cdt2d = __commonJS({
|
|
1406
|
+
"node_modules/cdt2d/cdt2d.js"(exports, module) {
|
|
1407
|
+
"use strict";
|
|
1408
|
+
var monotoneTriangulate = require_monotone();
|
|
1409
|
+
var makeIndex = require_triangulation();
|
|
1410
|
+
var delaunayFlip = require_delaunay();
|
|
1411
|
+
var filterTriangulation = require_filter();
|
|
1412
|
+
module.exports = cdt2d2;
|
|
1413
|
+
function canonicalizeEdge(e) {
|
|
1414
|
+
return [Math.min(e[0], e[1]), Math.max(e[0], e[1])];
|
|
1415
|
+
}
|
|
1416
|
+
function compareEdge(a, b) {
|
|
1417
|
+
return a[0] - b[0] || a[1] - b[1];
|
|
1418
|
+
}
|
|
1419
|
+
function canonicalizeEdges(edges) {
|
|
1420
|
+
return edges.map(canonicalizeEdge).sort(compareEdge);
|
|
1421
|
+
}
|
|
1422
|
+
function getDefault(options, property, dflt) {
|
|
1423
|
+
if (property in options) {
|
|
1424
|
+
return options[property];
|
|
1425
|
+
}
|
|
1426
|
+
return dflt;
|
|
1427
|
+
}
|
|
1428
|
+
function cdt2d2(points, edges, options) {
|
|
1429
|
+
if (!Array.isArray(edges)) {
|
|
1430
|
+
options = edges || {};
|
|
1431
|
+
edges = [];
|
|
1432
|
+
} else {
|
|
1433
|
+
options = options || {};
|
|
1434
|
+
edges = edges || [];
|
|
1435
|
+
}
|
|
1436
|
+
var delaunay2 = !!getDefault(options, "delaunay", true);
|
|
1437
|
+
var interior = !!getDefault(options, "interior", true);
|
|
1438
|
+
var exterior = !!getDefault(options, "exterior", true);
|
|
1439
|
+
var infinity = !!getDefault(options, "infinity", false);
|
|
1440
|
+
if (!interior && !exterior || points.length === 0) {
|
|
1441
|
+
return [];
|
|
1442
|
+
}
|
|
1443
|
+
var cells = monotoneTriangulate(points, edges);
|
|
1444
|
+
if (delaunay2 || interior !== exterior || infinity) {
|
|
1445
|
+
var triangulation = makeIndex(points.length, canonicalizeEdges(edges));
|
|
1446
|
+
for (var i = 0; i < cells.length; ++i) {
|
|
1447
|
+
var f = cells[i];
|
|
1448
|
+
triangulation.addTriangle(f[0], f[1], f[2]);
|
|
1449
|
+
}
|
|
1450
|
+
if (delaunay2) {
|
|
1451
|
+
delaunayFlip(points, triangulation);
|
|
1452
|
+
}
|
|
1453
|
+
if (!exterior) {
|
|
1454
|
+
return filterTriangulation(triangulation, -1);
|
|
1455
|
+
} else if (!interior) {
|
|
1456
|
+
return filterTriangulation(triangulation, 1, infinity);
|
|
1457
|
+
} else if (infinity) {
|
|
1458
|
+
return filterTriangulation(triangulation, 0, infinity);
|
|
1459
|
+
} else {
|
|
1460
|
+
return triangulation.cells();
|
|
1461
|
+
}
|
|
1462
|
+
} else {
|
|
1463
|
+
return cells;
|
|
1464
|
+
}
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
});
|
|
1468
|
+
|
|
1
1469
|
// lib/convertConnectionsToSerializedConnections.ts
|
|
2
1470
|
var convertConnectionsToSerializedConnections = (connections) => {
|
|
3
1471
|
return connections.map((conn) => ({
|
|
@@ -12700,32 +14168,33 @@ Flatten.BooleanOperations = BooleanOperations;
|
|
|
12700
14168
|
Flatten.Relations = Relations;
|
|
12701
14169
|
|
|
12702
14170
|
// node_modules/@tscircuit/find-convex-regions/dist/index.js
|
|
12703
|
-
var
|
|
12704
|
-
var
|
|
12705
|
-
var
|
|
12706
|
-
var
|
|
12707
|
-
var
|
|
12708
|
-
var
|
|
12709
|
-
var
|
|
12710
|
-
|
|
14171
|
+
var import_cdt2d = __toESM(require_cdt2d(), 1);
|
|
14172
|
+
var __create2 = Object.create;
|
|
14173
|
+
var __defProp2 = Object.defineProperty;
|
|
14174
|
+
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
|
|
14175
|
+
var __getOwnPropNames2 = Object.getOwnPropertyNames;
|
|
14176
|
+
var __getProtoOf2 = Object.getPrototypeOf;
|
|
14177
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
14178
|
+
var __commonJS2 = (cb, mod) => function __require() {
|
|
14179
|
+
return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
12711
14180
|
};
|
|
12712
|
-
var
|
|
14181
|
+
var __copyProps2 = (to, from, except, desc) => {
|
|
12713
14182
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
12714
|
-
for (let key of
|
|
12715
|
-
if (!
|
|
12716
|
-
|
|
14183
|
+
for (let key of __getOwnPropNames2(from))
|
|
14184
|
+
if (!__hasOwnProp2.call(to, key) && key !== except)
|
|
14185
|
+
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
|
|
12717
14186
|
}
|
|
12718
14187
|
return to;
|
|
12719
14188
|
};
|
|
12720
|
-
var
|
|
14189
|
+
var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
|
|
12721
14190
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
12722
14191
|
// file that has been converted to a CommonJS file using a Babel-
|
|
12723
14192
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
12724
14193
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
12725
|
-
isNodeMode || !mod || !mod.__esModule ?
|
|
14194
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
|
|
12726
14195
|
mod
|
|
12727
14196
|
));
|
|
12728
|
-
var require_is_buffer =
|
|
14197
|
+
var require_is_buffer = __commonJS2({
|
|
12729
14198
|
"node_modules/is-buffer/index.js"(exports, module) {
|
|
12730
14199
|
"use strict";
|
|
12731
14200
|
module.exports = function(obj) {
|
|
@@ -12739,7 +14208,7 @@ var require_is_buffer = __commonJS({
|
|
|
12739
14208
|
}
|
|
12740
14209
|
}
|
|
12741
14210
|
});
|
|
12742
|
-
var require_kind_of =
|
|
14211
|
+
var require_kind_of = __commonJS2({
|
|
12743
14212
|
"node_modules/kind-of/index.js"(exports, module) {
|
|
12744
14213
|
"use strict";
|
|
12745
14214
|
var isBuffer = require_is_buffer();
|
|
@@ -12834,7 +14303,7 @@ var require_kind_of = __commonJS({
|
|
|
12834
14303
|
};
|
|
12835
14304
|
}
|
|
12836
14305
|
});
|
|
12837
|
-
var require_rename_keys =
|
|
14306
|
+
var require_rename_keys = __commonJS2({
|
|
12838
14307
|
"node_modules/rename-keys/index.js"(exports, module) {
|
|
12839
14308
|
"use strict";
|
|
12840
14309
|
(function() {
|
|
@@ -12865,7 +14334,7 @@ var require_rename_keys = __commonJS({
|
|
|
12865
14334
|
})();
|
|
12866
14335
|
}
|
|
12867
14336
|
});
|
|
12868
|
-
var require_deep_rename_keys =
|
|
14337
|
+
var require_deep_rename_keys = __commonJS2({
|
|
12869
14338
|
"node_modules/deep-rename-keys/index.js"(exports, module) {
|
|
12870
14339
|
"use strict";
|
|
12871
14340
|
var typeOf = require_kind_of();
|
|
@@ -12894,7 +14363,7 @@ var require_deep_rename_keys = __commonJS({
|
|
|
12894
14363
|
};
|
|
12895
14364
|
}
|
|
12896
14365
|
});
|
|
12897
|
-
var require_eventemitter3 =
|
|
14366
|
+
var require_eventemitter3 = __commonJS2({
|
|
12898
14367
|
"node_modules/eventemitter3/index.js"(exports, module) {
|
|
12899
14368
|
"use strict";
|
|
12900
14369
|
var has = Object.prototype.hasOwnProperty;
|
|
@@ -13052,7 +14521,7 @@ var require_eventemitter3 = __commonJS({
|
|
|
13052
14521
|
}
|
|
13053
14522
|
}
|
|
13054
14523
|
});
|
|
13055
|
-
var require_lexer =
|
|
14524
|
+
var require_lexer = __commonJS2({
|
|
13056
14525
|
"node_modules/xml-lexer/dist/lexer.js"(exports, module) {
|
|
13057
14526
|
"use strict";
|
|
13058
14527
|
function _defineProperty(obj, key, value) {
|
|
@@ -13295,7 +14764,7 @@ var require_lexer = __commonJS({
|
|
|
13295
14764
|
};
|
|
13296
14765
|
}
|
|
13297
14766
|
});
|
|
13298
|
-
var require_reader =
|
|
14767
|
+
var require_reader = __commonJS2({
|
|
13299
14768
|
"node_modules/xml-reader/dist/reader.js"(exports, module) {
|
|
13300
14769
|
"use strict";
|
|
13301
14770
|
var EventEmitter = require_eventemitter3();
|
|
@@ -13412,8 +14881,8 @@ var require_reader = __commonJS({
|
|
|
13412
14881
|
});
|
|
13413
14882
|
var { cos: cos2, sin: sin2, PI: PI2 } = Math;
|
|
13414
14883
|
var { tan: tan2 } = Math;
|
|
13415
|
-
var import_deep_rename_keys =
|
|
13416
|
-
var import_xml_reader =
|
|
14884
|
+
var import_deep_rename_keys = __toESM2(require_deep_rename_keys());
|
|
14885
|
+
var import_xml_reader = __toESM2(require_reader());
|
|
13417
14886
|
function setStepOfAllObjects(graphics, step) {
|
|
13418
14887
|
if (graphics.points) {
|
|
13419
14888
|
for (const p of graphics.points) {
|
|
@@ -13823,7 +15292,7 @@ var BuildRegionsSolver = class extends BaseSolver2 {
|
|
|
13823
15292
|
}
|
|
13824
15293
|
};
|
|
13825
15294
|
var getOffsetPolygonPoints = (params) => {
|
|
13826
|
-
const { polygon: polygon2, clearance } = params;
|
|
15295
|
+
const { polygon: polygon2, clearance, verticesOnly = false } = params;
|
|
13827
15296
|
const pts = polygon2.points;
|
|
13828
15297
|
const n = pts.length;
|
|
13829
15298
|
if (n < 3) return [];
|
|
@@ -13859,6 +15328,9 @@ var getOffsetPolygonPoints = (params) => {
|
|
|
13859
15328
|
offsetVertices.push({ x: currLine.pt.x, y: currLine.pt.y });
|
|
13860
15329
|
}
|
|
13861
15330
|
}
|
|
15331
|
+
if (verticesOnly) {
|
|
15332
|
+
return offsetVertices;
|
|
15333
|
+
}
|
|
13862
15334
|
const result = [];
|
|
13863
15335
|
for (let i = 0; i < n; i++) {
|
|
13864
15336
|
const v1 = offsetVertices[i];
|
|
@@ -13886,7 +15358,14 @@ var rotatePoint = (params) => {
|
|
|
13886
15358
|
};
|
|
13887
15359
|
};
|
|
13888
15360
|
var generateBoundaryPoints = (params) => {
|
|
13889
|
-
const {
|
|
15361
|
+
const {
|
|
15362
|
+
bounds,
|
|
15363
|
+
vias,
|
|
15364
|
+
clearance,
|
|
15365
|
+
rects,
|
|
15366
|
+
polygons = [],
|
|
15367
|
+
viaSegments = 24
|
|
15368
|
+
} = params;
|
|
13890
15369
|
const points = [];
|
|
13891
15370
|
const { minX: x0, maxX: x1, minY: y0, maxY: y1 } = bounds;
|
|
13892
15371
|
points.push(
|
|
@@ -13903,7 +15382,6 @@ var generateBoundaryPoints = (params) => {
|
|
|
13903
15382
|
points.push({ x: x1 - t * (x1 - x0), y: y1 });
|
|
13904
15383
|
points.push({ x: x0, y: y1 - t * (y1 - y0) });
|
|
13905
15384
|
}
|
|
13906
|
-
const viaSegments = 24;
|
|
13907
15385
|
for (const via of vias) {
|
|
13908
15386
|
const radius = via.diameter / 2 + clearance;
|
|
13909
15387
|
for (let i = 0; i < viaSegments; i++) {
|
|
@@ -13963,6 +15441,159 @@ var generateBoundaryPoints = (params) => {
|
|
|
13963
15441
|
y: pt.y + (i % 5 - 2) * 1e-6
|
|
13964
15442
|
}));
|
|
13965
15443
|
};
|
|
15444
|
+
var resolveConstraintCrossings = (pts, constraintEdges, ringBoundaries) => {
|
|
15445
|
+
const edgeRing = new Array(constraintEdges.length);
|
|
15446
|
+
for (let ei = 0; ei < constraintEdges.length; ei++) {
|
|
15447
|
+
for (let ri = ringBoundaries.length - 1; ri >= 0; ri--) {
|
|
15448
|
+
if (ei >= ringBoundaries[ri]) {
|
|
15449
|
+
edgeRing[ei] = ri;
|
|
15450
|
+
break;
|
|
15451
|
+
}
|
|
15452
|
+
}
|
|
15453
|
+
}
|
|
15454
|
+
const edgeSplits = /* @__PURE__ */ new Map();
|
|
15455
|
+
const outPts = pts.slice();
|
|
15456
|
+
for (let i = 0; i < constraintEdges.length; i++) {
|
|
15457
|
+
for (let j = i + 1; j < constraintEdges.length; j++) {
|
|
15458
|
+
if (edgeRing[i] === edgeRing[j]) continue;
|
|
15459
|
+
const [a1, a2] = constraintEdges[i];
|
|
15460
|
+
const [b1, b2] = constraintEdges[j];
|
|
15461
|
+
const p1 = outPts[a1];
|
|
15462
|
+
const p2 = outPts[a2];
|
|
15463
|
+
const p3 = outPts[b1];
|
|
15464
|
+
const p4 = outPts[b2];
|
|
15465
|
+
const d1x = p2.x - p1.x;
|
|
15466
|
+
const d1y = p2.y - p1.y;
|
|
15467
|
+
const d2x = p4.x - p3.x;
|
|
15468
|
+
const d2y = p4.y - p3.y;
|
|
15469
|
+
const denom = d1x * d2y - d1y * d2x;
|
|
15470
|
+
if (Math.abs(denom) < 1e-10) continue;
|
|
15471
|
+
const t = ((p3.x - p1.x) * d2y - (p3.y - p1.y) * d2x) / denom;
|
|
15472
|
+
const u = ((p3.x - p1.x) * d1y - (p3.y - p1.y) * d1x) / denom;
|
|
15473
|
+
if (t > 1e-6 && t < 1 - 1e-6 && u > 1e-6 && u < 1 - 1e-6) {
|
|
15474
|
+
const ix = p1.x + t * d1x;
|
|
15475
|
+
const iy = p1.y + t * d1y;
|
|
15476
|
+
const newIdx = outPts.length;
|
|
15477
|
+
outPts.push({ x: ix, y: iy });
|
|
15478
|
+
if (!edgeSplits.has(i)) edgeSplits.set(i, []);
|
|
15479
|
+
edgeSplits.get(i).push({ t, idx: newIdx });
|
|
15480
|
+
if (!edgeSplits.has(j)) edgeSplits.set(j, []);
|
|
15481
|
+
edgeSplits.get(j).push({ t: u, idx: newIdx });
|
|
15482
|
+
}
|
|
15483
|
+
}
|
|
15484
|
+
}
|
|
15485
|
+
if (edgeSplits.size === 0) {
|
|
15486
|
+
return { pts, constraintEdges, hadCrossings: false };
|
|
15487
|
+
}
|
|
15488
|
+
const outEdges = [];
|
|
15489
|
+
for (let ei = 0; ei < constraintEdges.length; ei++) {
|
|
15490
|
+
const splits = edgeSplits.get(ei);
|
|
15491
|
+
if (!splits || splits.length === 0) {
|
|
15492
|
+
outEdges.push(constraintEdges[ei]);
|
|
15493
|
+
continue;
|
|
15494
|
+
}
|
|
15495
|
+
splits.sort((a, b) => a.t - b.t);
|
|
15496
|
+
const [startIdx, endIdx] = constraintEdges[ei];
|
|
15497
|
+
let prev = startIdx;
|
|
15498
|
+
for (const split of splits) {
|
|
15499
|
+
outEdges.push([prev, split.idx]);
|
|
15500
|
+
prev = split.idx;
|
|
15501
|
+
}
|
|
15502
|
+
outEdges.push([prev, endIdx]);
|
|
15503
|
+
}
|
|
15504
|
+
return { pts: outPts, constraintEdges: outEdges, hadCrossings: true };
|
|
15505
|
+
};
|
|
15506
|
+
var addRing = (ringPts, allPts, constraintEdges) => {
|
|
15507
|
+
const startIdx = allPts.length;
|
|
15508
|
+
allPts.push(...ringPts);
|
|
15509
|
+
const n = ringPts.length;
|
|
15510
|
+
for (let i = 0; i < n; i++) {
|
|
15511
|
+
constraintEdges.push([startIdx + i, startIdx + (i + 1) % n]);
|
|
15512
|
+
}
|
|
15513
|
+
};
|
|
15514
|
+
var generateBoundaryPointsWithEdges = (params) => {
|
|
15515
|
+
const {
|
|
15516
|
+
bounds,
|
|
15517
|
+
vias,
|
|
15518
|
+
clearance,
|
|
15519
|
+
rects,
|
|
15520
|
+
polygons = [],
|
|
15521
|
+
viaSegments = 8
|
|
15522
|
+
} = params;
|
|
15523
|
+
const allPts = [];
|
|
15524
|
+
const constraintEdges = [];
|
|
15525
|
+
const ringBoundaries = [];
|
|
15526
|
+
const { minX: x0, maxX: x1, minY: y0, maxY: y1 } = bounds;
|
|
15527
|
+
const edgeSegments = 10;
|
|
15528
|
+
const boundsPts = [];
|
|
15529
|
+
for (let i = 0; i < edgeSegments; i++) {
|
|
15530
|
+
const t = i / edgeSegments;
|
|
15531
|
+
boundsPts.push({ x: x0 + t * (x1 - x0), y: y0 });
|
|
15532
|
+
}
|
|
15533
|
+
for (let i = 0; i < edgeSegments; i++) {
|
|
15534
|
+
const t = i / edgeSegments;
|
|
15535
|
+
boundsPts.push({ x: x1, y: y0 + t * (y1 - y0) });
|
|
15536
|
+
}
|
|
15537
|
+
for (let i = 0; i < edgeSegments; i++) {
|
|
15538
|
+
const t = i / edgeSegments;
|
|
15539
|
+
boundsPts.push({ x: x1 - t * (x1 - x0), y: y1 });
|
|
15540
|
+
}
|
|
15541
|
+
for (let i = 0; i < edgeSegments; i++) {
|
|
15542
|
+
const t = i / edgeSegments;
|
|
15543
|
+
boundsPts.push({ x: x0, y: y1 - t * (y1 - y0) });
|
|
15544
|
+
}
|
|
15545
|
+
ringBoundaries.push(constraintEdges.length);
|
|
15546
|
+
addRing(boundsPts, allPts, constraintEdges);
|
|
15547
|
+
for (const via of vias) {
|
|
15548
|
+
const radius = via.diameter / 2 + clearance;
|
|
15549
|
+
const viaPts = [];
|
|
15550
|
+
for (let i = 0; i < viaSegments; i++) {
|
|
15551
|
+
const angle = 2 * Math.PI * i / viaSegments;
|
|
15552
|
+
viaPts.push({
|
|
15553
|
+
x: via.center.x + radius * Math.cos(angle),
|
|
15554
|
+
y: via.center.y + radius * Math.sin(angle)
|
|
15555
|
+
});
|
|
15556
|
+
}
|
|
15557
|
+
ringBoundaries.push(constraintEdges.length);
|
|
15558
|
+
addRing(viaPts, allPts, constraintEdges);
|
|
15559
|
+
}
|
|
15560
|
+
for (const rect of rects) {
|
|
15561
|
+
const halfWidth = rect.width / 2 + clearance;
|
|
15562
|
+
const halfHeight = rect.height / 2 + clearance;
|
|
15563
|
+
const rectPts = [
|
|
15564
|
+
rotatePoint({ localX: -halfWidth, localY: -halfHeight, rect }),
|
|
15565
|
+
rotatePoint({ localX: halfWidth, localY: -halfHeight, rect }),
|
|
15566
|
+
rotatePoint({ localX: halfWidth, localY: halfHeight, rect }),
|
|
15567
|
+
rotatePoint({ localX: -halfWidth, localY: halfHeight, rect })
|
|
15568
|
+
];
|
|
15569
|
+
ringBoundaries.push(constraintEdges.length);
|
|
15570
|
+
addRing(rectPts, allPts, constraintEdges);
|
|
15571
|
+
}
|
|
15572
|
+
for (const polygon2 of polygons) {
|
|
15573
|
+
if (polygon2.points.length < 3) continue;
|
|
15574
|
+
const offsetPoints = getOffsetPolygonPoints({
|
|
15575
|
+
polygon: polygon2,
|
|
15576
|
+
clearance,
|
|
15577
|
+
verticesOnly: true
|
|
15578
|
+
});
|
|
15579
|
+
ringBoundaries.push(constraintEdges.length);
|
|
15580
|
+
addRing(offsetPoints, allPts, constraintEdges);
|
|
15581
|
+
}
|
|
15582
|
+
const resolved = resolveConstraintCrossings(
|
|
15583
|
+
allPts,
|
|
15584
|
+
constraintEdges,
|
|
15585
|
+
ringBoundaries
|
|
15586
|
+
);
|
|
15587
|
+
const jitteredPts = resolved.pts.map((pt, i) => ({
|
|
15588
|
+
x: pt.x + (i % 7 - 3) * 1e-6,
|
|
15589
|
+
y: pt.y + (i % 5 - 2) * 1e-6
|
|
15590
|
+
}));
|
|
15591
|
+
return {
|
|
15592
|
+
pts: jitteredPts,
|
|
15593
|
+
constraintEdges: resolved.constraintEdges,
|
|
15594
|
+
hadCrossings: resolved.hadCrossings
|
|
15595
|
+
};
|
|
15596
|
+
};
|
|
13966
15597
|
var GeneratePointsSolver = class extends BaseSolver2 {
|
|
13967
15598
|
input;
|
|
13968
15599
|
output = null;
|
|
@@ -13974,15 +15605,32 @@ var GeneratePointsSolver = class extends BaseSolver2 {
|
|
|
13974
15605
|
const vias = this.input.vias ?? [];
|
|
13975
15606
|
const rects = this.input.rects ?? [];
|
|
13976
15607
|
const polygons = this.input.polygons ?? [];
|
|
13977
|
-
this.
|
|
13978
|
-
|
|
15608
|
+
if (this.input.useConstrainedDelaunay !== false) {
|
|
15609
|
+
const result = generateBoundaryPointsWithEdges({
|
|
13979
15610
|
bounds: this.input.bounds,
|
|
13980
15611
|
vias,
|
|
13981
15612
|
clearance: this.input.clearance,
|
|
13982
15613
|
rects,
|
|
13983
|
-
polygons
|
|
13984
|
-
|
|
13985
|
-
|
|
15614
|
+
polygons,
|
|
15615
|
+
viaSegments: this.input.viaSegments
|
|
15616
|
+
});
|
|
15617
|
+
this.output = {
|
|
15618
|
+
pts: result.pts,
|
|
15619
|
+
constraintEdges: result.constraintEdges,
|
|
15620
|
+
hadCrossings: result.hadCrossings
|
|
15621
|
+
};
|
|
15622
|
+
} else {
|
|
15623
|
+
this.output = {
|
|
15624
|
+
pts: generateBoundaryPoints({
|
|
15625
|
+
bounds: this.input.bounds,
|
|
15626
|
+
vias,
|
|
15627
|
+
clearance: this.input.clearance,
|
|
15628
|
+
rects,
|
|
15629
|
+
polygons,
|
|
15630
|
+
viaSegments: this.input.viaSegments
|
|
15631
|
+
})
|
|
15632
|
+
};
|
|
15633
|
+
}
|
|
13986
15634
|
this.stats = { points: this.output.pts.length };
|
|
13987
15635
|
this.solved = true;
|
|
13988
15636
|
}
|
|
@@ -14212,6 +15860,10 @@ var MergeCellsSolver = class extends BaseSolver2 {
|
|
|
14212
15860
|
};
|
|
14213
15861
|
}
|
|
14214
15862
|
};
|
|
15863
|
+
var constrainedDelaunay = (pts, constraintEdges) => {
|
|
15864
|
+
const coords = pts.map((p) => [p.x, p.y]);
|
|
15865
|
+
return (0, import_cdt2d.default)(coords, constraintEdges, { exterior: false });
|
|
15866
|
+
};
|
|
14215
15867
|
var circumcircle = (params) => {
|
|
14216
15868
|
const { a, b, c } = params;
|
|
14217
15869
|
const d = 2 * (a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y));
|
|
@@ -14407,22 +16059,38 @@ var TriangulateSolver = class extends BaseSolver2 {
|
|
|
14407
16059
|
const vias = this.input.vias ?? [];
|
|
14408
16060
|
const rects = this.input.rects ?? [];
|
|
14409
16061
|
const polygons = this.input.polygons ?? [];
|
|
14410
|
-
|
|
14411
|
-
|
|
14412
|
-
|
|
14413
|
-
|
|
14414
|
-
|
|
14415
|
-
|
|
14416
|
-
|
|
14417
|
-
|
|
14418
|
-
|
|
14419
|
-
|
|
16062
|
+
let validTris;
|
|
16063
|
+
if (this.input.useConstrainedDelaunay !== false && this.input.constraintEdges) {
|
|
16064
|
+
const cdtTris = constrainedDelaunay(
|
|
16065
|
+
this.input.pts,
|
|
16066
|
+
this.input.constraintEdges
|
|
16067
|
+
);
|
|
16068
|
+
validTris = this.input.hadCrossings ? filterTris({
|
|
16069
|
+
triangles: cdtTris,
|
|
16070
|
+
pts: this.input.pts,
|
|
16071
|
+
bounds: this.input.bounds,
|
|
16072
|
+
vias,
|
|
16073
|
+
clearance: this.input.clearance,
|
|
16074
|
+
rects,
|
|
16075
|
+
polygons
|
|
16076
|
+
}) : cdtTris;
|
|
16077
|
+
} else {
|
|
16078
|
+
const allTriangles = delaunay(this.input.pts);
|
|
16079
|
+
validTris = filterTris({
|
|
16080
|
+
triangles: allTriangles,
|
|
16081
|
+
pts: this.input.pts,
|
|
16082
|
+
bounds: this.input.bounds,
|
|
16083
|
+
vias,
|
|
16084
|
+
clearance: this.input.clearance,
|
|
16085
|
+
rects,
|
|
16086
|
+
polygons
|
|
16087
|
+
});
|
|
16088
|
+
}
|
|
14420
16089
|
this.output = {
|
|
14421
16090
|
pts: this.input.pts,
|
|
14422
16091
|
validTris
|
|
14423
16092
|
};
|
|
14424
16093
|
this.stats = {
|
|
14425
|
-
candidateTriangles: allTriangles.length,
|
|
14426
16094
|
validTriangles: validTris.length
|
|
14427
16095
|
};
|
|
14428
16096
|
this.solved = true;
|
|
@@ -14480,7 +16148,10 @@ var ConvexRegionsSolver = class extends BasePipelineSolver {
|
|
|
14480
16148
|
vias: instance.inputProblem.vias,
|
|
14481
16149
|
rects: instance.inputProblem.rects,
|
|
14482
16150
|
polygons: instance.inputProblem.polygons,
|
|
14483
|
-
clearance: instance.inputProblem.clearance
|
|
16151
|
+
clearance: instance.inputProblem.clearance,
|
|
16152
|
+
useConstrainedDelaunay: instance.inputProblem.useConstrainedDelaunay,
|
|
16153
|
+
constraintEdges: generated.constraintEdges,
|
|
16154
|
+
hadCrossings: generated.hadCrossings
|
|
14484
16155
|
}
|
|
14485
16156
|
];
|
|
14486
16157
|
}),
|