robust-predicates 3.0.0 → 3.0.2
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/README.md +1 -1
- package/esm/insphere.js +13 -22
- package/esm/orient2d.js +0 -2
- package/index.d.ts +49 -0
- package/package.json +9 -10
- package/umd/incircle.js +2 -4
- package/umd/incircle.min.js +1 -1
- package/umd/insphere.js +15 -26
- package/umd/insphere.min.js +1 -1
- package/umd/orient2d.js +2 -6
- package/umd/orient2d.min.js +1 -1
- package/umd/orient3d.js +2 -4
- package/umd/orient3d.min.js +1 -1
- package/umd/predicates.js +193 -206
- package/umd/predicates.min.js +1 -1
package/umd/predicates.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {}));
|
|
5
|
-
}(this, (function (exports) { 'use strict';
|
|
5
|
+
})(this, (function (exports) { 'use strict';
|
|
6
6
|
|
|
7
7
|
const epsilon = 1.1102230246251565e-16;
|
|
8
8
|
const splitter = 134217729;
|
|
@@ -151,7 +151,7 @@ const B = vec(4);
|
|
|
151
151
|
const C1 = vec(8);
|
|
152
152
|
const C2 = vec(12);
|
|
153
153
|
const D = vec(16);
|
|
154
|
-
const u = vec(4);
|
|
154
|
+
const u$2 = vec(4);
|
|
155
155
|
|
|
156
156
|
function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
|
|
157
157
|
let acxtail, acytail, bcxtail, bcytail;
|
|
@@ -233,18 +233,18 @@ function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
|
|
|
233
233
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
234
234
|
_i = s0 - t0;
|
|
235
235
|
bvirt = s0 - _i;
|
|
236
|
-
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
236
|
+
u$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
237
237
|
_j = s1 + _i;
|
|
238
238
|
bvirt = _j - s1;
|
|
239
239
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
240
240
|
_i = _0 - t1;
|
|
241
241
|
bvirt = _0 - _i;
|
|
242
|
-
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
242
|
+
u$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
243
243
|
u3 = _j + _i;
|
|
244
244
|
bvirt = u3 - _j;
|
|
245
|
-
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
246
|
-
u[3] = u3;
|
|
247
|
-
const C1len = sum(4, B, 4, u, C1);
|
|
245
|
+
u$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
246
|
+
u$2[3] = u3;
|
|
247
|
+
const C1len = sum(4, B, 4, u$2, C1);
|
|
248
248
|
|
|
249
249
|
s1 = acx * bcytail;
|
|
250
250
|
c = splitter * acx;
|
|
@@ -264,18 +264,18 @@ function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
|
|
|
264
264
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
265
265
|
_i = s0 - t0;
|
|
266
266
|
bvirt = s0 - _i;
|
|
267
|
-
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
267
|
+
u$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
268
268
|
_j = s1 + _i;
|
|
269
269
|
bvirt = _j - s1;
|
|
270
270
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
271
271
|
_i = _0 - t1;
|
|
272
272
|
bvirt = _0 - _i;
|
|
273
|
-
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
273
|
+
u$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
274
274
|
u3 = _j + _i;
|
|
275
275
|
bvirt = u3 - _j;
|
|
276
|
-
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
277
|
-
u[3] = u3;
|
|
278
|
-
const C2len = sum(C1len, C1, 4, u, C2);
|
|
276
|
+
u$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
277
|
+
u$2[3] = u3;
|
|
278
|
+
const C2len = sum(C1len, C1, 4, u$2, C2);
|
|
279
279
|
|
|
280
280
|
s1 = acxtail * bcytail;
|
|
281
281
|
c = splitter * acxtail;
|
|
@@ -295,18 +295,18 @@ function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
|
|
|
295
295
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
296
296
|
_i = s0 - t0;
|
|
297
297
|
bvirt = s0 - _i;
|
|
298
|
-
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
298
|
+
u$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
299
299
|
_j = s1 + _i;
|
|
300
300
|
bvirt = _j - s1;
|
|
301
301
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
302
302
|
_i = _0 - t1;
|
|
303
303
|
bvirt = _0 - _i;
|
|
304
|
-
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
304
|
+
u$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
305
305
|
u3 = _j + _i;
|
|
306
306
|
bvirt = u3 - _j;
|
|
307
|
-
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
308
|
-
u[3] = u3;
|
|
309
|
-
const Dlen = sum(C2len, C2, 4, u, D);
|
|
307
|
+
u$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
308
|
+
u$2[3] = u3;
|
|
309
|
+
const Dlen = sum(C2len, C2, 4, u$2, D);
|
|
310
310
|
|
|
311
311
|
return D[Dlen - 1];
|
|
312
312
|
}
|
|
@@ -316,8 +316,6 @@ function orient2d(ax, ay, bx, by, cx, cy) {
|
|
|
316
316
|
const detright = (ax - cx) * (by - cy);
|
|
317
317
|
const det = detleft - detright;
|
|
318
318
|
|
|
319
|
-
if (detleft === 0 || detright === 0 || (detleft > 0) !== (detright > 0)) return det;
|
|
320
|
-
|
|
321
319
|
const detsum = Math.abs(detleft + detright);
|
|
322
320
|
if (Math.abs(det) >= ccwerrboundA * detsum) return det;
|
|
323
321
|
|
|
@@ -332,31 +330,31 @@ const o3derrboundA = (7 + 56 * epsilon) * epsilon;
|
|
|
332
330
|
const o3derrboundB = (3 + 28 * epsilon) * epsilon;
|
|
333
331
|
const o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;
|
|
334
332
|
|
|
335
|
-
const bc = vec(4);
|
|
336
|
-
const ca = vec(4);
|
|
337
|
-
const ab = vec(4);
|
|
333
|
+
const bc$2 = vec(4);
|
|
334
|
+
const ca$1 = vec(4);
|
|
335
|
+
const ab$2 = vec(4);
|
|
338
336
|
const at_b = vec(4);
|
|
339
337
|
const at_c = vec(4);
|
|
340
338
|
const bt_c = vec(4);
|
|
341
339
|
const bt_a = vec(4);
|
|
342
340
|
const ct_a = vec(4);
|
|
343
341
|
const ct_b = vec(4);
|
|
344
|
-
const bct = vec(8);
|
|
345
|
-
const cat = vec(8);
|
|
346
|
-
const abt = vec(8);
|
|
342
|
+
const bct$1 = vec(8);
|
|
343
|
+
const cat$1 = vec(8);
|
|
344
|
+
const abt$1 = vec(8);
|
|
347
345
|
const u$1 = vec(4);
|
|
348
346
|
|
|
349
|
-
const _8 = vec(8);
|
|
350
|
-
const _8b = vec(8);
|
|
351
|
-
const _16 = vec(8);
|
|
347
|
+
const _8$2 = vec(8);
|
|
348
|
+
const _8b$1 = vec(8);
|
|
349
|
+
const _16$2 = vec(8);
|
|
352
350
|
const _12 = vec(12);
|
|
353
351
|
|
|
354
|
-
let fin = vec(192);
|
|
355
|
-
let fin2 = vec(192);
|
|
352
|
+
let fin$2 = vec(192);
|
|
353
|
+
let fin2$1 = vec(192);
|
|
356
354
|
|
|
357
|
-
function finadd(finlen, alen, a) {
|
|
358
|
-
finlen = sum(finlen, fin, alen, a, fin2);
|
|
359
|
-
const tmp = fin; fin = fin2; fin2 = tmp;
|
|
355
|
+
function finadd$1(finlen, alen, a) {
|
|
356
|
+
finlen = sum(finlen, fin$2, alen, a, fin2$1);
|
|
357
|
+
const tmp = fin$2; fin$2 = fin2$1; fin2$1 = tmp;
|
|
360
358
|
return finlen;
|
|
361
359
|
}
|
|
362
360
|
|
|
@@ -504,7 +502,7 @@ function tailadd(finlen, a, b, k, z) {
|
|
|
504
502
|
u3 = _j + _k;
|
|
505
503
|
u$1[2] = _k - (u3 - _j);
|
|
506
504
|
u$1[3] = u3;
|
|
507
|
-
finlen = finadd(finlen, 4, u$1);
|
|
505
|
+
finlen = finadd$1(finlen, 4, u$1);
|
|
508
506
|
if (z !== 0) {
|
|
509
507
|
c = splitter * z;
|
|
510
508
|
bhi = c - (c - z);
|
|
@@ -525,7 +523,7 @@ function tailadd(finlen, a, b, k, z) {
|
|
|
525
523
|
u3 = _j + _k;
|
|
526
524
|
u$1[2] = _k - (u3 - _j);
|
|
527
525
|
u$1[3] = u3;
|
|
528
|
-
finlen = finadd(finlen, 4, u$1);
|
|
526
|
+
finlen = finadd$1(finlen, 4, u$1);
|
|
529
527
|
}
|
|
530
528
|
return finlen;
|
|
531
529
|
}
|
|
@@ -565,17 +563,17 @@ function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent
|
|
|
565
563
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
566
564
|
_i = s0 - t0;
|
|
567
565
|
bvirt = s0 - _i;
|
|
568
|
-
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
566
|
+
bc$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
569
567
|
_j = s1 + _i;
|
|
570
568
|
bvirt = _j - s1;
|
|
571
569
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
572
570
|
_i = _0 - t1;
|
|
573
571
|
bvirt = _0 - _i;
|
|
574
|
-
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
572
|
+
bc$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
575
573
|
u3 = _j + _i;
|
|
576
574
|
bvirt = u3 - _j;
|
|
577
|
-
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
578
|
-
bc[3] = u3;
|
|
575
|
+
bc$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
576
|
+
bc$2[3] = u3;
|
|
579
577
|
s1 = cdx * ady;
|
|
580
578
|
c = splitter * cdx;
|
|
581
579
|
ahi = c - (c - cdx);
|
|
@@ -594,17 +592,17 @@ function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent
|
|
|
594
592
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
595
593
|
_i = s0 - t0;
|
|
596
594
|
bvirt = s0 - _i;
|
|
597
|
-
ca[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
595
|
+
ca$1[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
598
596
|
_j = s1 + _i;
|
|
599
597
|
bvirt = _j - s1;
|
|
600
598
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
601
599
|
_i = _0 - t1;
|
|
602
600
|
bvirt = _0 - _i;
|
|
603
|
-
ca[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
601
|
+
ca$1[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
604
602
|
u3 = _j + _i;
|
|
605
603
|
bvirt = u3 - _j;
|
|
606
|
-
ca[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
607
|
-
ca[3] = u3;
|
|
604
|
+
ca$1[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
605
|
+
ca$1[3] = u3;
|
|
608
606
|
s1 = adx * bdy;
|
|
609
607
|
c = splitter * adx;
|
|
610
608
|
ahi = c - (c - adx);
|
|
@@ -623,25 +621,25 @@ function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent
|
|
|
623
621
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
624
622
|
_i = s0 - t0;
|
|
625
623
|
bvirt = s0 - _i;
|
|
626
|
-
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
624
|
+
ab$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
627
625
|
_j = s1 + _i;
|
|
628
626
|
bvirt = _j - s1;
|
|
629
627
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
630
628
|
_i = _0 - t1;
|
|
631
629
|
bvirt = _0 - _i;
|
|
632
|
-
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
630
|
+
ab$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
633
631
|
u3 = _j + _i;
|
|
634
632
|
bvirt = u3 - _j;
|
|
635
|
-
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
636
|
-
ab[3] = u3;
|
|
633
|
+
ab$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
634
|
+
ab$2[3] = u3;
|
|
637
635
|
|
|
638
636
|
finlen = sum(
|
|
639
637
|
sum(
|
|
640
|
-
scale(4, bc, adz, _8), _8,
|
|
641
|
-
scale(4, ca, bdz, _8b), _8b, _16), _16,
|
|
642
|
-
scale(4, ab, cdz, _8), _8, fin);
|
|
638
|
+
scale(4, bc$2, adz, _8$2), _8$2,
|
|
639
|
+
scale(4, ca$1, bdz, _8b$1), _8b$1, _16$2), _16$2,
|
|
640
|
+
scale(4, ab$2, cdz, _8$2), _8$2, fin$2);
|
|
643
641
|
|
|
644
|
-
let det = estimate(finlen, fin);
|
|
642
|
+
let det = estimate(finlen, fin$2);
|
|
645
643
|
let errbound = o3derrboundB * permanent;
|
|
646
644
|
if (det >= errbound || -det >= errbound) {
|
|
647
645
|
return det;
|
|
@@ -685,26 +683,26 @@ function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent
|
|
|
685
683
|
const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);
|
|
686
684
|
const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);
|
|
687
685
|
|
|
688
|
-
const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);
|
|
689
|
-
finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);
|
|
686
|
+
const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct$1);
|
|
687
|
+
finlen = finadd$1(finlen, scale(bctlen, bct$1, adz, _16$2), _16$2);
|
|
690
688
|
|
|
691
|
-
const catlen = sum(ct_len, ct_a, at_len, at_c, cat);
|
|
692
|
-
finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);
|
|
689
|
+
const catlen = sum(ct_len, ct_a, at_len, at_c, cat$1);
|
|
690
|
+
finlen = finadd$1(finlen, scale(catlen, cat$1, bdz, _16$2), _16$2);
|
|
693
691
|
|
|
694
|
-
const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);
|
|
695
|
-
finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);
|
|
692
|
+
const abtlen = sum(at_len, at_b, bt_len, bt_a, abt$1);
|
|
693
|
+
finlen = finadd$1(finlen, scale(abtlen, abt$1, cdz, _16$2), _16$2);
|
|
696
694
|
|
|
697
695
|
if (adztail !== 0) {
|
|
698
|
-
finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);
|
|
699
|
-
finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);
|
|
696
|
+
finlen = finadd$1(finlen, scale(4, bc$2, adztail, _12), _12);
|
|
697
|
+
finlen = finadd$1(finlen, scale(bctlen, bct$1, adztail, _16$2), _16$2);
|
|
700
698
|
}
|
|
701
699
|
if (bdztail !== 0) {
|
|
702
|
-
finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);
|
|
703
|
-
finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);
|
|
700
|
+
finlen = finadd$1(finlen, scale(4, ca$1, bdztail, _12), _12);
|
|
701
|
+
finlen = finadd$1(finlen, scale(catlen, cat$1, bdztail, _16$2), _16$2);
|
|
704
702
|
}
|
|
705
703
|
if (cdztail !== 0) {
|
|
706
|
-
finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);
|
|
707
|
-
finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);
|
|
704
|
+
finlen = finadd$1(finlen, scale(4, ab$2, cdztail, _12), _12);
|
|
705
|
+
finlen = finadd$1(finlen, scale(abtlen, abt$1, cdztail, _16$2), _16$2);
|
|
708
706
|
}
|
|
709
707
|
|
|
710
708
|
if (adxtail !== 0) {
|
|
@@ -732,7 +730,7 @@ function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent
|
|
|
732
730
|
}
|
|
733
731
|
}
|
|
734
732
|
|
|
735
|
-
return fin[finlen - 1];
|
|
733
|
+
return fin$2[finlen - 1];
|
|
736
734
|
}
|
|
737
735
|
|
|
738
736
|
function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {
|
|
@@ -794,12 +792,12 @@ const iccerrboundB = (4 + 48 * epsilon) * epsilon;
|
|
|
794
792
|
const iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;
|
|
795
793
|
|
|
796
794
|
const bc$1 = vec(4);
|
|
797
|
-
const ca
|
|
795
|
+
const ca = vec(4);
|
|
798
796
|
const ab$1 = vec(4);
|
|
799
797
|
const aa = vec(4);
|
|
800
798
|
const bb = vec(4);
|
|
801
799
|
const cc = vec(4);
|
|
802
|
-
const u
|
|
800
|
+
const u = vec(4);
|
|
803
801
|
const v = vec(4);
|
|
804
802
|
const axtbc = vec(8);
|
|
805
803
|
const aytbc = vec(8);
|
|
@@ -807,9 +805,9 @@ const bxtca = vec(8);
|
|
|
807
805
|
const bytca = vec(8);
|
|
808
806
|
const cxtab = vec(8);
|
|
809
807
|
const cytab = vec(8);
|
|
810
|
-
const abt
|
|
811
|
-
const bct
|
|
812
|
-
const cat
|
|
808
|
+
const abt = vec(8);
|
|
809
|
+
const bct = vec(8);
|
|
810
|
+
const cat = vec(8);
|
|
813
811
|
const abtt = vec(4);
|
|
814
812
|
const bctt = vec(4);
|
|
815
813
|
const catt = vec(4);
|
|
@@ -820,15 +818,15 @@ const _16b = vec(16);
|
|
|
820
818
|
const _16c = vec(16);
|
|
821
819
|
const _32 = vec(32);
|
|
822
820
|
const _32b = vec(32);
|
|
823
|
-
const _48 = vec(48);
|
|
821
|
+
const _48$1 = vec(48);
|
|
824
822
|
const _64 = vec(64);
|
|
825
823
|
|
|
826
824
|
let fin$1 = vec(1152);
|
|
827
|
-
let fin2
|
|
825
|
+
let fin2 = vec(1152);
|
|
828
826
|
|
|
829
|
-
function finadd
|
|
830
|
-
finlen = sum(finlen, fin$1, a, alen, fin2
|
|
831
|
-
const tmp = fin$1; fin$1 = fin2
|
|
827
|
+
function finadd(finlen, a, alen) {
|
|
828
|
+
finlen = sum(finlen, fin$1, a, alen, fin2);
|
|
829
|
+
const tmp = fin$1; fin$1 = fin2; fin2 = tmp;
|
|
832
830
|
return finlen;
|
|
833
831
|
}
|
|
834
832
|
|
|
@@ -896,17 +894,17 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
896
894
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
897
895
|
_i = s0 - t0;
|
|
898
896
|
bvirt = s0 - _i;
|
|
899
|
-
ca
|
|
897
|
+
ca[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
900
898
|
_j = s1 + _i;
|
|
901
899
|
bvirt = _j - s1;
|
|
902
900
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
903
901
|
_i = _0 - t1;
|
|
904
902
|
bvirt = _0 - _i;
|
|
905
|
-
ca
|
|
903
|
+
ca[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
906
904
|
u3 = _j + _i;
|
|
907
905
|
bvirt = u3 - _j;
|
|
908
|
-
ca
|
|
909
|
-
ca
|
|
906
|
+
ca[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
907
|
+
ca[3] = u3;
|
|
910
908
|
s1 = adx * bdy;
|
|
911
909
|
c = splitter * adx;
|
|
912
910
|
ahi = c - (c - adx);
|
|
@@ -943,8 +941,8 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
943
941
|
scale(scale(4, bc$1, adx, _8$1), _8$1, adx, _16$1), _16$1,
|
|
944
942
|
scale(scale(4, bc$1, ady, _8$1), _8$1, ady, _16b), _16b, _32), _32,
|
|
945
943
|
sum(
|
|
946
|
-
scale(scale(4, ca
|
|
947
|
-
scale(scale(4, ca
|
|
944
|
+
scale(scale(4, ca, bdx, _8$1), _8$1, bdx, _16$1), _16$1,
|
|
945
|
+
scale(scale(4, ca, bdy, _8$1), _8$1, bdy, _16b), _16b, _32b), _32b, _64), _64,
|
|
948
946
|
sum(
|
|
949
947
|
scale(scale(4, ab$1, cdx, _8$1), _8$1, cdx, _16$1), _16$1,
|
|
950
948
|
scale(scale(4, ab$1, cdy, _8$1), _8$1, cdy, _16b), _16b, _32), _32, fin$1);
|
|
@@ -1061,45 +1059,45 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1061
1059
|
|
|
1062
1060
|
if (adxtail !== 0) {
|
|
1063
1061
|
axtbclen = scale(4, bc$1, adxtail, axtbc);
|
|
1064
|
-
finlen = finadd
|
|
1062
|
+
finlen = finadd(finlen, sum_three(
|
|
1065
1063
|
scale(axtbclen, axtbc, 2 * adx, _16$1), _16$1,
|
|
1066
1064
|
scale(scale(4, cc, adxtail, _8$1), _8$1, bdy, _16b), _16b,
|
|
1067
|
-
scale(scale(4, bb, adxtail, _8$1), _8$1, -cdy, _16c), _16c, _32, _48), _48);
|
|
1065
|
+
scale(scale(4, bb, adxtail, _8$1), _8$1, -cdy, _16c), _16c, _32, _48$1), _48$1);
|
|
1068
1066
|
}
|
|
1069
1067
|
if (adytail !== 0) {
|
|
1070
1068
|
aytbclen = scale(4, bc$1, adytail, aytbc);
|
|
1071
|
-
finlen = finadd
|
|
1069
|
+
finlen = finadd(finlen, sum_three(
|
|
1072
1070
|
scale(aytbclen, aytbc, 2 * ady, _16$1), _16$1,
|
|
1073
1071
|
scale(scale(4, bb, adytail, _8$1), _8$1, cdx, _16b), _16b,
|
|
1074
|
-
scale(scale(4, cc, adytail, _8$1), _8$1, -bdx, _16c), _16c, _32, _48), _48);
|
|
1072
|
+
scale(scale(4, cc, adytail, _8$1), _8$1, -bdx, _16c), _16c, _32, _48$1), _48$1);
|
|
1075
1073
|
}
|
|
1076
1074
|
if (bdxtail !== 0) {
|
|
1077
|
-
bxtcalen = scale(4, ca
|
|
1078
|
-
finlen = finadd
|
|
1075
|
+
bxtcalen = scale(4, ca, bdxtail, bxtca);
|
|
1076
|
+
finlen = finadd(finlen, sum_three(
|
|
1079
1077
|
scale(bxtcalen, bxtca, 2 * bdx, _16$1), _16$1,
|
|
1080
1078
|
scale(scale(4, aa, bdxtail, _8$1), _8$1, cdy, _16b), _16b,
|
|
1081
|
-
scale(scale(4, cc, bdxtail, _8$1), _8$1, -ady, _16c), _16c, _32, _48), _48);
|
|
1079
|
+
scale(scale(4, cc, bdxtail, _8$1), _8$1, -ady, _16c), _16c, _32, _48$1), _48$1);
|
|
1082
1080
|
}
|
|
1083
1081
|
if (bdytail !== 0) {
|
|
1084
|
-
bytcalen = scale(4, ca
|
|
1085
|
-
finlen = finadd
|
|
1082
|
+
bytcalen = scale(4, ca, bdytail, bytca);
|
|
1083
|
+
finlen = finadd(finlen, sum_three(
|
|
1086
1084
|
scale(bytcalen, bytca, 2 * bdy, _16$1), _16$1,
|
|
1087
1085
|
scale(scale(4, cc, bdytail, _8$1), _8$1, adx, _16b), _16b,
|
|
1088
|
-
scale(scale(4, aa, bdytail, _8$1), _8$1, -cdx, _16c), _16c, _32, _48), _48);
|
|
1086
|
+
scale(scale(4, aa, bdytail, _8$1), _8$1, -cdx, _16c), _16c, _32, _48$1), _48$1);
|
|
1089
1087
|
}
|
|
1090
1088
|
if (cdxtail !== 0) {
|
|
1091
1089
|
cxtablen = scale(4, ab$1, cdxtail, cxtab);
|
|
1092
|
-
finlen = finadd
|
|
1090
|
+
finlen = finadd(finlen, sum_three(
|
|
1093
1091
|
scale(cxtablen, cxtab, 2 * cdx, _16$1), _16$1,
|
|
1094
1092
|
scale(scale(4, bb, cdxtail, _8$1), _8$1, ady, _16b), _16b,
|
|
1095
|
-
scale(scale(4, aa, cdxtail, _8$1), _8$1, -bdy, _16c), _16c, _32, _48), _48);
|
|
1093
|
+
scale(scale(4, aa, cdxtail, _8$1), _8$1, -bdy, _16c), _16c, _32, _48$1), _48$1);
|
|
1096
1094
|
}
|
|
1097
1095
|
if (cdytail !== 0) {
|
|
1098
1096
|
cytablen = scale(4, ab$1, cdytail, cytab);
|
|
1099
|
-
finlen = finadd
|
|
1097
|
+
finlen = finadd(finlen, sum_three(
|
|
1100
1098
|
scale(cytablen, cytab, 2 * cdy, _16$1), _16$1,
|
|
1101
1099
|
scale(scale(4, aa, cdytail, _8$1), _8$1, bdx, _16b), _16b,
|
|
1102
|
-
scale(scale(4, bb, cdytail, _8$1), _8$1, -adx, _16c), _16c, _32, _48), _48);
|
|
1100
|
+
scale(scale(4, bb, cdytail, _8$1), _8$1, -adx, _16c), _16c, _32, _48$1), _48$1);
|
|
1103
1101
|
}
|
|
1104
1102
|
|
|
1105
1103
|
if (adxtail !== 0 || adytail !== 0) {
|
|
@@ -1122,17 +1120,17 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1122
1120
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
1123
1121
|
_i = s0 + t0;
|
|
1124
1122
|
bvirt = _i - s0;
|
|
1125
|
-
u
|
|
1123
|
+
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
1126
1124
|
_j = s1 + _i;
|
|
1127
1125
|
bvirt = _j - s1;
|
|
1128
1126
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
1129
1127
|
_i = _0 + t1;
|
|
1130
1128
|
bvirt = _i - _0;
|
|
1131
|
-
u
|
|
1129
|
+
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
1132
1130
|
u3 = _j + _i;
|
|
1133
1131
|
bvirt = u3 - _j;
|
|
1134
|
-
u
|
|
1135
|
-
u
|
|
1132
|
+
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
1133
|
+
u[3] = u3;
|
|
1136
1134
|
s1 = cdxtail * -bdy;
|
|
1137
1135
|
c = splitter * cdxtail;
|
|
1138
1136
|
ahi = c - (c - cdxtail);
|
|
@@ -1162,7 +1160,7 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1162
1160
|
bvirt = u3 - _j;
|
|
1163
1161
|
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
1164
1162
|
v[3] = u3;
|
|
1165
|
-
bctlen = sum(4, u
|
|
1163
|
+
bctlen = sum(4, u, 4, v, bct);
|
|
1166
1164
|
s1 = bdxtail * cdytail;
|
|
1167
1165
|
c = splitter * bdxtail;
|
|
1168
1166
|
ahi = c - (c - bdxtail);
|
|
@@ -1194,38 +1192,38 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1194
1192
|
bctt[3] = u3;
|
|
1195
1193
|
bcttlen = 4;
|
|
1196
1194
|
} else {
|
|
1197
|
-
bct
|
|
1195
|
+
bct[0] = 0;
|
|
1198
1196
|
bctlen = 1;
|
|
1199
1197
|
bctt[0] = 0;
|
|
1200
1198
|
bcttlen = 1;
|
|
1201
1199
|
}
|
|
1202
1200
|
if (adxtail !== 0) {
|
|
1203
|
-
const len = scale(bctlen, bct
|
|
1204
|
-
finlen = finadd
|
|
1201
|
+
const len = scale(bctlen, bct, adxtail, _16c);
|
|
1202
|
+
finlen = finadd(finlen, sum(
|
|
1205
1203
|
scale(axtbclen, axtbc, adxtail, _16$1), _16$1,
|
|
1206
|
-
scale(len, _16c, 2 * adx, _32), _32, _48), _48);
|
|
1204
|
+
scale(len, _16c, 2 * adx, _32), _32, _48$1), _48$1);
|
|
1207
1205
|
|
|
1208
1206
|
const len2 = scale(bcttlen, bctt, adxtail, _8$1);
|
|
1209
|
-
finlen = finadd
|
|
1207
|
+
finlen = finadd(finlen, sum_three(
|
|
1210
1208
|
scale(len2, _8$1, 2 * adx, _16$1), _16$1,
|
|
1211
1209
|
scale(len2, _8$1, adxtail, _16b), _16b,
|
|
1212
1210
|
scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);
|
|
1213
1211
|
|
|
1214
1212
|
if (bdytail !== 0) {
|
|
1215
|
-
finlen = finadd
|
|
1213
|
+
finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8$1), _8$1, bdytail, _16$1), _16$1);
|
|
1216
1214
|
}
|
|
1217
1215
|
if (cdytail !== 0) {
|
|
1218
|
-
finlen = finadd
|
|
1216
|
+
finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8$1), _8$1, cdytail, _16$1), _16$1);
|
|
1219
1217
|
}
|
|
1220
1218
|
}
|
|
1221
1219
|
if (adytail !== 0) {
|
|
1222
|
-
const len = scale(bctlen, bct
|
|
1223
|
-
finlen = finadd
|
|
1220
|
+
const len = scale(bctlen, bct, adytail, _16c);
|
|
1221
|
+
finlen = finadd(finlen, sum(
|
|
1224
1222
|
scale(aytbclen, aytbc, adytail, _16$1), _16$1,
|
|
1225
|
-
scale(len, _16c, 2 * ady, _32), _32, _48), _48);
|
|
1223
|
+
scale(len, _16c, 2 * ady, _32), _32, _48$1), _48$1);
|
|
1226
1224
|
|
|
1227
1225
|
const len2 = scale(bcttlen, bctt, adytail, _8$1);
|
|
1228
|
-
finlen = finadd
|
|
1226
|
+
finlen = finadd(finlen, sum_three(
|
|
1229
1227
|
scale(len2, _8$1, 2 * ady, _16$1), _16$1,
|
|
1230
1228
|
scale(len2, _8$1, adytail, _16b), _16b,
|
|
1231
1229
|
scale(len, _16c, adytail, _32), _32, _32b, _64), _64);
|
|
@@ -1251,17 +1249,17 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1251
1249
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
1252
1250
|
_i = s0 + t0;
|
|
1253
1251
|
bvirt = _i - s0;
|
|
1254
|
-
u
|
|
1252
|
+
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
1255
1253
|
_j = s1 + _i;
|
|
1256
1254
|
bvirt = _j - s1;
|
|
1257
1255
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
1258
1256
|
_i = _0 + t1;
|
|
1259
1257
|
bvirt = _i - _0;
|
|
1260
|
-
u
|
|
1258
|
+
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
1261
1259
|
u3 = _j + _i;
|
|
1262
1260
|
bvirt = u3 - _j;
|
|
1263
|
-
u
|
|
1264
|
-
u
|
|
1261
|
+
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
1262
|
+
u[3] = u3;
|
|
1265
1263
|
n1 = -cdy;
|
|
1266
1264
|
n0 = -cdytail;
|
|
1267
1265
|
s1 = adxtail * n1;
|
|
@@ -1293,7 +1291,7 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1293
1291
|
bvirt = u3 - _j;
|
|
1294
1292
|
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
1295
1293
|
v[3] = u3;
|
|
1296
|
-
catlen = sum(4, u
|
|
1294
|
+
catlen = sum(4, u, 4, v, cat);
|
|
1297
1295
|
s1 = cdxtail * adytail;
|
|
1298
1296
|
c = splitter * cdxtail;
|
|
1299
1297
|
ahi = c - (c - cdxtail);
|
|
@@ -1325,38 +1323,38 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1325
1323
|
catt[3] = u3;
|
|
1326
1324
|
cattlen = 4;
|
|
1327
1325
|
} else {
|
|
1328
|
-
cat
|
|
1326
|
+
cat[0] = 0;
|
|
1329
1327
|
catlen = 1;
|
|
1330
1328
|
catt[0] = 0;
|
|
1331
1329
|
cattlen = 1;
|
|
1332
1330
|
}
|
|
1333
1331
|
if (bdxtail !== 0) {
|
|
1334
|
-
const len = scale(catlen, cat
|
|
1335
|
-
finlen = finadd
|
|
1332
|
+
const len = scale(catlen, cat, bdxtail, _16c);
|
|
1333
|
+
finlen = finadd(finlen, sum(
|
|
1336
1334
|
scale(bxtcalen, bxtca, bdxtail, _16$1), _16$1,
|
|
1337
|
-
scale(len, _16c, 2 * bdx, _32), _32, _48), _48);
|
|
1335
|
+
scale(len, _16c, 2 * bdx, _32), _32, _48$1), _48$1);
|
|
1338
1336
|
|
|
1339
1337
|
const len2 = scale(cattlen, catt, bdxtail, _8$1);
|
|
1340
|
-
finlen = finadd
|
|
1338
|
+
finlen = finadd(finlen, sum_three(
|
|
1341
1339
|
scale(len2, _8$1, 2 * bdx, _16$1), _16$1,
|
|
1342
1340
|
scale(len2, _8$1, bdxtail, _16b), _16b,
|
|
1343
1341
|
scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);
|
|
1344
1342
|
|
|
1345
1343
|
if (cdytail !== 0) {
|
|
1346
|
-
finlen = finadd
|
|
1344
|
+
finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8$1), _8$1, cdytail, _16$1), _16$1);
|
|
1347
1345
|
}
|
|
1348
1346
|
if (adytail !== 0) {
|
|
1349
|
-
finlen = finadd
|
|
1347
|
+
finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8$1), _8$1, adytail, _16$1), _16$1);
|
|
1350
1348
|
}
|
|
1351
1349
|
}
|
|
1352
1350
|
if (bdytail !== 0) {
|
|
1353
|
-
const len = scale(catlen, cat
|
|
1354
|
-
finlen = finadd
|
|
1351
|
+
const len = scale(catlen, cat, bdytail, _16c);
|
|
1352
|
+
finlen = finadd(finlen, sum(
|
|
1355
1353
|
scale(bytcalen, bytca, bdytail, _16$1), _16$1,
|
|
1356
|
-
scale(len, _16c, 2 * bdy, _32), _32, _48), _48);
|
|
1354
|
+
scale(len, _16c, 2 * bdy, _32), _32, _48$1), _48$1);
|
|
1357
1355
|
|
|
1358
1356
|
const len2 = scale(cattlen, catt, bdytail, _8$1);
|
|
1359
|
-
finlen = finadd
|
|
1357
|
+
finlen = finadd(finlen, sum_three(
|
|
1360
1358
|
scale(len2, _8$1, 2 * bdy, _16$1), _16$1,
|
|
1361
1359
|
scale(len2, _8$1, bdytail, _16b), _16b,
|
|
1362
1360
|
scale(len, _16c, bdytail, _32), _32, _32b, _64), _64);
|
|
@@ -1382,17 +1380,17 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1382
1380
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
1383
1381
|
_i = s0 + t0;
|
|
1384
1382
|
bvirt = _i - s0;
|
|
1385
|
-
u
|
|
1383
|
+
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
1386
1384
|
_j = s1 + _i;
|
|
1387
1385
|
bvirt = _j - s1;
|
|
1388
1386
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
1389
1387
|
_i = _0 + t1;
|
|
1390
1388
|
bvirt = _i - _0;
|
|
1391
|
-
u
|
|
1389
|
+
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
1392
1390
|
u3 = _j + _i;
|
|
1393
1391
|
bvirt = u3 - _j;
|
|
1394
|
-
u
|
|
1395
|
-
u
|
|
1392
|
+
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
1393
|
+
u[3] = u3;
|
|
1396
1394
|
n1 = -ady;
|
|
1397
1395
|
n0 = -adytail;
|
|
1398
1396
|
s1 = bdxtail * n1;
|
|
@@ -1424,7 +1422,7 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1424
1422
|
bvirt = u3 - _j;
|
|
1425
1423
|
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
1426
1424
|
v[3] = u3;
|
|
1427
|
-
abtlen = sum(4, u
|
|
1425
|
+
abtlen = sum(4, u, 4, v, abt);
|
|
1428
1426
|
s1 = adxtail * bdytail;
|
|
1429
1427
|
c = splitter * adxtail;
|
|
1430
1428
|
ahi = c - (c - adxtail);
|
|
@@ -1456,38 +1454,38 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
1456
1454
|
abtt[3] = u3;
|
|
1457
1455
|
abttlen = 4;
|
|
1458
1456
|
} else {
|
|
1459
|
-
abt
|
|
1457
|
+
abt[0] = 0;
|
|
1460
1458
|
abtlen = 1;
|
|
1461
1459
|
abtt[0] = 0;
|
|
1462
1460
|
abttlen = 1;
|
|
1463
1461
|
}
|
|
1464
1462
|
if (cdxtail !== 0) {
|
|
1465
|
-
const len = scale(abtlen, abt
|
|
1466
|
-
finlen = finadd
|
|
1463
|
+
const len = scale(abtlen, abt, cdxtail, _16c);
|
|
1464
|
+
finlen = finadd(finlen, sum(
|
|
1467
1465
|
scale(cxtablen, cxtab, cdxtail, _16$1), _16$1,
|
|
1468
|
-
scale(len, _16c, 2 * cdx, _32), _32, _48), _48);
|
|
1466
|
+
scale(len, _16c, 2 * cdx, _32), _32, _48$1), _48$1);
|
|
1469
1467
|
|
|
1470
1468
|
const len2 = scale(abttlen, abtt, cdxtail, _8$1);
|
|
1471
|
-
finlen = finadd
|
|
1469
|
+
finlen = finadd(finlen, sum_three(
|
|
1472
1470
|
scale(len2, _8$1, 2 * cdx, _16$1), _16$1,
|
|
1473
1471
|
scale(len2, _8$1, cdxtail, _16b), _16b,
|
|
1474
1472
|
scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);
|
|
1475
1473
|
|
|
1476
1474
|
if (adytail !== 0) {
|
|
1477
|
-
finlen = finadd
|
|
1475
|
+
finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8$1), _8$1, adytail, _16$1), _16$1);
|
|
1478
1476
|
}
|
|
1479
1477
|
if (bdytail !== 0) {
|
|
1480
|
-
finlen = finadd
|
|
1478
|
+
finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8$1), _8$1, bdytail, _16$1), _16$1);
|
|
1481
1479
|
}
|
|
1482
1480
|
}
|
|
1483
1481
|
if (cdytail !== 0) {
|
|
1484
|
-
const len = scale(abtlen, abt
|
|
1485
|
-
finlen = finadd
|
|
1482
|
+
const len = scale(abtlen, abt, cdytail, _16c);
|
|
1483
|
+
finlen = finadd(finlen, sum(
|
|
1486
1484
|
scale(cytablen, cytab, cdytail, _16$1), _16$1,
|
|
1487
|
-
scale(len, _16c, 2 * cdy, _32), _32, _48), _48);
|
|
1485
|
+
scale(len, _16c, 2 * cdy, _32), _32, _48$1), _48$1);
|
|
1488
1486
|
|
|
1489
1487
|
const len2 = scale(abttlen, abtt, cdytail, _8$1);
|
|
1490
|
-
finlen = finadd
|
|
1488
|
+
finlen = finadd(finlen, sum_three(
|
|
1491
1489
|
scale(len2, _8$1, 2 * cdy, _16$1), _16$1,
|
|
1492
1490
|
scale(len2, _8$1, cdytail, _16b), _16b,
|
|
1493
1491
|
scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);
|
|
@@ -1557,8 +1555,8 @@ const isperrboundA = (16 + 224 * epsilon) * epsilon;
|
|
|
1557
1555
|
const isperrboundB = (5 + 72 * epsilon) * epsilon;
|
|
1558
1556
|
const isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;
|
|
1559
1557
|
|
|
1560
|
-
const ab
|
|
1561
|
-
const bc
|
|
1558
|
+
const ab = vec(4);
|
|
1559
|
+
const bc = vec(4);
|
|
1562
1560
|
const cd = vec(4);
|
|
1563
1561
|
const de = vec(4);
|
|
1564
1562
|
const ea = vec(4);
|
|
@@ -1589,12 +1587,12 @@ const cddet = vec(2304);
|
|
|
1589
1587
|
const cdedet = vec(3456);
|
|
1590
1588
|
const deter = vec(5760);
|
|
1591
1589
|
|
|
1592
|
-
const _8
|
|
1593
|
-
const _8b
|
|
1590
|
+
const _8 = vec(8);
|
|
1591
|
+
const _8b = vec(8);
|
|
1594
1592
|
const _8c = vec(8);
|
|
1595
|
-
const _16
|
|
1593
|
+
const _16 = vec(16);
|
|
1596
1594
|
const _24 = vec(24);
|
|
1597
|
-
const _48
|
|
1595
|
+
const _48 = vec(48);
|
|
1598
1596
|
const _48b = vec(48);
|
|
1599
1597
|
const _96 = vec(96);
|
|
1600
1598
|
const _192 = vec(192);
|
|
@@ -1605,14 +1603,14 @@ const _768 = vec(768);
|
|
|
1605
1603
|
|
|
1606
1604
|
function sum_three_scale(a, b, c, az, bz, cz, out) {
|
|
1607
1605
|
return sum_three(
|
|
1608
|
-
scale(4, a, az, _8
|
|
1609
|
-
scale(4, b, bz, _8b
|
|
1610
|
-
scale(4, c, cz, _8c), _8c, _16
|
|
1606
|
+
scale(4, a, az, _8), _8,
|
|
1607
|
+
scale(4, b, bz, _8b), _8b,
|
|
1608
|
+
scale(4, c, cz, _8c), _8c, _16, out);
|
|
1611
1609
|
}
|
|
1612
1610
|
|
|
1613
1611
|
function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {
|
|
1614
1612
|
const len = sum(
|
|
1615
|
-
sum(alen, a, blen, b, _48
|
|
1613
|
+
sum(alen, a, blen, b, _48), _48,
|
|
1616
1614
|
negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);
|
|
1617
1615
|
|
|
1618
1616
|
return sum_three(
|
|
@@ -1642,17 +1640,17 @@ function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, e
|
|
|
1642
1640
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
1643
1641
|
_i = s0 - t0;
|
|
1644
1642
|
bvirt = s0 - _i;
|
|
1645
|
-
ab
|
|
1643
|
+
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
1646
1644
|
_j = s1 + _i;
|
|
1647
1645
|
bvirt = _j - s1;
|
|
1648
1646
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
1649
1647
|
_i = _0 - t1;
|
|
1650
1648
|
bvirt = _0 - _i;
|
|
1651
|
-
ab
|
|
1649
|
+
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
1652
1650
|
u3 = _j + _i;
|
|
1653
1651
|
bvirt = u3 - _j;
|
|
1654
|
-
ab
|
|
1655
|
-
ab
|
|
1652
|
+
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
1653
|
+
ab[3] = u3;
|
|
1656
1654
|
s1 = bx * cy;
|
|
1657
1655
|
c = splitter * bx;
|
|
1658
1656
|
ahi = c - (c - bx);
|
|
@@ -1671,17 +1669,17 @@ function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, e
|
|
|
1671
1669
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
1672
1670
|
_i = s0 - t0;
|
|
1673
1671
|
bvirt = s0 - _i;
|
|
1674
|
-
bc
|
|
1672
|
+
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
1675
1673
|
_j = s1 + _i;
|
|
1676
1674
|
bvirt = _j - s1;
|
|
1677
1675
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
1678
1676
|
_i = _0 - t1;
|
|
1679
1677
|
bvirt = _0 - _i;
|
|
1680
|
-
bc
|
|
1678
|
+
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
1681
1679
|
u3 = _j + _i;
|
|
1682
1680
|
bvirt = u3 - _j;
|
|
1683
|
-
bc
|
|
1684
|
-
bc
|
|
1681
|
+
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
1682
|
+
bc[3] = u3;
|
|
1685
1683
|
s1 = cx * dy;
|
|
1686
1684
|
c = splitter * cx;
|
|
1687
1685
|
ahi = c - (c - cx);
|
|
@@ -1915,13 +1913,13 @@ function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, e
|
|
|
1915
1913
|
eb[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
1916
1914
|
eb[3] = u3;
|
|
1917
1915
|
|
|
1918
|
-
const abclen = sum_three_scale(ab
|
|
1919
|
-
const bcdlen = sum_three_scale(bc
|
|
1916
|
+
const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);
|
|
1917
|
+
const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);
|
|
1920
1918
|
const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);
|
|
1921
1919
|
const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);
|
|
1922
|
-
const eablen = sum_three_scale(ea, ab
|
|
1923
|
-
const abdlen = sum_three_scale(ab
|
|
1924
|
-
const bcelen = sum_three_scale(bc
|
|
1920
|
+
const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);
|
|
1921
|
+
const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);
|
|
1922
|
+
const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);
|
|
1925
1923
|
const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);
|
|
1926
1924
|
const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);
|
|
1927
1925
|
const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);
|
|
@@ -1940,14 +1938,14 @@ function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, e
|
|
|
1940
1938
|
const xdet = vec(96);
|
|
1941
1939
|
const ydet = vec(96);
|
|
1942
1940
|
const zdet = vec(96);
|
|
1943
|
-
const fin
|
|
1941
|
+
const fin = vec(1152);
|
|
1944
1942
|
|
|
1945
1943
|
function liftadapt(a, b, c, az, bz, cz, x, y, z, out) {
|
|
1946
1944
|
const len = sum_three_scale(a, b, c, az, bz, cz, _24);
|
|
1947
1945
|
return sum_three(
|
|
1948
|
-
scale(scale(len, _24, x, _48
|
|
1949
|
-
scale(scale(len, _24, y, _48
|
|
1950
|
-
scale(scale(len, _24, z, _48
|
|
1946
|
+
scale(scale(len, _24, x, _48), _48, x, xdet), xdet,
|
|
1947
|
+
scale(scale(len, _24, y, _48), _48, y, ydet), ydet,
|
|
1948
|
+
scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);
|
|
1951
1949
|
}
|
|
1952
1950
|
|
|
1953
1951
|
function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {
|
|
@@ -1990,17 +1988,17 @@ function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, e
|
|
|
1990
1988
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
1991
1989
|
_i = s0 - t0;
|
|
1992
1990
|
bvirt = s0 - _i;
|
|
1993
|
-
ab
|
|
1991
|
+
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
1994
1992
|
_j = s1 + _i;
|
|
1995
1993
|
bvirt = _j - s1;
|
|
1996
1994
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
1997
1995
|
_i = _0 - t1;
|
|
1998
1996
|
bvirt = _0 - _i;
|
|
1999
|
-
ab
|
|
1997
|
+
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
2000
1998
|
ab3 = _j + _i;
|
|
2001
1999
|
bvirt = ab3 - _j;
|
|
2002
|
-
ab
|
|
2003
|
-
ab
|
|
2000
|
+
ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);
|
|
2001
|
+
ab[3] = ab3;
|
|
2004
2002
|
s1 = bex * cey;
|
|
2005
2003
|
c = splitter * bex;
|
|
2006
2004
|
ahi = c - (c - bex);
|
|
@@ -2019,17 +2017,17 @@ function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, e
|
|
|
2019
2017
|
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
2020
2018
|
_i = s0 - t0;
|
|
2021
2019
|
bvirt = s0 - _i;
|
|
2022
|
-
bc
|
|
2020
|
+
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
2023
2021
|
_j = s1 + _i;
|
|
2024
2022
|
bvirt = _j - s1;
|
|
2025
2023
|
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
2026
2024
|
_i = _0 - t1;
|
|
2027
2025
|
bvirt = _0 - _i;
|
|
2028
|
-
bc
|
|
2026
|
+
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
2029
2027
|
bc3 = _j + _i;
|
|
2030
2028
|
bvirt = bc3 - _j;
|
|
2031
|
-
bc
|
|
2032
|
-
bc
|
|
2029
|
+
bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);
|
|
2030
|
+
bc[3] = bc3;
|
|
2033
2031
|
s1 = cex * dey;
|
|
2034
2032
|
c = splitter * cex;
|
|
2035
2033
|
ahi = c - (c - cex);
|
|
@@ -2149,13 +2147,13 @@ function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, e
|
|
|
2149
2147
|
|
|
2150
2148
|
const finlen = sum(
|
|
2151
2149
|
sum(
|
|
2152
|
-
negate(liftadapt(bc
|
|
2150
|
+
negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,
|
|
2153
2151
|
liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,
|
|
2154
2152
|
sum(
|
|
2155
|
-
negate(liftadapt(da, ab
|
|
2156
|
-
liftadapt(ab
|
|
2153
|
+
negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,
|
|
2154
|
+
liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);
|
|
2157
2155
|
|
|
2158
|
-
let det = estimate(finlen, fin
|
|
2156
|
+
let det = estimate(finlen, fin);
|
|
2159
2157
|
let errbound = isperrboundB * permanent;
|
|
2160
2158
|
if (det >= errbound || -det >= errbound) {
|
|
2161
2159
|
return det;
|
|
@@ -2252,39 +2250,30 @@ function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
|
|
|
2252
2250
|
const dexbey = dex * bey;
|
|
2253
2251
|
const bd = bexdey - dexbey;
|
|
2254
2252
|
|
|
2255
|
-
const abc = aez * bc - bez * ac + cez * ab;
|
|
2256
|
-
const bcd = bez * cd - cez * bd + dez * bc;
|
|
2257
|
-
const cda = cez * da + dez * ac + aez * cd;
|
|
2258
|
-
const dab = dez * ab + aez * bd + bez * da;
|
|
2259
|
-
|
|
2260
2253
|
const alift = aex * aex + aey * aey + aez * aez;
|
|
2261
2254
|
const blift = bex * bex + bey * bey + bez * bez;
|
|
2262
2255
|
const clift = cex * cex + cey * cey + cez * cez;
|
|
2263
2256
|
const dlift = dex * dex + dey * dey + dez * dez;
|
|
2264
2257
|
|
|
2265
|
-
const det =
|
|
2258
|
+
const det =
|
|
2259
|
+
(clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab)) +
|
|
2260
|
+
(alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));
|
|
2266
2261
|
|
|
2267
2262
|
const aezplus = Math.abs(aez);
|
|
2268
2263
|
const bezplus = Math.abs(bez);
|
|
2269
2264
|
const cezplus = Math.abs(cez);
|
|
2270
2265
|
const dezplus = Math.abs(dez);
|
|
2271
|
-
const aexbeyplus = Math.abs(aexbey);
|
|
2272
|
-
const
|
|
2273
|
-
const
|
|
2274
|
-
const
|
|
2275
|
-
const
|
|
2276
|
-
const
|
|
2277
|
-
const dexaeyplus = Math.abs(dexaey);
|
|
2278
|
-
const aexdeyplus = Math.abs(aexdey);
|
|
2279
|
-
const aexceyplus = Math.abs(aexcey);
|
|
2280
|
-
const cexaeyplus = Math.abs(cexaey);
|
|
2281
|
-
const bexdeyplus = Math.abs(bexdey);
|
|
2282
|
-
const dexbeyplus = Math.abs(dexbey);
|
|
2266
|
+
const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);
|
|
2267
|
+
const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);
|
|
2268
|
+
const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);
|
|
2269
|
+
const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);
|
|
2270
|
+
const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);
|
|
2271
|
+
const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);
|
|
2283
2272
|
const permanent =
|
|
2284
|
-
(
|
|
2285
|
-
(
|
|
2286
|
-
(
|
|
2287
|
-
(
|
|
2273
|
+
(cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift +
|
|
2274
|
+
(dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift +
|
|
2275
|
+
(aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift +
|
|
2276
|
+
(bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;
|
|
2288
2277
|
|
|
2289
2278
|
const errbound = isperrboundA * permanent;
|
|
2290
2279
|
if (det > errbound || -det > errbound) {
|
|
@@ -2336,6 +2325,4 @@ exports.orient2dfast = orient2dfast;
|
|
|
2336
2325
|
exports.orient3d = orient3d;
|
|
2337
2326
|
exports.orient3dfast = orient3dfast;
|
|
2338
2327
|
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
})));
|
|
2328
|
+
}));
|