@tscircuit/hypergraph 0.0.40 → 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.d.ts +118 -246
- package/dist/index.js +1834 -291
- 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) => ({
|
|
@@ -3766,401 +5234,273 @@ ${errors.map((e) => ` - ${e}`).join("\n")}`
|
|
|
3766
5234
|
// assets/ViaGraphSolver/via-tile-4-regions.json
|
|
3767
5235
|
var via_tile_4_regions_default = {
|
|
3768
5236
|
viasByNet: {
|
|
3769
|
-
|
|
5237
|
+
net1: [
|
|
3770
5238
|
{
|
|
3771
|
-
viaId: "
|
|
5239
|
+
viaId: "14ee4bf1-e7e7-4351-ad16-ba1a8aac0af3",
|
|
3772
5240
|
diameter: 0.6,
|
|
3773
5241
|
position: {
|
|
3774
|
-
x: 1.
|
|
3775
|
-
y: 0.
|
|
5242
|
+
x: 1.187494,
|
|
5243
|
+
y: 0.226901
|
|
3776
5244
|
}
|
|
3777
5245
|
},
|
|
3778
5246
|
{
|
|
3779
|
-
viaId: "
|
|
5247
|
+
viaId: "8a898812-db2b-4b81-899d-f953b3222f9a",
|
|
3780
5248
|
diameter: 0.6,
|
|
3781
5249
|
position: {
|
|
3782
|
-
x: -0.
|
|
3783
|
-
y:
|
|
3784
|
-
}
|
|
3785
|
-
},
|
|
3786
|
-
{
|
|
3787
|
-
viaId: "f1d52fd5-ddd2-4440-8772-da3d096b033f",
|
|
3788
|
-
diameter: 0.6,
|
|
3789
|
-
position: {
|
|
3790
|
-
x: -0.428066,
|
|
3791
|
-
y: 1.185303
|
|
5250
|
+
x: -0.890462,
|
|
5251
|
+
y: 1.024371
|
|
3792
5252
|
}
|
|
3793
5253
|
}
|
|
3794
5254
|
],
|
|
3795
|
-
|
|
5255
|
+
net3: [
|
|
3796
5256
|
{
|
|
3797
|
-
viaId: "
|
|
5257
|
+
viaId: "13cd75da-d582-4eed-bc2c-fee6fa78bc6a",
|
|
3798
5258
|
diameter: 0.6,
|
|
3799
5259
|
position: {
|
|
3800
|
-
x:
|
|
3801
|
-
y: -1.
|
|
5260
|
+
x: -1.229928,
|
|
5261
|
+
y: -1.159683
|
|
3802
5262
|
}
|
|
3803
5263
|
},
|
|
3804
5264
|
{
|
|
3805
|
-
viaId: "
|
|
5265
|
+
viaId: "9f188f9d-bce8-46c7-b9e8-542b8599d48d",
|
|
3806
5266
|
diameter: 0.6,
|
|
3807
5267
|
position: {
|
|
3808
|
-
x:
|
|
3809
|
-
y:
|
|
3810
|
-
}
|
|
3811
|
-
},
|
|
3812
|
-
{
|
|
3813
|
-
viaId: "b0c56bb1-ea80-4154-9bb7-cb0fd760de8f",
|
|
3814
|
-
diameter: 0.6,
|
|
3815
|
-
position: {
|
|
3816
|
-
x: 0.685025,
|
|
3817
|
-
y: 1.338478
|
|
5268
|
+
x: 1.364053,
|
|
5269
|
+
y: 1.083575
|
|
3818
5270
|
}
|
|
3819
5271
|
}
|
|
3820
5272
|
],
|
|
3821
|
-
|
|
5273
|
+
net4: [
|
|
3822
5274
|
{
|
|
3823
|
-
viaId: "
|
|
5275
|
+
viaId: "2ef3b96b-58c4-4150-b5d1-e90f74b92b25",
|
|
3824
5276
|
diameter: 0.6,
|
|
3825
5277
|
position: {
|
|
3826
|
-
x:
|
|
3827
|
-
y: 1.
|
|
5278
|
+
x: -0.134894,
|
|
5279
|
+
y: 1.042149
|
|
3828
5280
|
}
|
|
3829
5281
|
},
|
|
3830
5282
|
{
|
|
3831
|
-
viaId: "
|
|
5283
|
+
viaId: "37a70467-7553-415f-8ad7-8b88a5e56ca8",
|
|
3832
5284
|
diameter: 0.6,
|
|
3833
5285
|
position: {
|
|
3834
|
-
x: -1.
|
|
3835
|
-
y: 0
|
|
5286
|
+
x: -1.195947,
|
|
5287
|
+
y: 0.339403
|
|
3836
5288
|
}
|
|
3837
5289
|
},
|
|
3838
5290
|
{
|
|
3839
|
-
viaId: "
|
|
5291
|
+
viaId: "6d182b7d-a260-427b-8c43-a09409422252",
|
|
3840
5292
|
diameter: 0.6,
|
|
3841
5293
|
position: {
|
|
3842
|
-
x:
|
|
3843
|
-
y: -
|
|
5294
|
+
x: -0.141929,
|
|
5295
|
+
y: -1.050896
|
|
3844
5296
|
}
|
|
3845
5297
|
}
|
|
3846
5298
|
],
|
|
3847
|
-
|
|
5299
|
+
net5: [
|
|
3848
5300
|
{
|
|
3849
|
-
viaId: "
|
|
5301
|
+
viaId: "346c301a-f2b4-44d7-b975-5438ddaa0bde",
|
|
3850
5302
|
diameter: 0.6,
|
|
3851
5303
|
position: {
|
|
3852
|
-
x:
|
|
3853
|
-
y: -0.
|
|
5304
|
+
x: 0.587494,
|
|
5305
|
+
y: -0.438741
|
|
3854
5306
|
}
|
|
3855
5307
|
},
|
|
3856
5308
|
{
|
|
3857
|
-
viaId: "
|
|
5309
|
+
viaId: "c54b4b94-90e0-4240-97ef-883cf097d79d",
|
|
3858
5310
|
diameter: 0.6,
|
|
3859
5311
|
position: {
|
|
3860
|
-
x: 0.
|
|
3861
|
-
y:
|
|
5312
|
+
x: 0.614052,
|
|
5313
|
+
y: 1.081959
|
|
3862
5314
|
}
|
|
3863
5315
|
},
|
|
3864
5316
|
{
|
|
3865
|
-
viaId: "
|
|
5317
|
+
viaId: "f3cb916e-b0fd-4c5e-b14b-3779f4f9bd01",
|
|
3866
5318
|
diameter: 0.6,
|
|
3867
5319
|
position: {
|
|
3868
|
-
x: -1.
|
|
3869
|
-
y:
|
|
5320
|
+
x: -1.192929,
|
|
5321
|
+
y: -0.410594
|
|
3870
5322
|
}
|
|
3871
5323
|
}
|
|
3872
5324
|
]
|
|
3873
5325
|
},
|
|
3874
5326
|
routeSegments: [
|
|
3875
5327
|
{
|
|
3876
|
-
routeId: "
|
|
3877
|
-
fromPort: "
|
|
3878
|
-
toPort: "
|
|
3879
|
-
layer: "bottom",
|
|
3880
|
-
segments: [
|
|
3881
|
-
{
|
|
3882
|
-
x: 1.483834,
|
|
3883
|
-
y: 0.582296
|
|
3884
|
-
},
|
|
3885
|
-
{
|
|
3886
|
-
x: 1.960987,
|
|
3887
|
-
y: 1.059449
|
|
3888
|
-
},
|
|
3889
|
-
{
|
|
3890
|
-
x: 1.960987,
|
|
3891
|
-
y: 1.548584
|
|
3892
|
-
},
|
|
3893
|
-
{
|
|
3894
|
-
x: 1.344093,
|
|
3895
|
-
y: 2.165478
|
|
3896
|
-
},
|
|
3897
|
-
{
|
|
3898
|
-
x: 0.165478,
|
|
3899
|
-
y: 2.165478
|
|
3900
|
-
},
|
|
3901
|
-
{
|
|
3902
|
-
x: -0.428066,
|
|
3903
|
-
y: 1.571934
|
|
3904
|
-
},
|
|
3905
|
-
{
|
|
3906
|
-
x: -0.428066,
|
|
3907
|
-
y: 1.185303
|
|
3908
|
-
}
|
|
3909
|
-
]
|
|
3910
|
-
},
|
|
3911
|
-
{
|
|
3912
|
-
routeId: "Net6:route_1",
|
|
3913
|
-
fromPort: "79364d38-c966-4eff-aa4a-e3ff6cca6339",
|
|
3914
|
-
toPort: "f1d52fd5-ddd2-4440-8772-da3d096b033f",
|
|
5328
|
+
routeId: "net1:route_0",
|
|
5329
|
+
fromPort: "14ee4bf1-e7e7-4351-ad16-ba1a8aac0af3",
|
|
5330
|
+
toPort: "8a898812-db2b-4b81-899d-f953b3222f9a",
|
|
3915
5331
|
layer: "bottom",
|
|
3916
5332
|
segments: [
|
|
3917
5333
|
{
|
|
3918
|
-
x:
|
|
3919
|
-
y:
|
|
3920
|
-
},
|
|
3921
|
-
{
|
|
3922
|
-
x: -0.810394,
|
|
3923
|
-
y: -1.360191
|
|
3924
|
-
},
|
|
3925
|
-
{
|
|
3926
|
-
x: -1.493877,
|
|
3927
|
-
y: -1.360191
|
|
3928
|
-
},
|
|
3929
|
-
{
|
|
3930
|
-
x: -1.80445,
|
|
3931
|
-
y: -1.049618
|
|
3932
|
-
},
|
|
3933
|
-
{
|
|
3934
|
-
x: -1.80445,
|
|
3935
|
-
y: 0.214427
|
|
3936
|
-
},
|
|
3937
|
-
{
|
|
3938
|
-
x: -1.801,
|
|
3939
|
-
y: 0.210977
|
|
3940
|
-
},
|
|
3941
|
-
{
|
|
3942
|
-
x: -1.801,
|
|
3943
|
-
y: 0.217877
|
|
3944
|
-
},
|
|
3945
|
-
{
|
|
3946
|
-
x: -1.492877,
|
|
3947
|
-
y: 0.526
|
|
3948
|
-
},
|
|
3949
|
-
{
|
|
3950
|
-
x: -1.057123,
|
|
3951
|
-
y: 0.526
|
|
3952
|
-
},
|
|
3953
|
-
{
|
|
3954
|
-
x: -0.849428,
|
|
3955
|
-
y: 0.318305
|
|
5334
|
+
x: 1.187494,
|
|
5335
|
+
y: 0.226901
|
|
3956
5336
|
},
|
|
3957
5337
|
{
|
|
3958
|
-
x:
|
|
3959
|
-
y: 0.
|
|
5338
|
+
x: 1.187494,
|
|
5339
|
+
y: -0.582618
|
|
3960
5340
|
},
|
|
3961
5341
|
{
|
|
3962
|
-
x:
|
|
3963
|
-
y:
|
|
5342
|
+
x: 0.193216,
|
|
5343
|
+
y: -1.576896
|
|
3964
5344
|
},
|
|
3965
5345
|
{
|
|
3966
|
-
x: -0.
|
|
3967
|
-
y:
|
|
5346
|
+
x: -0.359806,
|
|
5347
|
+
y: -1.576896
|
|
3968
5348
|
},
|
|
3969
5349
|
{
|
|
3970
|
-
x: -0.
|
|
3971
|
-
y: 1.
|
|
5350
|
+
x: -0.667929,
|
|
5351
|
+
y: -1.268773
|
|
3972
5352
|
},
|
|
3973
5353
|
{
|
|
3974
|
-
x: -0.
|
|
3975
|
-
y:
|
|
3976
|
-
}
|
|
3977
|
-
]
|
|
3978
|
-
},
|
|
3979
|
-
{
|
|
3980
|
-
routeId: "Net5:route_0",
|
|
3981
|
-
fromPort: "4e57cee8-0910-4c83-9ec1-1ed2c9d16dcc",
|
|
3982
|
-
toPort: "a3797f13-73f9-48c3-a448-bea3980cdd65",
|
|
3983
|
-
layer: "bottom",
|
|
3984
|
-
segments: [
|
|
3985
|
-
{
|
|
3986
|
-
x: 0.981466,
|
|
3987
|
-
y: -1.472559
|
|
5354
|
+
x: -0.667929,
|
|
5355
|
+
y: 0.561982
|
|
3988
5356
|
},
|
|
3989
5357
|
{
|
|
3990
|
-
x: 0.
|
|
3991
|
-
y:
|
|
5358
|
+
x: -0.890462,
|
|
5359
|
+
y: 0.784515
|
|
3992
5360
|
},
|
|
3993
5361
|
{
|
|
3994
|
-
x: -
|
|
3995
|
-
y:
|
|
5362
|
+
x: -0.890462,
|
|
5363
|
+
y: 1.024371
|
|
3996
5364
|
}
|
|
3997
5365
|
]
|
|
3998
5366
|
},
|
|
3999
5367
|
{
|
|
4000
|
-
routeId: "
|
|
4001
|
-
fromPort: "
|
|
4002
|
-
toPort: "
|
|
5368
|
+
routeId: "net3:route_0",
|
|
5369
|
+
fromPort: "13cd75da-d582-4eed-bc2c-fee6fa78bc6a",
|
|
5370
|
+
toPort: "9f188f9d-bce8-46c7-b9e8-542b8599d48d",
|
|
4003
5371
|
layer: "bottom",
|
|
4004
5372
|
segments: [
|
|
4005
5373
|
{
|
|
4006
|
-
x: -1.
|
|
4007
|
-
y: -
|
|
5374
|
+
x: -1.229928,
|
|
5375
|
+
y: -1.159683
|
|
4008
5376
|
},
|
|
4009
5377
|
{
|
|
4010
|
-
x: -
|
|
4011
|
-
y: -
|
|
5378
|
+
x: -0.511715,
|
|
5379
|
+
y: -1.877896
|
|
4012
5380
|
},
|
|
4013
5381
|
{
|
|
4014
|
-
x:
|
|
4015
|
-
y: -
|
|
5382
|
+
x: 0.317894,
|
|
5383
|
+
y: -1.877896
|
|
4016
5384
|
},
|
|
4017
5385
|
{
|
|
4018
|
-
x:
|
|
4019
|
-
y: -0.
|
|
5386
|
+
x: 1.713494,
|
|
5387
|
+
y: -0.482296
|
|
4020
5388
|
},
|
|
4021
5389
|
{
|
|
4022
|
-
x:
|
|
4023
|
-
y: 0.
|
|
5390
|
+
x: 1.713494,
|
|
5391
|
+
y: 0.734134
|
|
4024
5392
|
},
|
|
4025
5393
|
{
|
|
4026
|
-
x:
|
|
4027
|
-
y: 1.
|
|
4028
|
-
},
|
|
4029
|
-
{
|
|
4030
|
-
x: 0.685025,
|
|
4031
|
-
y: 1.338478
|
|
5394
|
+
x: 1.364053,
|
|
5395
|
+
y: 1.083575
|
|
4032
5396
|
}
|
|
4033
5397
|
]
|
|
4034
5398
|
},
|
|
4035
5399
|
{
|
|
4036
|
-
routeId: "
|
|
4037
|
-
fromPort: "
|
|
4038
|
-
toPort: "
|
|
5400
|
+
routeId: "net4:route_0",
|
|
5401
|
+
fromPort: "2ef3b96b-58c4-4150-b5d1-e90f74b92b25",
|
|
5402
|
+
toPort: "6d182b7d-a260-427b-8c43-a09409422252",
|
|
4039
5403
|
layer: "bottom",
|
|
4040
5404
|
segments: [
|
|
4041
5405
|
{
|
|
4042
|
-
x:
|
|
4043
|
-
y: 1.
|
|
4044
|
-
},
|
|
4045
|
-
{
|
|
4046
|
-
x: 0.957834,
|
|
4047
|
-
y: 0.853554
|
|
5406
|
+
x: -0.134894,
|
|
5407
|
+
y: 1.042149
|
|
4048
5408
|
},
|
|
4049
5409
|
{
|
|
4050
|
-
x: 0.
|
|
4051
|
-
y:
|
|
5410
|
+
x: -0.141929,
|
|
5411
|
+
y: 1.035114
|
|
4052
5412
|
},
|
|
4053
5413
|
{
|
|
4054
|
-
x:
|
|
4055
|
-
y: -
|
|
5414
|
+
x: -0.141929,
|
|
5415
|
+
y: -1.050896
|
|
4056
5416
|
}
|
|
4057
5417
|
]
|
|
4058
5418
|
},
|
|
4059
5419
|
{
|
|
4060
|
-
routeId: "
|
|
4061
|
-
fromPort: "
|
|
4062
|
-
toPort: "
|
|
5420
|
+
routeId: "net4:route_1",
|
|
5421
|
+
fromPort: "2ef3b96b-58c4-4150-b5d1-e90f74b92b25",
|
|
5422
|
+
toPort: "37a70467-7553-415f-8ad7-8b88a5e56ca8",
|
|
4063
5423
|
layer: "bottom",
|
|
4064
5424
|
segments: [
|
|
4065
5425
|
{
|
|
4066
|
-
x:
|
|
4067
|
-
y: 1.
|
|
5426
|
+
x: -0.134894,
|
|
5427
|
+
y: 1.042149
|
|
4068
5428
|
},
|
|
4069
5429
|
{
|
|
4070
|
-
x:
|
|
4071
|
-
y: 1.
|
|
5430
|
+
x: -0.643116,
|
|
5431
|
+
y: 1.550371
|
|
4072
5432
|
},
|
|
4073
5433
|
{
|
|
4074
|
-
x:
|
|
4075
|
-
y: 1.
|
|
5434
|
+
x: -1.108339,
|
|
5435
|
+
y: 1.550371
|
|
4076
5436
|
},
|
|
4077
5437
|
{
|
|
4078
|
-
x:
|
|
4079
|
-
y: 1.
|
|
5438
|
+
x: -1.416462,
|
|
5439
|
+
y: 1.242248
|
|
4080
5440
|
},
|
|
4081
5441
|
{
|
|
4082
|
-
x:
|
|
4083
|
-
y:
|
|
5442
|
+
x: -1.416462,
|
|
5443
|
+
y: 0.559918
|
|
4084
5444
|
},
|
|
4085
5445
|
{
|
|
4086
|
-
x:
|
|
4087
|
-
y: 0.
|
|
4088
|
-
},
|
|
4089
|
-
{
|
|
4090
|
-
x: -0.742055,
|
|
4091
|
-
y: 0
|
|
4092
|
-
},
|
|
4093
|
-
{
|
|
4094
|
-
x: -1.275,
|
|
4095
|
-
y: 0
|
|
5446
|
+
x: -1.195947,
|
|
5447
|
+
y: 0.339403
|
|
4096
5448
|
}
|
|
4097
5449
|
]
|
|
4098
5450
|
},
|
|
4099
5451
|
{
|
|
4100
|
-
routeId: "
|
|
4101
|
-
fromPort: "
|
|
4102
|
-
toPort: "
|
|
5452
|
+
routeId: "net5:route_0",
|
|
5453
|
+
fromPort: "346c301a-f2b4-44d7-b975-5438ddaa0bde",
|
|
5454
|
+
toPort: "c54b4b94-90e0-4240-97ef-883cf097d79d",
|
|
4103
5455
|
layer: "bottom",
|
|
4104
5456
|
segments: [
|
|
4105
5457
|
{
|
|
4106
|
-
x:
|
|
4107
|
-
y: -0.
|
|
4108
|
-
},
|
|
4109
|
-
{
|
|
4110
|
-
x: 2.004363,
|
|
4111
|
-
y: -0.615839
|
|
4112
|
-
},
|
|
4113
|
-
{
|
|
4114
|
-
x: 2.004363,
|
|
4115
|
-
y: -1.193539
|
|
5458
|
+
x: 0.587494,
|
|
5459
|
+
y: -0.438741
|
|
4116
5460
|
},
|
|
4117
5461
|
{
|
|
4118
|
-
x:
|
|
4119
|
-
y:
|
|
5462
|
+
x: 0.587494,
|
|
5463
|
+
y: 1.080547
|
|
4120
5464
|
},
|
|
4121
5465
|
{
|
|
4122
|
-
x: 0.
|
|
4123
|
-
y:
|
|
5466
|
+
x: 0.588906,
|
|
5467
|
+
y: 1.081959
|
|
4124
5468
|
},
|
|
4125
5469
|
{
|
|
4126
|
-
x: 0.
|
|
4127
|
-
y:
|
|
5470
|
+
x: 0.614052,
|
|
5471
|
+
y: 1.081959
|
|
4128
5472
|
}
|
|
4129
5473
|
]
|
|
4130
5474
|
},
|
|
4131
5475
|
{
|
|
4132
|
-
routeId: "
|
|
4133
|
-
fromPort: "
|
|
4134
|
-
toPort: "
|
|
5476
|
+
routeId: "net5:route_1",
|
|
5477
|
+
fromPort: "c54b4b94-90e0-4240-97ef-883cf097d79d",
|
|
5478
|
+
toPort: "f3cb916e-b0fd-4c5e-b14b-3779f4f9bd01",
|
|
4135
5479
|
layer: "bottom",
|
|
4136
5480
|
segments: [
|
|
4137
5481
|
{
|
|
4138
|
-
x: 0.
|
|
4139
|
-
y:
|
|
5482
|
+
x: 0.614052,
|
|
5483
|
+
y: 1.081959
|
|
4140
5484
|
},
|
|
4141
5485
|
{
|
|
4142
|
-
x: -0.
|
|
4143
|
-
y:
|
|
5486
|
+
x: -0.15536,
|
|
5487
|
+
y: 1.851371
|
|
4144
5488
|
},
|
|
4145
5489
|
{
|
|
4146
|
-
x: -1.
|
|
4147
|
-
y:
|
|
5490
|
+
x: -1.233017,
|
|
5491
|
+
y: 1.851371
|
|
4148
5492
|
},
|
|
4149
5493
|
{
|
|
4150
|
-
x: -
|
|
4151
|
-
y:
|
|
5494
|
+
x: -1.721947,
|
|
5495
|
+
y: 1.362441
|
|
4152
5496
|
},
|
|
4153
5497
|
{
|
|
4154
|
-
x: -
|
|
4155
|
-
y: 0.
|
|
5498
|
+
x: -1.721947,
|
|
5499
|
+
y: 0.118424
|
|
4156
5500
|
},
|
|
4157
5501
|
{
|
|
4158
|
-
x: -1.
|
|
4159
|
-
y:
|
|
4160
|
-
},
|
|
4161
|
-
{
|
|
4162
|
-
x: -1.168748,
|
|
4163
|
-
y: 1.067434
|
|
5502
|
+
x: -1.192929,
|
|
5503
|
+
y: -0.410594
|
|
4164
5504
|
}
|
|
4165
5505
|
]
|
|
4166
5506
|
}
|
|
@@ -12828,32 +14168,33 @@ Flatten.BooleanOperations = BooleanOperations;
|
|
|
12828
14168
|
Flatten.Relations = Relations;
|
|
12829
14169
|
|
|
12830
14170
|
// node_modules/@tscircuit/find-convex-regions/dist/index.js
|
|
12831
|
-
var
|
|
12832
|
-
var
|
|
12833
|
-
var
|
|
12834
|
-
var
|
|
12835
|
-
var
|
|
12836
|
-
var
|
|
12837
|
-
var
|
|
12838
|
-
|
|
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;
|
|
12839
14180
|
};
|
|
12840
|
-
var
|
|
14181
|
+
var __copyProps2 = (to, from, except, desc) => {
|
|
12841
14182
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
12842
|
-
for (let key of
|
|
12843
|
-
if (!
|
|
12844
|
-
|
|
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 });
|
|
12845
14186
|
}
|
|
12846
14187
|
return to;
|
|
12847
14188
|
};
|
|
12848
|
-
var
|
|
14189
|
+
var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
|
|
12849
14190
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
12850
14191
|
// file that has been converted to a CommonJS file using a Babel-
|
|
12851
14192
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
12852
14193
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
12853
|
-
isNodeMode || !mod || !mod.__esModule ?
|
|
14194
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
|
|
12854
14195
|
mod
|
|
12855
14196
|
));
|
|
12856
|
-
var require_is_buffer =
|
|
14197
|
+
var require_is_buffer = __commonJS2({
|
|
12857
14198
|
"node_modules/is-buffer/index.js"(exports, module) {
|
|
12858
14199
|
"use strict";
|
|
12859
14200
|
module.exports = function(obj) {
|
|
@@ -12867,7 +14208,7 @@ var require_is_buffer = __commonJS({
|
|
|
12867
14208
|
}
|
|
12868
14209
|
}
|
|
12869
14210
|
});
|
|
12870
|
-
var require_kind_of =
|
|
14211
|
+
var require_kind_of = __commonJS2({
|
|
12871
14212
|
"node_modules/kind-of/index.js"(exports, module) {
|
|
12872
14213
|
"use strict";
|
|
12873
14214
|
var isBuffer = require_is_buffer();
|
|
@@ -12962,7 +14303,7 @@ var require_kind_of = __commonJS({
|
|
|
12962
14303
|
};
|
|
12963
14304
|
}
|
|
12964
14305
|
});
|
|
12965
|
-
var require_rename_keys =
|
|
14306
|
+
var require_rename_keys = __commonJS2({
|
|
12966
14307
|
"node_modules/rename-keys/index.js"(exports, module) {
|
|
12967
14308
|
"use strict";
|
|
12968
14309
|
(function() {
|
|
@@ -12993,7 +14334,7 @@ var require_rename_keys = __commonJS({
|
|
|
12993
14334
|
})();
|
|
12994
14335
|
}
|
|
12995
14336
|
});
|
|
12996
|
-
var require_deep_rename_keys =
|
|
14337
|
+
var require_deep_rename_keys = __commonJS2({
|
|
12997
14338
|
"node_modules/deep-rename-keys/index.js"(exports, module) {
|
|
12998
14339
|
"use strict";
|
|
12999
14340
|
var typeOf = require_kind_of();
|
|
@@ -13022,7 +14363,7 @@ var require_deep_rename_keys = __commonJS({
|
|
|
13022
14363
|
};
|
|
13023
14364
|
}
|
|
13024
14365
|
});
|
|
13025
|
-
var require_eventemitter3 =
|
|
14366
|
+
var require_eventemitter3 = __commonJS2({
|
|
13026
14367
|
"node_modules/eventemitter3/index.js"(exports, module) {
|
|
13027
14368
|
"use strict";
|
|
13028
14369
|
var has = Object.prototype.hasOwnProperty;
|
|
@@ -13180,7 +14521,7 @@ var require_eventemitter3 = __commonJS({
|
|
|
13180
14521
|
}
|
|
13181
14522
|
}
|
|
13182
14523
|
});
|
|
13183
|
-
var require_lexer =
|
|
14524
|
+
var require_lexer = __commonJS2({
|
|
13184
14525
|
"node_modules/xml-lexer/dist/lexer.js"(exports, module) {
|
|
13185
14526
|
"use strict";
|
|
13186
14527
|
function _defineProperty(obj, key, value) {
|
|
@@ -13423,7 +14764,7 @@ var require_lexer = __commonJS({
|
|
|
13423
14764
|
};
|
|
13424
14765
|
}
|
|
13425
14766
|
});
|
|
13426
|
-
var require_reader =
|
|
14767
|
+
var require_reader = __commonJS2({
|
|
13427
14768
|
"node_modules/xml-reader/dist/reader.js"(exports, module) {
|
|
13428
14769
|
"use strict";
|
|
13429
14770
|
var EventEmitter = require_eventemitter3();
|
|
@@ -13540,8 +14881,8 @@ var require_reader = __commonJS({
|
|
|
13540
14881
|
});
|
|
13541
14882
|
var { cos: cos2, sin: sin2, PI: PI2 } = Math;
|
|
13542
14883
|
var { tan: tan2 } = Math;
|
|
13543
|
-
var import_deep_rename_keys =
|
|
13544
|
-
var import_xml_reader =
|
|
14884
|
+
var import_deep_rename_keys = __toESM2(require_deep_rename_keys());
|
|
14885
|
+
var import_xml_reader = __toESM2(require_reader());
|
|
13545
14886
|
function setStepOfAllObjects(graphics, step) {
|
|
13546
14887
|
if (graphics.points) {
|
|
13547
14888
|
for (const p of graphics.points) {
|
|
@@ -13951,7 +15292,7 @@ var BuildRegionsSolver = class extends BaseSolver2 {
|
|
|
13951
15292
|
}
|
|
13952
15293
|
};
|
|
13953
15294
|
var getOffsetPolygonPoints = (params) => {
|
|
13954
|
-
const { polygon: polygon2, clearance } = params;
|
|
15295
|
+
const { polygon: polygon2, clearance, verticesOnly = false } = params;
|
|
13955
15296
|
const pts = polygon2.points;
|
|
13956
15297
|
const n = pts.length;
|
|
13957
15298
|
if (n < 3) return [];
|
|
@@ -13987,6 +15328,9 @@ var getOffsetPolygonPoints = (params) => {
|
|
|
13987
15328
|
offsetVertices.push({ x: currLine.pt.x, y: currLine.pt.y });
|
|
13988
15329
|
}
|
|
13989
15330
|
}
|
|
15331
|
+
if (verticesOnly) {
|
|
15332
|
+
return offsetVertices;
|
|
15333
|
+
}
|
|
13990
15334
|
const result = [];
|
|
13991
15335
|
for (let i = 0; i < n; i++) {
|
|
13992
15336
|
const v1 = offsetVertices[i];
|
|
@@ -14014,7 +15358,14 @@ var rotatePoint = (params) => {
|
|
|
14014
15358
|
};
|
|
14015
15359
|
};
|
|
14016
15360
|
var generateBoundaryPoints = (params) => {
|
|
14017
|
-
const {
|
|
15361
|
+
const {
|
|
15362
|
+
bounds,
|
|
15363
|
+
vias,
|
|
15364
|
+
clearance,
|
|
15365
|
+
rects,
|
|
15366
|
+
polygons = [],
|
|
15367
|
+
viaSegments = 24
|
|
15368
|
+
} = params;
|
|
14018
15369
|
const points = [];
|
|
14019
15370
|
const { minX: x0, maxX: x1, minY: y0, maxY: y1 } = bounds;
|
|
14020
15371
|
points.push(
|
|
@@ -14031,7 +15382,6 @@ var generateBoundaryPoints = (params) => {
|
|
|
14031
15382
|
points.push({ x: x1 - t * (x1 - x0), y: y1 });
|
|
14032
15383
|
points.push({ x: x0, y: y1 - t * (y1 - y0) });
|
|
14033
15384
|
}
|
|
14034
|
-
const viaSegments = 24;
|
|
14035
15385
|
for (const via of vias) {
|
|
14036
15386
|
const radius = via.diameter / 2 + clearance;
|
|
14037
15387
|
for (let i = 0; i < viaSegments; i++) {
|
|
@@ -14091,6 +15441,159 @@ var generateBoundaryPoints = (params) => {
|
|
|
14091
15441
|
y: pt.y + (i % 5 - 2) * 1e-6
|
|
14092
15442
|
}));
|
|
14093
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
|
+
};
|
|
14094
15597
|
var GeneratePointsSolver = class extends BaseSolver2 {
|
|
14095
15598
|
input;
|
|
14096
15599
|
output = null;
|
|
@@ -14102,15 +15605,32 @@ var GeneratePointsSolver = class extends BaseSolver2 {
|
|
|
14102
15605
|
const vias = this.input.vias ?? [];
|
|
14103
15606
|
const rects = this.input.rects ?? [];
|
|
14104
15607
|
const polygons = this.input.polygons ?? [];
|
|
14105
|
-
this.
|
|
14106
|
-
|
|
15608
|
+
if (this.input.useConstrainedDelaunay !== false) {
|
|
15609
|
+
const result = generateBoundaryPointsWithEdges({
|
|
14107
15610
|
bounds: this.input.bounds,
|
|
14108
15611
|
vias,
|
|
14109
15612
|
clearance: this.input.clearance,
|
|
14110
15613
|
rects,
|
|
14111
|
-
polygons
|
|
14112
|
-
|
|
14113
|
-
|
|
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
|
+
}
|
|
14114
15634
|
this.stats = { points: this.output.pts.length };
|
|
14115
15635
|
this.solved = true;
|
|
14116
15636
|
}
|
|
@@ -14340,6 +15860,10 @@ var MergeCellsSolver = class extends BaseSolver2 {
|
|
|
14340
15860
|
};
|
|
14341
15861
|
}
|
|
14342
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
|
+
};
|
|
14343
15867
|
var circumcircle = (params) => {
|
|
14344
15868
|
const { a, b, c } = params;
|
|
14345
15869
|
const d = 2 * (a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y));
|
|
@@ -14535,22 +16059,38 @@ var TriangulateSolver = class extends BaseSolver2 {
|
|
|
14535
16059
|
const vias = this.input.vias ?? [];
|
|
14536
16060
|
const rects = this.input.rects ?? [];
|
|
14537
16061
|
const polygons = this.input.polygons ?? [];
|
|
14538
|
-
|
|
14539
|
-
|
|
14540
|
-
|
|
14541
|
-
|
|
14542
|
-
|
|
14543
|
-
|
|
14544
|
-
|
|
14545
|
-
|
|
14546
|
-
|
|
14547
|
-
|
|
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
|
+
}
|
|
14548
16089
|
this.output = {
|
|
14549
16090
|
pts: this.input.pts,
|
|
14550
16091
|
validTris
|
|
14551
16092
|
};
|
|
14552
16093
|
this.stats = {
|
|
14553
|
-
candidateTriangles: allTriangles.length,
|
|
14554
16094
|
validTriangles: validTris.length
|
|
14555
16095
|
};
|
|
14556
16096
|
this.solved = true;
|
|
@@ -14608,7 +16148,10 @@ var ConvexRegionsSolver = class extends BasePipelineSolver {
|
|
|
14608
16148
|
vias: instance.inputProblem.vias,
|
|
14609
16149
|
rects: instance.inputProblem.rects,
|
|
14610
16150
|
polygons: instance.inputProblem.polygons,
|
|
14611
|
-
clearance: instance.inputProblem.clearance
|
|
16151
|
+
clearance: instance.inputProblem.clearance,
|
|
16152
|
+
useConstrainedDelaunay: instance.inputProblem.useConstrainedDelaunay,
|
|
16153
|
+
constraintEdges: generated.constraintEdges,
|
|
16154
|
+
hadCrossings: generated.hadCrossings
|
|
14612
16155
|
}
|
|
14613
16156
|
];
|
|
14614
16157
|
}),
|
|
@@ -14814,8 +16357,8 @@ function createPortsAlongEdge(edge, portPitch = 0.4) {
|
|
|
14814
16357
|
|
|
14815
16358
|
// lib/ViaGraphSolver/via-graph-generator/generateConvexViaTopologyRegions.ts
|
|
14816
16359
|
var DEFAULT_PORT_PITCH2 = 0.4;
|
|
14817
|
-
var DEFAULT_TILE_WIDTH =
|
|
14818
|
-
var DEFAULT_TILE_HEIGHT = 4.
|
|
16360
|
+
var DEFAULT_TILE_WIDTH = 3.727;
|
|
16361
|
+
var DEFAULT_TILE_HEIGHT = 4.03;
|
|
14819
16362
|
var DEFAULT_CLEARANCE = 0.1;
|
|
14820
16363
|
function deduplicateConsecutivePoints(points, tolerance = 1e-3) {
|
|
14821
16364
|
if (points.length <= 1) return points;
|