config redirect

This commit is contained in:
Nuno Coração
2023-01-29 22:30:24 +00:00
parent 17557c7d73
commit 5fb4bd8083
9905 changed files with 1258996 additions and 36355 deletions

24
node_modules/robust-predicates/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <http://unlicense.org>

82
node_modules/robust-predicates/README.md generated vendored Normal file
View File

@@ -0,0 +1,82 @@
# robust-predicates
Fast robust predicates for computational geometry in JavaScript. Provides reliable 2D and 3D point orientation tests (`orient2d`, `orient3d`, `incircle`, `insphere`) that are not susceptible to floating point errors (without sacrificing performance). A modern port of [Jonathan R Shewchuk's C code](https://www.cs.cmu.edu/~quake/robust.html), an industry standard since 1996.
<a href="https://observablehq.com/@mourner/non-robust-arithmetic-as-art"><img width="600" height="200" src="predicates.png" /></a>
_Figure: non-robust vs robust `orient2d` test for points within a tiny range (2<sup>-42</sup>)._
[![Build Status](https://travis-ci.com/mourner/robust-predicates.svg?branch=master)](https://travis-ci.com/mourner/robust-predicates)
[![Simply Awesome](https://img.shields.io/badge/simply-awesome-brightgreen.svg)](https://github.com/mourner/projects)
[![Browser Build](https://badgen.net/bundlephobia/minzip/robust-predicates)](https://unpkg.com/robust-predicates)
## [Demo](https://observablehq.com/@mourner/non-robust-arithmetic-as-art)
## API
Note: unlike J. Shewchuk's original code, all the functions in this library assume `y` axis is oriented _downwards_ &darr;, so the semantics are different.
### `orient2d(ax,ay, bx,by, cx,cy)`
- Returns a *positive* value if the points `a`, `b`, and `c` occur in _counterclockwise_ order (`c` lies to the left of the directed line defined by points `a` and `b`).
- Returns a *negative* value if they occur in _clockwise_ order (`c` lies to the right of the directed line `ab`).
- Returns *zero* if they are _collinear_.
The result is also an approximation of twice the signed area of the triangle defined by the three points.
### `incircle(ax,ay, bx,by, cx,cy, dx,dy)`
- Returns a _positive_ value if the point `d` lies _outside_ the circle passing through `a`, `b`, and `c`.
- Returns a _negative_ value if it lies _inside_.
- Returns _zero_ if the four points are _cocircular_.
The points `a`, `b`, and `c` must be in _counterclockwise_ order, or the sign of the result will be reversed.
### `orient3d(ax,ay,az, bx,by,bz, cx,cy,cz, dx,dy,dz)`
- Returns a _positive_ value if the point `d` lies _above_ the plane passing through `a`, `b`, and `c`, meaning that `a`, `b`, and `c` appear in counterclockwise order when viewed from `d`.
- Returns a _negative_ value if `d` lies _below_ the plane.
- Returns _zero_ if the points are _coplanar_.
The result is also an approximation of six times the signed volume of the tetrahedron defined by the four points.
### `insphere(ax,ay,az, bx,by,bz, cx,cy,cz, dx,dy,dz, ex,ey,ez)`
- Returns a _positive_ value if the point `e` lies _outside_ the sphere passing through `a`, `b`, `c`, and `d`.
- Returns a _negative_ value if it lies _inside_.
- Returns _zero_ if the five points are _cospherical_.
The points `a`, `b`, `c`, and `d` must be ordered so that they have a _positive orientation_
(as defined by `orient3d`), or the sign of the result will be reversed.
### `orient2dfast`, `orient3dfast`, `incirclefast`, `inspherefast`
Simple, approximate, non-robust versions of predicates above. Use when robustness isn't needed.
## Example
```js
import {orient2d} from 'robust-predicates';
const ccw = orient2d(ax, ay, bx, by, cx, cy) > 0;
````
## Install
Install with `npm install robust-predicates` or `yarn add robust-predicates`, or use one of the browser builds:
- [predicates.min.js](https://unpkg.com/robust-predicates/umd/predicates.min.js) (all predicates)
- [orient2d.min.js](https://unpkg.com/robust-predicates/umd/orient2d.min.js) (`orient2d`, `orient2dfast`)
- [orient3d.min.js](https://unpkg.com/robust-predicates/umd/orient3d.min.js) (`orient3d`, `orient3dfast`)
- [incircle.min.js](https://unpkg.com/robust-predicates/umd/incircle.min.js) (`incircle`, `incirclefast`)
- [insphere.min.js](https://unpkg.com/robust-predicates/umd/insphere.min.js) (`insphere`, `inspherefast`)
## Thanks
This project is just a port — all the brilliant, hard work was done by [Jonathan Richard Shewchuk](https://people.eecs.berkeley.edu/~jrs/).
The port was also inspired by [Mikola Lysenko](https://twitter.com/MikolaLysenko)'s excellent [Robust Arithmetic Notes](https://github.com/mikolalysenko/robust-arithmetic-notes) and related projects like [robust-orientation](https://github.com/mikolalysenko/robust-orientation) and [robust-in-sphere](https://github.com/mikolalysenko/robust-in-sphere).
## License
Since the original code is in the public domain, this project follows the same choice. See [Unlicense](https://unlicense.org).

765
node_modules/robust-predicates/esm/incircle.js generated vendored Normal file
View File

@@ -0,0 +1,765 @@
import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale} from './util.js';
const iccerrboundA = (10 + 96 * epsilon) * epsilon;
const iccerrboundB = (4 + 48 * epsilon) * epsilon;
const iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;
const bc = vec(4);
const ca = vec(4);
const ab = vec(4);
const aa = vec(4);
const bb = vec(4);
const cc = vec(4);
const u = vec(4);
const v = vec(4);
const axtbc = vec(8);
const aytbc = vec(8);
const bxtca = vec(8);
const bytca = vec(8);
const cxtab = vec(8);
const cytab = vec(8);
const abt = vec(8);
const bct = vec(8);
const cat = vec(8);
const abtt = vec(4);
const bctt = vec(4);
const catt = vec(4);
const _8 = vec(8);
const _16 = vec(16);
const _16b = vec(16);
const _16c = vec(16);
const _32 = vec(32);
const _32b = vec(32);
const _48 = vec(48);
const _64 = vec(64);
let fin = vec(1152);
let fin2 = vec(1152);
function finadd(finlen, a, alen) {
finlen = sum(finlen, fin, a, alen, fin2);
const tmp = fin; fin = fin2; fin2 = tmp;
return finlen;
}
function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
let finlen;
let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;
let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;
let abtlen, bctlen, catlen;
let abttlen, bcttlen, cattlen;
let n1, n0;
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
s1 = bdx * cdy;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdx * bdy;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
bc[3] = u3;
s1 = cdx * ady;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adx * cdy;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ca[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ca[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ca[2] = _j - (u3 - bvirt) + (_i - bvirt);
ca[3] = u3;
s1 = adx * bdy;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdx * ady;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
ab[3] = u3;
finlen = sum(
sum(
sum(
scale(scale(4, bc, adx, _8), _8, adx, _16), _16,
scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,
sum(
scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,
scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,
sum(
scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,
scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);
let det = estimate(finlen, fin);
let errbound = iccerrboundB * permanent;
if (det >= errbound || -det >= errbound) {
return det;
}
bvirt = ax - adx;
adxtail = ax - (adx + bvirt) + (bvirt - dx);
bvirt = ay - ady;
adytail = ay - (ady + bvirt) + (bvirt - dy);
bvirt = bx - bdx;
bdxtail = bx - (bdx + bvirt) + (bvirt - dx);
bvirt = by - bdy;
bdytail = by - (bdy + bvirt) + (bvirt - dy);
bvirt = cx - cdx;
cdxtail = cx - (cdx + bvirt) + (bvirt - dx);
bvirt = cy - cdy;
cdytail = cy - (cdy + bvirt) + (bvirt - dy);
if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {
return det;
}
errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);
det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +
2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +
((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +
2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +
((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +
2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));
if (det >= errbound || -det >= errbound) {
return det;
}
if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {
s1 = adx * adx;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
t1 = ady * ady;
c = splitter * ady;
ahi = c - (c - ady);
alo = ady - ahi;
t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
_i = s0 + t0;
bvirt = _i - s0;
aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
aa[2] = _j - (u3 - bvirt) + (_i - bvirt);
aa[3] = u3;
}
if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {
s1 = bdx * bdx;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
t1 = bdy * bdy;
c = splitter * bdy;
ahi = c - (c - bdy);
alo = bdy - ahi;
t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
_i = s0 + t0;
bvirt = _i - s0;
bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
bb[2] = _j - (u3 - bvirt) + (_i - bvirt);
bb[3] = u3;
}
if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {
s1 = cdx * cdx;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
t1 = cdy * cdy;
c = splitter * cdy;
ahi = c - (c - cdy);
alo = cdy - ahi;
t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
_i = s0 + t0;
bvirt = _i - s0;
cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
cc[2] = _j - (u3 - bvirt) + (_i - bvirt);
cc[3] = u3;
}
if (adxtail !== 0) {
axtbclen = scale(4, bc, adxtail, axtbc);
finlen = finadd(finlen, sum_three(
scale(axtbclen, axtbc, 2 * adx, _16), _16,
scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,
scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);
}
if (adytail !== 0) {
aytbclen = scale(4, bc, adytail, aytbc);
finlen = finadd(finlen, sum_three(
scale(aytbclen, aytbc, 2 * ady, _16), _16,
scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,
scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);
}
if (bdxtail !== 0) {
bxtcalen = scale(4, ca, bdxtail, bxtca);
finlen = finadd(finlen, sum_three(
scale(bxtcalen, bxtca, 2 * bdx, _16), _16,
scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,
scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);
}
if (bdytail !== 0) {
bytcalen = scale(4, ca, bdytail, bytca);
finlen = finadd(finlen, sum_three(
scale(bytcalen, bytca, 2 * bdy, _16), _16,
scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,
scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);
}
if (cdxtail !== 0) {
cxtablen = scale(4, ab, cdxtail, cxtab);
finlen = finadd(finlen, sum_three(
scale(cxtablen, cxtab, 2 * cdx, _16), _16,
scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,
scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);
}
if (cdytail !== 0) {
cytablen = scale(4, ab, cdytail, cytab);
finlen = finadd(finlen, sum_three(
scale(cytablen, cytab, 2 * cdy, _16), _16,
scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,
scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);
}
if (adxtail !== 0 || adytail !== 0) {
if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {
s1 = bdxtail * cdy;
c = splitter * bdxtail;
ahi = c - (c - bdxtail);
alo = bdxtail - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdx * cdytail;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * cdytail;
bhi = c - (c - cdytail);
blo = cdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
s1 = cdxtail * -bdy;
c = splitter * cdxtail;
ahi = c - (c - cdxtail);
alo = cdxtail - ahi;
c = splitter * -bdy;
bhi = c - (c - -bdy);
blo = -bdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdx * -bdytail;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * -bdytail;
bhi = c - (c - -bdytail);
blo = -bdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
v[3] = u3;
bctlen = sum(4, u, 4, v, bct);
s1 = bdxtail * cdytail;
c = splitter * bdxtail;
ahi = c - (c - bdxtail);
alo = bdxtail - ahi;
c = splitter * cdytail;
bhi = c - (c - cdytail);
blo = cdytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdxtail * bdytail;
c = splitter * cdxtail;
ahi = c - (c - cdxtail);
alo = cdxtail - ahi;
c = splitter * bdytail;
bhi = c - (c - bdytail);
blo = bdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);
bctt[3] = u3;
bcttlen = 4;
} else {
bct[0] = 0;
bctlen = 1;
bctt[0] = 0;
bcttlen = 1;
}
if (adxtail !== 0) {
const len = scale(bctlen, bct, adxtail, _16c);
finlen = finadd(finlen, sum(
scale(axtbclen, axtbc, adxtail, _16), _16,
scale(len, _16c, 2 * adx, _32), _32, _48), _48);
const len2 = scale(bcttlen, bctt, adxtail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * adx, _16), _16,
scale(len2, _8, adxtail, _16b), _16b,
scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);
if (bdytail !== 0) {
finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);
}
if (cdytail !== 0) {
finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);
}
}
if (adytail !== 0) {
const len = scale(bctlen, bct, adytail, _16c);
finlen = finadd(finlen, sum(
scale(aytbclen, aytbc, adytail, _16), _16,
scale(len, _16c, 2 * ady, _32), _32, _48), _48);
const len2 = scale(bcttlen, bctt, adytail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * ady, _16), _16,
scale(len2, _8, adytail, _16b), _16b,
scale(len, _16c, adytail, _32), _32, _32b, _64), _64);
}
}
if (bdxtail !== 0 || bdytail !== 0) {
if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {
s1 = cdxtail * ady;
c = splitter * cdxtail;
ahi = c - (c - cdxtail);
alo = cdxtail - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdx * adytail;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * adytail;
bhi = c - (c - adytail);
blo = adytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
n1 = -cdy;
n0 = -cdytail;
s1 = adxtail * n1;
c = splitter * adxtail;
ahi = c - (c - adxtail);
alo = adxtail - ahi;
c = splitter * n1;
bhi = c - (c - n1);
blo = n1 - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adx * n0;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * n0;
bhi = c - (c - n0);
blo = n0 - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
v[3] = u3;
catlen = sum(4, u, 4, v, cat);
s1 = cdxtail * adytail;
c = splitter * cdxtail;
ahi = c - (c - cdxtail);
alo = cdxtail - ahi;
c = splitter * adytail;
bhi = c - (c - adytail);
blo = adytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adxtail * cdytail;
c = splitter * adxtail;
ahi = c - (c - adxtail);
alo = adxtail - ahi;
c = splitter * cdytail;
bhi = c - (c - cdytail);
blo = cdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
catt[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
catt[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
catt[2] = _j - (u3 - bvirt) + (_i - bvirt);
catt[3] = u3;
cattlen = 4;
} else {
cat[0] = 0;
catlen = 1;
catt[0] = 0;
cattlen = 1;
}
if (bdxtail !== 0) {
const len = scale(catlen, cat, bdxtail, _16c);
finlen = finadd(finlen, sum(
scale(bxtcalen, bxtca, bdxtail, _16), _16,
scale(len, _16c, 2 * bdx, _32), _32, _48), _48);
const len2 = scale(cattlen, catt, bdxtail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * bdx, _16), _16,
scale(len2, _8, bdxtail, _16b), _16b,
scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);
if (cdytail !== 0) {
finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);
}
if (adytail !== 0) {
finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);
}
}
if (bdytail !== 0) {
const len = scale(catlen, cat, bdytail, _16c);
finlen = finadd(finlen, sum(
scale(bytcalen, bytca, bdytail, _16), _16,
scale(len, _16c, 2 * bdy, _32), _32, _48), _48);
const len2 = scale(cattlen, catt, bdytail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * bdy, _16), _16,
scale(len2, _8, bdytail, _16b), _16b,
scale(len, _16c, bdytail, _32), _32, _32b, _64), _64);
}
}
if (cdxtail !== 0 || cdytail !== 0) {
if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {
s1 = adxtail * bdy;
c = splitter * adxtail;
ahi = c - (c - adxtail);
alo = adxtail - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adx * bdytail;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * bdytail;
bhi = c - (c - bdytail);
blo = bdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
n1 = -ady;
n0 = -adytail;
s1 = bdxtail * n1;
c = splitter * bdxtail;
ahi = c - (c - bdxtail);
alo = bdxtail - ahi;
c = splitter * n1;
bhi = c - (c - n1);
blo = n1 - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdx * n0;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * n0;
bhi = c - (c - n0);
blo = n0 - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
v[3] = u3;
abtlen = sum(4, u, 4, v, abt);
s1 = adxtail * bdytail;
c = splitter * adxtail;
ahi = c - (c - adxtail);
alo = adxtail - ahi;
c = splitter * bdytail;
bhi = c - (c - bdytail);
blo = bdytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdxtail * adytail;
c = splitter * bdxtail;
ahi = c - (c - bdxtail);
alo = bdxtail - ahi;
c = splitter * adytail;
bhi = c - (c - adytail);
blo = adytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);
abtt[3] = u3;
abttlen = 4;
} else {
abt[0] = 0;
abtlen = 1;
abtt[0] = 0;
abttlen = 1;
}
if (cdxtail !== 0) {
const len = scale(abtlen, abt, cdxtail, _16c);
finlen = finadd(finlen, sum(
scale(cxtablen, cxtab, cdxtail, _16), _16,
scale(len, _16c, 2 * cdx, _32), _32, _48), _48);
const len2 = scale(abttlen, abtt, cdxtail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * cdx, _16), _16,
scale(len2, _8, cdxtail, _16b), _16b,
scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);
if (adytail !== 0) {
finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);
}
if (bdytail !== 0) {
finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);
}
}
if (cdytail !== 0) {
const len = scale(abtlen, abt, cdytail, _16c);
finlen = finadd(finlen, sum(
scale(cytablen, cytab, cdytail, _16), _16,
scale(len, _16c, 2 * cdy, _32), _32, _48), _48);
const len2 = scale(abttlen, abtt, cdytail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * cdy, _16), _16,
scale(len2, _8, cdytail, _16b), _16b,
scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);
}
}
return fin[finlen - 1];
}
export function incircle(ax, ay, bx, by, cx, cy, dx, dy) {
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
const bdxcdy = bdx * cdy;
const cdxbdy = cdx * bdy;
const alift = adx * adx + ady * ady;
const cdxady = cdx * ady;
const adxcdy = adx * cdy;
const blift = bdx * bdx + bdy * bdy;
const adxbdy = adx * bdy;
const bdxady = bdx * ady;
const clift = cdx * cdx + cdy * cdy;
const det =
alift * (bdxcdy - cdxbdy) +
blift * (cdxady - adxcdy) +
clift * (adxbdy - bdxady);
const permanent =
(Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +
(Math.abs(cdxady) + Math.abs(adxcdy)) * blift +
(Math.abs(adxbdy) + Math.abs(bdxady)) * clift;
const errbound = iccerrboundA * permanent;
if (det > errbound || -det > errbound) {
return det;
}
return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);
}
export function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {
const adx = ax - dx;
const ady = ay - dy;
const bdx = bx - dx;
const bdy = by - dy;
const cdx = cx - dx;
const cdy = cy - dy;
const abdet = adx * bdy - bdx * ady;
const bcdet = bdx * cdy - cdx * bdy;
const cadet = cdx * ady - adx * cdy;
const alift = adx * adx + ady * ady;
const blift = bdx * bdx + bdy * bdy;
const clift = cdx * cdx + cdy * cdy;
return alift * bcdet + blift * cadet + clift * abdet;
}

775
node_modules/robust-predicates/esm/insphere.js generated vendored Normal file
View File

@@ -0,0 +1,775 @@
import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate} from './util.js';
const isperrboundA = (16 + 224 * epsilon) * epsilon;
const isperrboundB = (5 + 72 * epsilon) * epsilon;
const isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;
const ab = vec(4);
const bc = vec(4);
const cd = vec(4);
const de = vec(4);
const ea = vec(4);
const ac = vec(4);
const bd = vec(4);
const ce = vec(4);
const da = vec(4);
const eb = vec(4);
const abc = vec(24);
const bcd = vec(24);
const cde = vec(24);
const dea = vec(24);
const eab = vec(24);
const abd = vec(24);
const bce = vec(24);
const cda = vec(24);
const deb = vec(24);
const eac = vec(24);
const adet = vec(1152);
const bdet = vec(1152);
const cdet = vec(1152);
const ddet = vec(1152);
const edet = vec(1152);
const abdet = vec(2304);
const cddet = vec(2304);
const cdedet = vec(3456);
const deter = vec(5760);
const _8 = vec(8);
const _8b = vec(8);
const _8c = vec(8);
const _16 = vec(16);
const _24 = vec(24);
const _48 = vec(48);
const _48b = vec(48);
const _96 = vec(96);
const _192 = vec(192);
const _384x = vec(384);
const _384y = vec(384);
const _384z = vec(384);
const _768 = vec(768);
function sum_three_scale(a, b, c, az, bz, cz, out) {
return sum_three(
scale(4, a, az, _8), _8,
scale(4, b, bz, _8b), _8b,
scale(4, c, cz, _8c), _8c, _16, out);
}
function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {
const len = sum(
sum(alen, a, blen, b, _48), _48,
negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);
return sum_three(
scale(scale(len, _96, x, _192), _192, x, _384x), _384x,
scale(scale(len, _96, y, _192), _192, y, _384y), _384y,
scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);
}
function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
s1 = ax * by;
c = splitter * ax;
ahi = c - (c - ax);
alo = ax - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bx * ay;
c = splitter * bx;
ahi = c - (c - bx);
alo = bx - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
ab[3] = u3;
s1 = bx * cy;
c = splitter * bx;
ahi = c - (c - bx);
alo = bx - ahi;
c = splitter * cy;
bhi = c - (c - cy);
blo = cy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cx * by;
c = splitter * cx;
ahi = c - (c - cx);
alo = cx - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
bc[3] = u3;
s1 = cx * dy;
c = splitter * cx;
ahi = c - (c - cx);
alo = cx - ahi;
c = splitter * dy;
bhi = c - (c - dy);
blo = dy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = dx * cy;
c = splitter * dx;
ahi = c - (c - dx);
alo = dx - ahi;
c = splitter * cy;
bhi = c - (c - cy);
blo = cy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
cd[2] = _j - (u3 - bvirt) + (_i - bvirt);
cd[3] = u3;
s1 = dx * ey;
c = splitter * dx;
ahi = c - (c - dx);
alo = dx - ahi;
c = splitter * ey;
bhi = c - (c - ey);
blo = ey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ex * dy;
c = splitter * ex;
ahi = c - (c - ex);
alo = ex - ahi;
c = splitter * dy;
bhi = c - (c - dy);
blo = dy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
de[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
de[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
de[2] = _j - (u3 - bvirt) + (_i - bvirt);
de[3] = u3;
s1 = ex * ay;
c = splitter * ex;
ahi = c - (c - ex);
alo = ex - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ax * ey;
c = splitter * ax;
ahi = c - (c - ax);
alo = ax - ahi;
c = splitter * ey;
bhi = c - (c - ey);
blo = ey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ea[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ea[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ea[2] = _j - (u3 - bvirt) + (_i - bvirt);
ea[3] = u3;
s1 = ax * cy;
c = splitter * ax;
ahi = c - (c - ax);
alo = ax - ahi;
c = splitter * cy;
bhi = c - (c - cy);
blo = cy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cx * ay;
c = splitter * cx;
ahi = c - (c - cx);
alo = cx - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ac[2] = _j - (u3 - bvirt) + (_i - bvirt);
ac[3] = u3;
s1 = bx * dy;
c = splitter * bx;
ahi = c - (c - bx);
alo = bx - ahi;
c = splitter * dy;
bhi = c - (c - dy);
blo = dy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = dx * by;
c = splitter * dx;
ahi = c - (c - dx);
alo = dx - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bd[2] = _j - (u3 - bvirt) + (_i - bvirt);
bd[3] = u3;
s1 = cx * ey;
c = splitter * cx;
ahi = c - (c - cx);
alo = cx - ahi;
c = splitter * ey;
bhi = c - (c - ey);
blo = ey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ex * cy;
c = splitter * ex;
ahi = c - (c - ex);
alo = ex - ahi;
c = splitter * cy;
bhi = c - (c - cy);
blo = cy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ce[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ce[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ce[2] = _j - (u3 - bvirt) + (_i - bvirt);
ce[3] = u3;
s1 = dx * ay;
c = splitter * dx;
ahi = c - (c - dx);
alo = dx - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ax * dy;
c = splitter * ax;
ahi = c - (c - ax);
alo = ax - ahi;
c = splitter * dy;
bhi = c - (c - dy);
blo = dy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
da[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
da[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
da[2] = _j - (u3 - bvirt) + (_i - bvirt);
da[3] = u3;
s1 = ex * by;
c = splitter * ex;
ahi = c - (c - ex);
alo = ex - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bx * ey;
c = splitter * bx;
ahi = c - (c - bx);
alo = bx - ahi;
c = splitter * ey;
bhi = c - (c - ey);
blo = ey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
eb[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
eb[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
eb[2] = _j - (u3 - bvirt) + (_i - bvirt);
eb[3] = u3;
const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);
const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);
const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);
const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);
const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);
const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);
const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);
const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);
const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);
const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);
const deterlen = sum_three(
liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,
liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,
sum_three(
liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,
liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,
liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);
return deter[deterlen - 1];
}
const xdet = vec(96);
const ydet = vec(96);
const zdet = vec(96);
const fin = vec(1152);
function liftadapt(a, b, c, az, bz, cz, x, y, z, out) {
const len = sum_three_scale(a, b, c, az, bz, cz, _24);
return sum_three(
scale(scale(len, _24, x, _48), _48, x, xdet), xdet,
scale(scale(len, _24, y, _48), _48, y, ydet), ydet,
scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);
}
function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {
let ab3, bc3, cd3, da3, ac3, bd3;
let aextail, bextail, cextail, dextail;
let aeytail, beytail, ceytail, deytail;
let aeztail, beztail, ceztail, deztail;
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;
const aex = ax - ex;
const bex = bx - ex;
const cex = cx - ex;
const dex = dx - ex;
const aey = ay - ey;
const bey = by - ey;
const cey = cy - ey;
const dey = dy - ey;
const aez = az - ez;
const bez = bz - ez;
const cez = cz - ez;
const dez = dz - ez;
s1 = aex * bey;
c = splitter * aex;
ahi = c - (c - aex);
alo = aex - ahi;
c = splitter * bey;
bhi = c - (c - bey);
blo = bey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bex * aey;
c = splitter * bex;
ahi = c - (c - bex);
alo = bex - ahi;
c = splitter * aey;
bhi = c - (c - aey);
blo = aey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
ab3 = _j + _i;
bvirt = ab3 - _j;
ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);
ab[3] = ab3;
s1 = bex * cey;
c = splitter * bex;
ahi = c - (c - bex);
alo = bex - ahi;
c = splitter * cey;
bhi = c - (c - cey);
blo = cey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cex * bey;
c = splitter * cex;
ahi = c - (c - cex);
alo = cex - ahi;
c = splitter * bey;
bhi = c - (c - bey);
blo = bey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
bc3 = _j + _i;
bvirt = bc3 - _j;
bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);
bc[3] = bc3;
s1 = cex * dey;
c = splitter * cex;
ahi = c - (c - cex);
alo = cex - ahi;
c = splitter * dey;
bhi = c - (c - dey);
blo = dey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = dex * cey;
c = splitter * dex;
ahi = c - (c - dex);
alo = dex - ahi;
c = splitter * cey;
bhi = c - (c - cey);
blo = cey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
cd3 = _j + _i;
bvirt = cd3 - _j;
cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);
cd[3] = cd3;
s1 = dex * aey;
c = splitter * dex;
ahi = c - (c - dex);
alo = dex - ahi;
c = splitter * aey;
bhi = c - (c - aey);
blo = aey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = aex * dey;
c = splitter * aex;
ahi = c - (c - aex);
alo = aex - ahi;
c = splitter * dey;
bhi = c - (c - dey);
blo = dey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
da[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
da[1] = _0 - (_i + bvirt) + (bvirt - t1);
da3 = _j + _i;
bvirt = da3 - _j;
da[2] = _j - (da3 - bvirt) + (_i - bvirt);
da[3] = da3;
s1 = aex * cey;
c = splitter * aex;
ahi = c - (c - aex);
alo = aex - ahi;
c = splitter * cey;
bhi = c - (c - cey);
blo = cey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cex * aey;
c = splitter * cex;
ahi = c - (c - cex);
alo = cex - ahi;
c = splitter * aey;
bhi = c - (c - aey);
blo = aey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
ac3 = _j + _i;
bvirt = ac3 - _j;
ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);
ac[3] = ac3;
s1 = bex * dey;
c = splitter * bex;
ahi = c - (c - bex);
alo = bex - ahi;
c = splitter * dey;
bhi = c - (c - dey);
blo = dey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = dex * bey;
c = splitter * dex;
ahi = c - (c - dex);
alo = dex - ahi;
c = splitter * bey;
bhi = c - (c - bey);
blo = bey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
bd3 = _j + _i;
bvirt = bd3 - _j;
bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);
bd[3] = bd3;
const finlen = sum(
sum(
negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,
liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,
sum(
negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,
liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);
let det = estimate(finlen, fin);
let errbound = isperrboundB * permanent;
if (det >= errbound || -det >= errbound) {
return det;
}
bvirt = ax - aex;
aextail = ax - (aex + bvirt) + (bvirt - ex);
bvirt = ay - aey;
aeytail = ay - (aey + bvirt) + (bvirt - ey);
bvirt = az - aez;
aeztail = az - (aez + bvirt) + (bvirt - ez);
bvirt = bx - bex;
bextail = bx - (bex + bvirt) + (bvirt - ex);
bvirt = by - bey;
beytail = by - (bey + bvirt) + (bvirt - ey);
bvirt = bz - bez;
beztail = bz - (bez + bvirt) + (bvirt - ez);
bvirt = cx - cex;
cextail = cx - (cex + bvirt) + (bvirt - ex);
bvirt = cy - cey;
ceytail = cy - (cey + bvirt) + (bvirt - ey);
bvirt = cz - cez;
ceztail = cz - (cez + bvirt) + (bvirt - ez);
bvirt = dx - dex;
dextail = dx - (dex + bvirt) + (bvirt - ex);
bvirt = dy - dey;
deytail = dy - (dey + bvirt) + (bvirt - ey);
bvirt = dz - dez;
deztail = dz - (dez + bvirt) + (bvirt - ez);
if (aextail === 0 && aeytail === 0 && aeztail === 0 &&
bextail === 0 && beytail === 0 && beztail === 0 &&
cextail === 0 && ceytail === 0 && ceztail === 0 &&
dextail === 0 && deytail === 0 && deztail === 0) {
return det;
}
errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);
const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);
const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);
const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);
const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);
const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);
const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);
det +=
(((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +
(ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *
((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -
((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +
(beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *
((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +
2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +
(dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -
((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +
(cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));
if (det >= errbound || -det >= errbound) {
return det;
}
return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);
}
export function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
const aex = ax - ex;
const bex = bx - ex;
const cex = cx - ex;
const dex = dx - ex;
const aey = ay - ey;
const bey = by - ey;
const cey = cy - ey;
const dey = dy - ey;
const aez = az - ez;
const bez = bz - ez;
const cez = cz - ez;
const dez = dz - ez;
const aexbey = aex * bey;
const bexaey = bex * aey;
const ab = aexbey - bexaey;
const bexcey = bex * cey;
const cexbey = cex * bey;
const bc = bexcey - cexbey;
const cexdey = cex * dey;
const dexcey = dex * cey;
const cd = cexdey - dexcey;
const dexaey = dex * aey;
const aexdey = aex * dey;
const da = dexaey - aexdey;
const aexcey = aex * cey;
const cexaey = cex * aey;
const ac = aexcey - cexaey;
const bexdey = bex * dey;
const dexbey = dex * bey;
const bd = bexdey - dexbey;
const abc = aez * bc - bez * ac + cez * ab;
const bcd = bez * cd - cez * bd + dez * bc;
const cda = cez * da + dez * ac + aez * cd;
const dab = dez * ab + aez * bd + bez * da;
const alift = aex * aex + aey * aey + aez * aez;
const blift = bex * bex + bey * bey + bez * bez;
const clift = cex * cex + cey * cey + cez * cez;
const dlift = dex * dex + dey * dey + dez * dez;
const det = (clift * dab - dlift * abc) + (alift * bcd - blift * cda);
const aezplus = Math.abs(aez);
const bezplus = Math.abs(bez);
const cezplus = Math.abs(cez);
const dezplus = Math.abs(dez);
const aexbeyplus = Math.abs(aexbey);
const bexaeyplus = Math.abs(bexaey);
const bexceyplus = Math.abs(bexcey);
const cexbeyplus = Math.abs(cexbey);
const cexdeyplus = Math.abs(cexdey);
const dexceyplus = Math.abs(dexcey);
const dexaeyplus = Math.abs(dexaey);
const aexdeyplus = Math.abs(aexdey);
const aexceyplus = Math.abs(aexcey);
const cexaeyplus = Math.abs(cexaey);
const bexdeyplus = Math.abs(bexdey);
const dexbeyplus = Math.abs(dexbey);
const permanent =
((cexdeyplus + dexceyplus) * bezplus + (dexbeyplus + bexdeyplus) * cezplus + (bexceyplus + cexbeyplus) * dezplus) * alift +
((dexaeyplus + aexdeyplus) * cezplus + (aexceyplus + cexaeyplus) * dezplus + (cexdeyplus + dexceyplus) * aezplus) * blift +
((aexbeyplus + bexaeyplus) * dezplus + (bexdeyplus + dexbeyplus) * aezplus + (dexaeyplus + aexdeyplus) * bezplus) * clift +
((bexceyplus + cexbeyplus) * aezplus + (cexaeyplus + aexceyplus) * bezplus + (aexbeyplus + bexaeyplus) * cezplus) * dlift;
const errbound = isperrboundA * permanent;
if (det > errbound || -det > errbound) {
return det;
}
return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);
}
export function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {
const aex = pax - pex;
const bex = pbx - pex;
const cex = pcx - pex;
const dex = pdx - pex;
const aey = pay - pey;
const bey = pby - pey;
const cey = pcy - pey;
const dey = pdy - pey;
const aez = paz - pez;
const bez = pbz - pez;
const cez = pcz - pez;
const dez = pdz - pez;
const ab = aex * bey - bex * aey;
const bc = bex * cey - cex * bey;
const cd = cex * dey - dex * cey;
const da = dex * aey - aex * dey;
const ac = aex * cey - cex * aey;
const bd = bex * dey - dex * bey;
const abc = aez * bc - bez * ac + cez * ab;
const bcd = bez * cd - cez * bd + dez * bc;
const cda = cez * da + dez * ac + aez * cd;
const dab = dez * ab + aez * bd + bez * da;
const alift = aex * aex + aey * aey + aez * aez;
const blift = bex * bex + bey * bey + bez * bez;
const clift = cex * cex + cey * cey + cez * cez;
const dlift = dex * dex + dey * dey + dez * dez;
return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);
}

186
node_modules/robust-predicates/esm/orient2d.js generated vendored Normal file
View File

@@ -0,0 +1,186 @@
import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';
const ccwerrboundA = (3 + 16 * epsilon) * epsilon;
const ccwerrboundB = (2 + 12 * epsilon) * epsilon;
const ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;
const B = vec(4);
const C1 = vec(8);
const C2 = vec(12);
const D = vec(16);
const u = vec(4);
function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
let acxtail, acytail, bcxtail, bcytail;
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
const acx = ax - cx;
const bcx = bx - cx;
const acy = ay - cy;
const bcy = by - cy;
s1 = acx * bcy;
c = splitter * acx;
ahi = c - (c - acx);
alo = acx - ahi;
c = splitter * bcy;
bhi = c - (c - bcy);
blo = bcy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = acy * bcx;
c = splitter * acy;
ahi = c - (c - acy);
alo = acy - ahi;
c = splitter * bcx;
bhi = c - (c - bcx);
blo = bcx - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
B[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
B[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
B[2] = _j - (u3 - bvirt) + (_i - bvirt);
B[3] = u3;
let det = estimate(4, B);
let errbound = ccwerrboundB * detsum;
if (det >= errbound || -det >= errbound) {
return det;
}
bvirt = ax - acx;
acxtail = ax - (acx + bvirt) + (bvirt - cx);
bvirt = bx - bcx;
bcxtail = bx - (bcx + bvirt) + (bvirt - cx);
bvirt = ay - acy;
acytail = ay - (acy + bvirt) + (bvirt - cy);
bvirt = by - bcy;
bcytail = by - (bcy + bvirt) + (bvirt - cy);
if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {
return det;
}
errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);
det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);
if (det >= errbound || -det >= errbound) return det;
s1 = acxtail * bcy;
c = splitter * acxtail;
ahi = c - (c - acxtail);
alo = acxtail - ahi;
c = splitter * bcy;
bhi = c - (c - bcy);
blo = bcy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = acytail * bcx;
c = splitter * acytail;
ahi = c - (c - acytail);
alo = acytail - ahi;
c = splitter * bcx;
bhi = c - (c - bcx);
blo = bcx - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
const C1len = sum(4, B, 4, u, C1);
s1 = acx * bcytail;
c = splitter * acx;
ahi = c - (c - acx);
alo = acx - ahi;
c = splitter * bcytail;
bhi = c - (c - bcytail);
blo = bcytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = acy * bcxtail;
c = splitter * acy;
ahi = c - (c - acy);
alo = acy - ahi;
c = splitter * bcxtail;
bhi = c - (c - bcxtail);
blo = bcxtail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
const C2len = sum(C1len, C1, 4, u, C2);
s1 = acxtail * bcytail;
c = splitter * acxtail;
ahi = c - (c - acxtail);
alo = acxtail - ahi;
c = splitter * bcytail;
bhi = c - (c - bcytail);
blo = bcytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = acytail * bcxtail;
c = splitter * acytail;
ahi = c - (c - acytail);
alo = acytail - ahi;
c = splitter * bcxtail;
bhi = c - (c - bcxtail);
blo = bcxtail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
const Dlen = sum(C2len, C2, 4, u, D);
return D[Dlen - 1];
}
export function orient2d(ax, ay, bx, by, cx, cy) {
const detleft = (ay - cy) * (bx - cx);
const detright = (ax - cx) * (by - cy);
const det = detleft - detright;
if (detleft === 0 || detright === 0 || (detleft > 0) !== (detright > 0)) return det;
const detsum = Math.abs(detleft + detright);
if (Math.abs(det) >= ccwerrboundA * detsum) return det;
return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);
}
export function orient2dfast(ax, ay, bx, by, cx, cy) {
return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);
}

462
node_modules/robust-predicates/esm/orient3d.js generated vendored Normal file
View File

@@ -0,0 +1,462 @@
import {epsilon, splitter, resulterrbound, estimate, vec, sum, scale} from './util.js';
const o3derrboundA = (7 + 56 * epsilon) * epsilon;
const o3derrboundB = (3 + 28 * epsilon) * epsilon;
const o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;
const bc = vec(4);
const ca = vec(4);
const ab = vec(4);
const at_b = vec(4);
const at_c = vec(4);
const bt_c = vec(4);
const bt_a = vec(4);
const ct_a = vec(4);
const ct_b = vec(4);
const bct = vec(8);
const cat = vec(8);
const abt = vec(8);
const u = vec(4);
const _8 = vec(8);
const _8b = vec(8);
const _16 = vec(8);
const _12 = vec(12);
let fin = vec(192);
let fin2 = vec(192);
function finadd(finlen, alen, a) {
finlen = sum(finlen, fin, alen, a, fin2);
const tmp = fin; fin = fin2; fin2 = tmp;
return finlen;
}
function tailinit(xtail, ytail, ax, ay, bx, by, a, b) {
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;
if (xtail === 0) {
if (ytail === 0) {
a[0] = 0;
b[0] = 0;
return 1;
} else {
negate = -ytail;
s1 = negate * ax;
c = splitter * negate;
ahi = c - (c - negate);
alo = negate - ahi;
c = splitter * ax;
bhi = c - (c - ax);
blo = ax - bhi;
a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
a[1] = s1;
s1 = ytail * bx;
c = splitter * ytail;
ahi = c - (c - ytail);
alo = ytail - ahi;
c = splitter * bx;
bhi = c - (c - bx);
blo = bx - bhi;
b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
b[1] = s1;
return 2;
}
} else {
if (ytail === 0) {
s1 = xtail * ay;
c = splitter * xtail;
ahi = c - (c - xtail);
alo = xtail - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
a[1] = s1;
negate = -xtail;
s1 = negate * by;
c = splitter * negate;
ahi = c - (c - negate);
alo = negate - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
b[1] = s1;
return 2;
} else {
s1 = xtail * ay;
c = splitter * xtail;
ahi = c - (c - xtail);
alo = xtail - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ytail * ax;
c = splitter * ytail;
ahi = c - (c - ytail);
alo = ytail - ahi;
c = splitter * ax;
bhi = c - (c - ax);
blo = ax - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
a[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
a[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
a[2] = _j - (u3 - bvirt) + (_i - bvirt);
a[3] = u3;
s1 = ytail * bx;
c = splitter * ytail;
ahi = c - (c - ytail);
alo = ytail - ahi;
c = splitter * bx;
bhi = c - (c - bx);
blo = bx - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = xtail * by;
c = splitter * xtail;
ahi = c - (c - xtail);
alo = xtail - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
b[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
b[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
b[2] = _j - (u3 - bvirt) + (_i - bvirt);
b[3] = u3;
return 4;
}
}
}
function tailadd(finlen, a, b, k, z) {
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;
s1 = a * b;
c = splitter * a;
ahi = c - (c - a);
alo = a - ahi;
c = splitter * b;
bhi = c - (c - b);
blo = b - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
c = splitter * k;
bhi = c - (c - k);
blo = k - bhi;
_i = s0 * k;
c = splitter * s0;
ahi = c - (c - s0);
alo = s0 - ahi;
u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
_j = s1 * k;
c = splitter * s1;
ahi = c - (c - s1);
alo = s1 - ahi;
_0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
_k = _i + _0;
bvirt = _k - _i;
u[1] = _i - (_k - bvirt) + (_0 - bvirt);
u3 = _j + _k;
u[2] = _k - (u3 - _j);
u[3] = u3;
finlen = finadd(finlen, 4, u);
if (z !== 0) {
c = splitter * z;
bhi = c - (c - z);
blo = z - bhi;
_i = s0 * z;
c = splitter * s0;
ahi = c - (c - s0);
alo = s0 - ahi;
u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
_j = s1 * z;
c = splitter * s1;
ahi = c - (c - s1);
alo = s1 - ahi;
_0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
_k = _i + _0;
bvirt = _k - _i;
u[1] = _i - (_k - bvirt) + (_0 - bvirt);
u3 = _j + _k;
u[2] = _k - (u3 - _j);
u[3] = u3;
finlen = finadd(finlen, 4, u);
}
return finlen;
}
function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {
let finlen;
let adxtail, bdxtail, cdxtail;
let adytail, bdytail, cdytail;
let adztail, bdztail, cdztail;
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
const adz = az - dz;
const bdz = bz - dz;
const cdz = cz - dz;
s1 = bdx * cdy;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdx * bdy;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
bc[3] = u3;
s1 = cdx * ady;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adx * cdy;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ca[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ca[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ca[2] = _j - (u3 - bvirt) + (_i - bvirt);
ca[3] = u3;
s1 = adx * bdy;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdx * ady;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
ab[3] = u3;
finlen = sum(
sum(
scale(4, bc, adz, _8), _8,
scale(4, ca, bdz, _8b), _8b, _16), _16,
scale(4, ab, cdz, _8), _8, fin);
let det = estimate(finlen, fin);
let errbound = o3derrboundB * permanent;
if (det >= errbound || -det >= errbound) {
return det;
}
bvirt = ax - adx;
adxtail = ax - (adx + bvirt) + (bvirt - dx);
bvirt = bx - bdx;
bdxtail = bx - (bdx + bvirt) + (bvirt - dx);
bvirt = cx - cdx;
cdxtail = cx - (cdx + bvirt) + (bvirt - dx);
bvirt = ay - ady;
adytail = ay - (ady + bvirt) + (bvirt - dy);
bvirt = by - bdy;
bdytail = by - (bdy + bvirt) + (bvirt - dy);
bvirt = cy - cdy;
cdytail = cy - (cdy + bvirt) + (bvirt - dy);
bvirt = az - adz;
adztail = az - (adz + bvirt) + (bvirt - dz);
bvirt = bz - bdz;
bdztail = bz - (bdz + bvirt) + (bvirt - dz);
bvirt = cz - cdz;
cdztail = cz - (cdz + bvirt) + (bvirt - dz);
if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&
adytail === 0 && bdytail === 0 && cdytail === 0 &&
adztail === 0 && bdztail === 0 && cdztail === 0) {
return det;
}
errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);
det +=
adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +
bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +
cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);
if (det >= errbound || -det >= errbound) {
return det;
}
const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);
const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);
const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);
const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);
finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);
const catlen = sum(ct_len, ct_a, at_len, at_c, cat);
finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);
const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);
finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);
if (adztail !== 0) {
finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);
finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);
}
if (bdztail !== 0) {
finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);
finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);
}
if (cdztail !== 0) {
finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);
finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);
}
if (adxtail !== 0) {
if (bdytail !== 0) {
finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);
}
if (cdytail !== 0) {
finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);
}
}
if (bdxtail !== 0) {
if (cdytail !== 0) {
finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);
}
if (adytail !== 0) {
finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);
}
}
if (cdxtail !== 0) {
if (adytail !== 0) {
finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);
}
if (bdytail !== 0) {
finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);
}
}
return fin[finlen - 1];
}
export function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
const adz = az - dz;
const bdz = bz - dz;
const cdz = cz - dz;
const bdxcdy = bdx * cdy;
const cdxbdy = cdx * bdy;
const cdxady = cdx * ady;
const adxcdy = adx * cdy;
const adxbdy = adx * bdy;
const bdxady = bdx * ady;
const det =
adz * (bdxcdy - cdxbdy) +
bdz * (cdxady - adxcdy) +
cdz * (adxbdy - bdxady);
const 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);
const errbound = o3derrboundA * permanent;
if (det > errbound || -det > errbound) {
return det;
}
return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);
}
export function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
const adz = az - dz;
const bdz = bz - dz;
const cdz = cz - dz;
return adx * (bdy * cdz - bdz * cdy) +
bdx * (cdy * adz - cdz * ady) +
cdx * (ady * bdz - adz * bdy);
}

138
node_modules/robust-predicates/esm/util.js generated vendored Normal file
View File

@@ -0,0 +1,138 @@
export const epsilon = 1.1102230246251565e-16;
export const splitter = 134217729;
export const resulterrbound = (3 + 8 * epsilon) * epsilon;
// fast_expansion_sum_zeroelim routine from oritinal code
export function sum(elen, e, flen, f, h) {
let Q, Qnew, hh, bvirt;
let enow = e[0];
let fnow = f[0];
let eindex = 0;
let findex = 0;
if ((fnow > enow) === (fnow > -enow)) {
Q = enow;
enow = e[++eindex];
} else {
Q = fnow;
fnow = f[++findex];
}
let hindex = 0;
if (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = enow + Q;
hh = Q - (Qnew - enow);
enow = e[++eindex];
} else {
Qnew = fnow + Q;
hh = Q - (Qnew - fnow);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
while (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
} else {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
}
while (eindex < elen) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
while (findex < flen) {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
if (Q !== 0 || hindex === 0) {
h[hindex++] = Q;
}
return hindex;
}
export function sum_three(alen, a, blen, b, clen, c, tmp, out) {
return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);
}
// scale_expansion_zeroelim routine from oritinal code
export function scale(elen, e, b, h) {
let Q, sum, hh, product1, product0;
let bvirt, c, ahi, alo, bhi, blo;
c = splitter * b;
bhi = c - (c - b);
blo = b - bhi;
let enow = e[0];
Q = enow * b;
c = splitter * enow;
ahi = c - (c - enow);
alo = enow - ahi;
hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);
let hindex = 0;
if (hh !== 0) {
h[hindex++] = hh;
}
for (let i = 1; i < elen; i++) {
enow = e[i];
product1 = enow * b;
c = splitter * enow;
ahi = c - (c - enow);
alo = enow - ahi;
product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);
sum = Q + product0;
bvirt = sum - Q;
hh = Q - (sum - bvirt) + (product0 - bvirt);
if (hh !== 0) {
h[hindex++] = hh;
}
Q = product1 + sum;
hh = sum - (Q - product1);
if (hh !== 0) {
h[hindex++] = hh;
}
}
if (Q !== 0 || hindex === 0) {
h[hindex++] = Q;
}
return hindex;
}
export function negate(elen, e) {
for (let i = 0; i < elen; i++) e[i] = -e[i];
return elen;
}
export function estimate(elen, e) {
let Q = e[0];
for (let i = 1; i < elen; i++) Q += e[i];
return Q;
}
export function vec(n) {
return new Float64Array(n);
}

49
node_modules/robust-predicates/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,49 @@
export as namespace predicates;
export function orient2d(
ax: number, ay: number,
bx: number, by: number,
cx: number, cy: number): number;
export function orient2dfast(
ax: number, ay: number,
bx: number, by: number,
cx: number, cy: number): number;
export function incircle(
ax: number, ay: number,
bx: number, by: number,
cx: number, cy: number,
dx: number, dy: number): number;
export function incirclefast(
ax: number, ay: number,
bx: number, by: number,
cx: number, cy: number,
dx: number, dy: number): number;
export function orient3d(
ax: number, ay: number, az: number,
bx: number, by: number, bz: number,
cx: number, cy: number, cz: number,
dx: number, dy: number, dz: number): number;
export function orient3dfast(
ax: number, ay: number, az: number,
bx: number, by: number, bz: number,
cx: number, cy: number, cz: number,
dx: number, dy: number, dz: number): number;
export function insphere(
ax: number, ay: number, az: number,
bx: number, by: number, bz: number,
cx: number, cy: number, cz: number,
dx: number, dy: number, dz: number,
ex: number, ey: number, ez: number): number;
export function inspherefast(
ax: number, ay: number, az: number,
bx: number, by: number, bz: number,
cx: number, cy: number, cz: number,
dx: number, dy: number, dz: number,
ex: number, ey: number, ez: number): number;

5
node_modules/robust-predicates/index.js generated vendored Normal file
View File

@@ -0,0 +1,5 @@
export {orient2d, orient2dfast} from './esm/orient2d.js';
export {orient3d, orient3dfast} from './esm/orient3d.js';
export {incircle, incirclefast} from './esm/incircle.js';
export {insphere, inspherefast} from './esm/insphere.js';

77
node_modules/robust-predicates/package.json generated vendored Normal file
View File

@@ -0,0 +1,77 @@
{
"name": "robust-predicates",
"version": "3.0.1",
"description": "Fast robust predicates for computational geometry",
"keywords": [
"computational geometry",
"robust arithmetic"
],
"author": "Vladimir Agafonkin",
"license": "Unlicense",
"type": "module",
"main": "index.js",
"unpkg": "umd/predicates.min.js",
"module": "index.js",
"exports": "./index.js",
"types": "index.d.ts",
"scripts": {
"build": "mkdirp esm && node compile.js",
"lint": "eslint *.js src test/test.js",
"test": "npm run lint && npm run build && node test/test.js",
"cov": "c8 node test/test.js",
"bench": "node bench.js",
"prepublishOnly": "npm run test && rollup -c"
},
"devDependencies": {
"c8": "^7.7.0",
"eslint": "^7.23.0",
"eslint-config-mourner": "^3.0.0",
"mkdirp": "^1.0.4",
"nextafter": "^1.0.0",
"robust-in-sphere": "^1.1.3",
"robust-orientation": "^1.1.3",
"rollup": "^2.44.0",
"rollup-plugin-terser": "^7.0.2",
"tape": "^5.2.2",
"terser": "^5.6.1"
},
"files": [
"index.js",
"index.d.ts",
"esm",
"umd"
],
"repository": {
"type": "git",
"url": "https://github.com/mourner/robust-predicates.git"
},
"eslintConfig": {
"extends": "mourner",
"parserOptions": {
"ecmaVersion": 2020
},
"rules": {
"camelcase": 0,
"new-cap": 0,
"no-unused-vars": [
2,
{
"varsIgnorePattern": "splitter|bvirt|c|[ab]hi|[ab]lo|_[ijk0]|u3|[st][01]"
}
],
"no-lonely-if": 0
},
"globals": {
"$Fast_Two_Sum": false,
"$Two_Sum": false,
"$Two_Diff_Tail": false,
"$Split": false,
"$Two_Product": false,
"$Two_Product_Presplit": false,
"$Two_One_Product": false,
"$Cross_Product": false,
"$Square_Sum": false,
"$Two_Product_Sum": false
}
}
}

910
node_modules/robust-predicates/umd/incircle.js generated vendored Normal file
View File

@@ -0,0 +1,910 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {}));
}(this, (function (exports) { 'use strict';
const epsilon = 1.1102230246251565e-16;
const splitter = 134217729;
const resulterrbound = (3 + 8 * epsilon) * epsilon;
// fast_expansion_sum_zeroelim routine from oritinal code
function sum(elen, e, flen, f, h) {
let Q, Qnew, hh, bvirt;
let enow = e[0];
let fnow = f[0];
let eindex = 0;
let findex = 0;
if ((fnow > enow) === (fnow > -enow)) {
Q = enow;
enow = e[++eindex];
} else {
Q = fnow;
fnow = f[++findex];
}
let hindex = 0;
if (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = enow + Q;
hh = Q - (Qnew - enow);
enow = e[++eindex];
} else {
Qnew = fnow + Q;
hh = Q - (Qnew - fnow);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
while (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
} else {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
}
while (eindex < elen) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
while (findex < flen) {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
if (Q !== 0 || hindex === 0) {
h[hindex++] = Q;
}
return hindex;
}
function sum_three(alen, a, blen, b, clen, c, tmp, out) {
return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);
}
// scale_expansion_zeroelim routine from oritinal code
function scale(elen, e, b, h) {
let Q, sum, hh, product1, product0;
let bvirt, c, ahi, alo, bhi, blo;
c = splitter * b;
bhi = c - (c - b);
blo = b - bhi;
let enow = e[0];
Q = enow * b;
c = splitter * enow;
ahi = c - (c - enow);
alo = enow - ahi;
hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);
let hindex = 0;
if (hh !== 0) {
h[hindex++] = hh;
}
for (let i = 1; i < elen; i++) {
enow = e[i];
product1 = enow * b;
c = splitter * enow;
ahi = c - (c - enow);
alo = enow - ahi;
product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);
sum = Q + product0;
bvirt = sum - Q;
hh = Q - (sum - bvirt) + (product0 - bvirt);
if (hh !== 0) {
h[hindex++] = hh;
}
Q = product1 + sum;
hh = sum - (Q - product1);
if (hh !== 0) {
h[hindex++] = hh;
}
}
if (Q !== 0 || hindex === 0) {
h[hindex++] = Q;
}
return hindex;
}
function estimate(elen, e) {
let Q = e[0];
for (let i = 1; i < elen; i++) Q += e[i];
return Q;
}
function vec(n) {
return new Float64Array(n);
}
const iccerrboundA = (10 + 96 * epsilon) * epsilon;
const iccerrboundB = (4 + 48 * epsilon) * epsilon;
const iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;
const bc = vec(4);
const ca = vec(4);
const ab = vec(4);
const aa = vec(4);
const bb = vec(4);
const cc = vec(4);
const u = vec(4);
const v = vec(4);
const axtbc = vec(8);
const aytbc = vec(8);
const bxtca = vec(8);
const bytca = vec(8);
const cxtab = vec(8);
const cytab = vec(8);
const abt = vec(8);
const bct = vec(8);
const cat = vec(8);
const abtt = vec(4);
const bctt = vec(4);
const catt = vec(4);
const _8 = vec(8);
const _16 = vec(16);
const _16b = vec(16);
const _16c = vec(16);
const _32 = vec(32);
const _32b = vec(32);
const _48 = vec(48);
const _64 = vec(64);
let fin = vec(1152);
let fin2 = vec(1152);
function finadd(finlen, a, alen) {
finlen = sum(finlen, fin, a, alen, fin2);
const tmp = fin; fin = fin2; fin2 = tmp;
return finlen;
}
function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
let finlen;
let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;
let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;
let abtlen, bctlen, catlen;
let abttlen, bcttlen, cattlen;
let n1, n0;
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
s1 = bdx * cdy;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdx * bdy;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
bc[3] = u3;
s1 = cdx * ady;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adx * cdy;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ca[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ca[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ca[2] = _j - (u3 - bvirt) + (_i - bvirt);
ca[3] = u3;
s1 = adx * bdy;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdx * ady;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
ab[3] = u3;
finlen = sum(
sum(
sum(
scale(scale(4, bc, adx, _8), _8, adx, _16), _16,
scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,
sum(
scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,
scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,
sum(
scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,
scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);
let det = estimate(finlen, fin);
let errbound = iccerrboundB * permanent;
if (det >= errbound || -det >= errbound) {
return det;
}
bvirt = ax - adx;
adxtail = ax - (adx + bvirt) + (bvirt - dx);
bvirt = ay - ady;
adytail = ay - (ady + bvirt) + (bvirt - dy);
bvirt = bx - bdx;
bdxtail = bx - (bdx + bvirt) + (bvirt - dx);
bvirt = by - bdy;
bdytail = by - (bdy + bvirt) + (bvirt - dy);
bvirt = cx - cdx;
cdxtail = cx - (cdx + bvirt) + (bvirt - dx);
bvirt = cy - cdy;
cdytail = cy - (cdy + bvirt) + (bvirt - dy);
if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {
return det;
}
errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);
det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +
2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +
((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +
2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +
((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +
2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));
if (det >= errbound || -det >= errbound) {
return det;
}
if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {
s1 = adx * adx;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
t1 = ady * ady;
c = splitter * ady;
ahi = c - (c - ady);
alo = ady - ahi;
t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
_i = s0 + t0;
bvirt = _i - s0;
aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
aa[2] = _j - (u3 - bvirt) + (_i - bvirt);
aa[3] = u3;
}
if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {
s1 = bdx * bdx;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
t1 = bdy * bdy;
c = splitter * bdy;
ahi = c - (c - bdy);
alo = bdy - ahi;
t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
_i = s0 + t0;
bvirt = _i - s0;
bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
bb[2] = _j - (u3 - bvirt) + (_i - bvirt);
bb[3] = u3;
}
if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {
s1 = cdx * cdx;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
t1 = cdy * cdy;
c = splitter * cdy;
ahi = c - (c - cdy);
alo = cdy - ahi;
t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
_i = s0 + t0;
bvirt = _i - s0;
cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
cc[2] = _j - (u3 - bvirt) + (_i - bvirt);
cc[3] = u3;
}
if (adxtail !== 0) {
axtbclen = scale(4, bc, adxtail, axtbc);
finlen = finadd(finlen, sum_three(
scale(axtbclen, axtbc, 2 * adx, _16), _16,
scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,
scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);
}
if (adytail !== 0) {
aytbclen = scale(4, bc, adytail, aytbc);
finlen = finadd(finlen, sum_three(
scale(aytbclen, aytbc, 2 * ady, _16), _16,
scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,
scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);
}
if (bdxtail !== 0) {
bxtcalen = scale(4, ca, bdxtail, bxtca);
finlen = finadd(finlen, sum_three(
scale(bxtcalen, bxtca, 2 * bdx, _16), _16,
scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,
scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);
}
if (bdytail !== 0) {
bytcalen = scale(4, ca, bdytail, bytca);
finlen = finadd(finlen, sum_three(
scale(bytcalen, bytca, 2 * bdy, _16), _16,
scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,
scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);
}
if (cdxtail !== 0) {
cxtablen = scale(4, ab, cdxtail, cxtab);
finlen = finadd(finlen, sum_three(
scale(cxtablen, cxtab, 2 * cdx, _16), _16,
scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,
scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);
}
if (cdytail !== 0) {
cytablen = scale(4, ab, cdytail, cytab);
finlen = finadd(finlen, sum_three(
scale(cytablen, cytab, 2 * cdy, _16), _16,
scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,
scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);
}
if (adxtail !== 0 || adytail !== 0) {
if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {
s1 = bdxtail * cdy;
c = splitter * bdxtail;
ahi = c - (c - bdxtail);
alo = bdxtail - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdx * cdytail;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * cdytail;
bhi = c - (c - cdytail);
blo = cdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
s1 = cdxtail * -bdy;
c = splitter * cdxtail;
ahi = c - (c - cdxtail);
alo = cdxtail - ahi;
c = splitter * -bdy;
bhi = c - (c - -bdy);
blo = -bdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdx * -bdytail;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * -bdytail;
bhi = c - (c - -bdytail);
blo = -bdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
v[3] = u3;
bctlen = sum(4, u, 4, v, bct);
s1 = bdxtail * cdytail;
c = splitter * bdxtail;
ahi = c - (c - bdxtail);
alo = bdxtail - ahi;
c = splitter * cdytail;
bhi = c - (c - cdytail);
blo = cdytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdxtail * bdytail;
c = splitter * cdxtail;
ahi = c - (c - cdxtail);
alo = cdxtail - ahi;
c = splitter * bdytail;
bhi = c - (c - bdytail);
blo = bdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);
bctt[3] = u3;
bcttlen = 4;
} else {
bct[0] = 0;
bctlen = 1;
bctt[0] = 0;
bcttlen = 1;
}
if (adxtail !== 0) {
const len = scale(bctlen, bct, adxtail, _16c);
finlen = finadd(finlen, sum(
scale(axtbclen, axtbc, adxtail, _16), _16,
scale(len, _16c, 2 * adx, _32), _32, _48), _48);
const len2 = scale(bcttlen, bctt, adxtail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * adx, _16), _16,
scale(len2, _8, adxtail, _16b), _16b,
scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);
if (bdytail !== 0) {
finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);
}
if (cdytail !== 0) {
finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);
}
}
if (adytail !== 0) {
const len = scale(bctlen, bct, adytail, _16c);
finlen = finadd(finlen, sum(
scale(aytbclen, aytbc, adytail, _16), _16,
scale(len, _16c, 2 * ady, _32), _32, _48), _48);
const len2 = scale(bcttlen, bctt, adytail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * ady, _16), _16,
scale(len2, _8, adytail, _16b), _16b,
scale(len, _16c, adytail, _32), _32, _32b, _64), _64);
}
}
if (bdxtail !== 0 || bdytail !== 0) {
if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {
s1 = cdxtail * ady;
c = splitter * cdxtail;
ahi = c - (c - cdxtail);
alo = cdxtail - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdx * adytail;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * adytail;
bhi = c - (c - adytail);
blo = adytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
n1 = -cdy;
n0 = -cdytail;
s1 = adxtail * n1;
c = splitter * adxtail;
ahi = c - (c - adxtail);
alo = adxtail - ahi;
c = splitter * n1;
bhi = c - (c - n1);
blo = n1 - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adx * n0;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * n0;
bhi = c - (c - n0);
blo = n0 - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
v[3] = u3;
catlen = sum(4, u, 4, v, cat);
s1 = cdxtail * adytail;
c = splitter * cdxtail;
ahi = c - (c - cdxtail);
alo = cdxtail - ahi;
c = splitter * adytail;
bhi = c - (c - adytail);
blo = adytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adxtail * cdytail;
c = splitter * adxtail;
ahi = c - (c - adxtail);
alo = adxtail - ahi;
c = splitter * cdytail;
bhi = c - (c - cdytail);
blo = cdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
catt[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
catt[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
catt[2] = _j - (u3 - bvirt) + (_i - bvirt);
catt[3] = u3;
cattlen = 4;
} else {
cat[0] = 0;
catlen = 1;
catt[0] = 0;
cattlen = 1;
}
if (bdxtail !== 0) {
const len = scale(catlen, cat, bdxtail, _16c);
finlen = finadd(finlen, sum(
scale(bxtcalen, bxtca, bdxtail, _16), _16,
scale(len, _16c, 2 * bdx, _32), _32, _48), _48);
const len2 = scale(cattlen, catt, bdxtail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * bdx, _16), _16,
scale(len2, _8, bdxtail, _16b), _16b,
scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);
if (cdytail !== 0) {
finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);
}
if (adytail !== 0) {
finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);
}
}
if (bdytail !== 0) {
const len = scale(catlen, cat, bdytail, _16c);
finlen = finadd(finlen, sum(
scale(bytcalen, bytca, bdytail, _16), _16,
scale(len, _16c, 2 * bdy, _32), _32, _48), _48);
const len2 = scale(cattlen, catt, bdytail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * bdy, _16), _16,
scale(len2, _8, bdytail, _16b), _16b,
scale(len, _16c, bdytail, _32), _32, _32b, _64), _64);
}
}
if (cdxtail !== 0 || cdytail !== 0) {
if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {
s1 = adxtail * bdy;
c = splitter * adxtail;
ahi = c - (c - adxtail);
alo = adxtail - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adx * bdytail;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * bdytail;
bhi = c - (c - bdytail);
blo = bdytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
n1 = -ady;
n0 = -adytail;
s1 = bdxtail * n1;
c = splitter * bdxtail;
ahi = c - (c - bdxtail);
alo = bdxtail - ahi;
c = splitter * n1;
bhi = c - (c - n1);
blo = n1 - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdx * n0;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * n0;
bhi = c - (c - n0);
blo = n0 - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 + t0;
bvirt = _i - s0;
v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 + t1;
bvirt = _i - _0;
v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
u3 = _j + _i;
bvirt = u3 - _j;
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
v[3] = u3;
abtlen = sum(4, u, 4, v, abt);
s1 = adxtail * bdytail;
c = splitter * adxtail;
ahi = c - (c - adxtail);
alo = adxtail - ahi;
c = splitter * bdytail;
bhi = c - (c - bdytail);
blo = bdytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdxtail * adytail;
c = splitter * bdxtail;
ahi = c - (c - bdxtail);
alo = bdxtail - ahi;
c = splitter * adytail;
bhi = c - (c - adytail);
blo = adytail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);
abtt[3] = u3;
abttlen = 4;
} else {
abt[0] = 0;
abtlen = 1;
abtt[0] = 0;
abttlen = 1;
}
if (cdxtail !== 0) {
const len = scale(abtlen, abt, cdxtail, _16c);
finlen = finadd(finlen, sum(
scale(cxtablen, cxtab, cdxtail, _16), _16,
scale(len, _16c, 2 * cdx, _32), _32, _48), _48);
const len2 = scale(abttlen, abtt, cdxtail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * cdx, _16), _16,
scale(len2, _8, cdxtail, _16b), _16b,
scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);
if (adytail !== 0) {
finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);
}
if (bdytail !== 0) {
finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);
}
}
if (cdytail !== 0) {
const len = scale(abtlen, abt, cdytail, _16c);
finlen = finadd(finlen, sum(
scale(cytablen, cytab, cdytail, _16), _16,
scale(len, _16c, 2 * cdy, _32), _32, _48), _48);
const len2 = scale(abttlen, abtt, cdytail, _8);
finlen = finadd(finlen, sum_three(
scale(len2, _8, 2 * cdy, _16), _16,
scale(len2, _8, cdytail, _16b), _16b,
scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);
}
}
return fin[finlen - 1];
}
function incircle(ax, ay, bx, by, cx, cy, dx, dy) {
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
const bdxcdy = bdx * cdy;
const cdxbdy = cdx * bdy;
const alift = adx * adx + ady * ady;
const cdxady = cdx * ady;
const adxcdy = adx * cdy;
const blift = bdx * bdx + bdy * bdy;
const adxbdy = adx * bdy;
const bdxady = bdx * ady;
const clift = cdx * cdx + cdy * cdy;
const det =
alift * (bdxcdy - cdxbdy) +
blift * (cdxady - adxcdy) +
clift * (adxbdy - bdxady);
const permanent =
(Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +
(Math.abs(cdxady) + Math.abs(adxcdy)) * blift +
(Math.abs(adxbdy) + Math.abs(bdxady)) * clift;
const errbound = iccerrboundA * permanent;
if (det > errbound || -det > errbound) {
return det;
}
return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);
}
function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {
const adx = ax - dx;
const ady = ay - dy;
const bdx = bx - dx;
const bdy = by - dy;
const cdx = cx - dx;
const cdy = cy - dy;
const abdet = adx * bdy - bdx * ady;
const bcdet = bdx * cdy - cdx * bdy;
const cadet = cdx * ady - adx * cdy;
const alift = adx * adx + ady * ady;
const blift = bdx * bdx + bdy * bdy;
const clift = cdx * cdx + cdy * cdy;
return alift * bcdet + blift * cadet + clift * abdet;
}
exports.incircle = incircle;
exports.incirclefast = incirclefast;
Object.defineProperty(exports, '__esModule', { value: true });
})));

1
node_modules/robust-predicates/umd/incircle.min.js generated vendored Normal file

File diff suppressed because one or more lines are too long

925
node_modules/robust-predicates/umd/insphere.js generated vendored Normal file
View File

@@ -0,0 +1,925 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {}));
}(this, (function (exports) { 'use strict';
const epsilon = 1.1102230246251565e-16;
const splitter = 134217729;
const resulterrbound = (3 + 8 * epsilon) * epsilon;
// fast_expansion_sum_zeroelim routine from oritinal code
function sum(elen, e, flen, f, h) {
let Q, Qnew, hh, bvirt;
let enow = e[0];
let fnow = f[0];
let eindex = 0;
let findex = 0;
if ((fnow > enow) === (fnow > -enow)) {
Q = enow;
enow = e[++eindex];
} else {
Q = fnow;
fnow = f[++findex];
}
let hindex = 0;
if (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = enow + Q;
hh = Q - (Qnew - enow);
enow = e[++eindex];
} else {
Qnew = fnow + Q;
hh = Q - (Qnew - fnow);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
while (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
} else {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
}
while (eindex < elen) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
while (findex < flen) {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
if (Q !== 0 || hindex === 0) {
h[hindex++] = Q;
}
return hindex;
}
function sum_three(alen, a, blen, b, clen, c, tmp, out) {
return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);
}
// scale_expansion_zeroelim routine from oritinal code
function scale(elen, e, b, h) {
let Q, sum, hh, product1, product0;
let bvirt, c, ahi, alo, bhi, blo;
c = splitter * b;
bhi = c - (c - b);
blo = b - bhi;
let enow = e[0];
Q = enow * b;
c = splitter * enow;
ahi = c - (c - enow);
alo = enow - ahi;
hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);
let hindex = 0;
if (hh !== 0) {
h[hindex++] = hh;
}
for (let i = 1; i < elen; i++) {
enow = e[i];
product1 = enow * b;
c = splitter * enow;
ahi = c - (c - enow);
alo = enow - ahi;
product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);
sum = Q + product0;
bvirt = sum - Q;
hh = Q - (sum - bvirt) + (product0 - bvirt);
if (hh !== 0) {
h[hindex++] = hh;
}
Q = product1 + sum;
hh = sum - (Q - product1);
if (hh !== 0) {
h[hindex++] = hh;
}
}
if (Q !== 0 || hindex === 0) {
h[hindex++] = Q;
}
return hindex;
}
function negate(elen, e) {
for (let i = 0; i < elen; i++) e[i] = -e[i];
return elen;
}
function estimate(elen, e) {
let Q = e[0];
for (let i = 1; i < elen; i++) Q += e[i];
return Q;
}
function vec(n) {
return new Float64Array(n);
}
const isperrboundA = (16 + 224 * epsilon) * epsilon;
const isperrboundB = (5 + 72 * epsilon) * epsilon;
const isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;
const ab = vec(4);
const bc = vec(4);
const cd = vec(4);
const de = vec(4);
const ea = vec(4);
const ac = vec(4);
const bd = vec(4);
const ce = vec(4);
const da = vec(4);
const eb = vec(4);
const abc = vec(24);
const bcd = vec(24);
const cde = vec(24);
const dea = vec(24);
const eab = vec(24);
const abd = vec(24);
const bce = vec(24);
const cda = vec(24);
const deb = vec(24);
const eac = vec(24);
const adet = vec(1152);
const bdet = vec(1152);
const cdet = vec(1152);
const ddet = vec(1152);
const edet = vec(1152);
const abdet = vec(2304);
const cddet = vec(2304);
const cdedet = vec(3456);
const deter = vec(5760);
const _8 = vec(8);
const _8b = vec(8);
const _8c = vec(8);
const _16 = vec(16);
const _24 = vec(24);
const _48 = vec(48);
const _48b = vec(48);
const _96 = vec(96);
const _192 = vec(192);
const _384x = vec(384);
const _384y = vec(384);
const _384z = vec(384);
const _768 = vec(768);
function sum_three_scale(a, b, c, az, bz, cz, out) {
return sum_three(
scale(4, a, az, _8), _8,
scale(4, b, bz, _8b), _8b,
scale(4, c, cz, _8c), _8c, _16, out);
}
function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {
const len = sum(
sum(alen, a, blen, b, _48), _48,
negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);
return sum_three(
scale(scale(len, _96, x, _192), _192, x, _384x), _384x,
scale(scale(len, _96, y, _192), _192, y, _384y), _384y,
scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);
}
function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
s1 = ax * by;
c = splitter * ax;
ahi = c - (c - ax);
alo = ax - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bx * ay;
c = splitter * bx;
ahi = c - (c - bx);
alo = bx - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
ab[3] = u3;
s1 = bx * cy;
c = splitter * bx;
ahi = c - (c - bx);
alo = bx - ahi;
c = splitter * cy;
bhi = c - (c - cy);
blo = cy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cx * by;
c = splitter * cx;
ahi = c - (c - cx);
alo = cx - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
bc[3] = u3;
s1 = cx * dy;
c = splitter * cx;
ahi = c - (c - cx);
alo = cx - ahi;
c = splitter * dy;
bhi = c - (c - dy);
blo = dy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = dx * cy;
c = splitter * dx;
ahi = c - (c - dx);
alo = dx - ahi;
c = splitter * cy;
bhi = c - (c - cy);
blo = cy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
cd[2] = _j - (u3 - bvirt) + (_i - bvirt);
cd[3] = u3;
s1 = dx * ey;
c = splitter * dx;
ahi = c - (c - dx);
alo = dx - ahi;
c = splitter * ey;
bhi = c - (c - ey);
blo = ey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ex * dy;
c = splitter * ex;
ahi = c - (c - ex);
alo = ex - ahi;
c = splitter * dy;
bhi = c - (c - dy);
blo = dy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
de[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
de[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
de[2] = _j - (u3 - bvirt) + (_i - bvirt);
de[3] = u3;
s1 = ex * ay;
c = splitter * ex;
ahi = c - (c - ex);
alo = ex - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ax * ey;
c = splitter * ax;
ahi = c - (c - ax);
alo = ax - ahi;
c = splitter * ey;
bhi = c - (c - ey);
blo = ey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ea[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ea[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ea[2] = _j - (u3 - bvirt) + (_i - bvirt);
ea[3] = u3;
s1 = ax * cy;
c = splitter * ax;
ahi = c - (c - ax);
alo = ax - ahi;
c = splitter * cy;
bhi = c - (c - cy);
blo = cy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cx * ay;
c = splitter * cx;
ahi = c - (c - cx);
alo = cx - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ac[2] = _j - (u3 - bvirt) + (_i - bvirt);
ac[3] = u3;
s1 = bx * dy;
c = splitter * bx;
ahi = c - (c - bx);
alo = bx - ahi;
c = splitter * dy;
bhi = c - (c - dy);
blo = dy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = dx * by;
c = splitter * dx;
ahi = c - (c - dx);
alo = dx - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bd[2] = _j - (u3 - bvirt) + (_i - bvirt);
bd[3] = u3;
s1 = cx * ey;
c = splitter * cx;
ahi = c - (c - cx);
alo = cx - ahi;
c = splitter * ey;
bhi = c - (c - ey);
blo = ey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ex * cy;
c = splitter * ex;
ahi = c - (c - ex);
alo = ex - ahi;
c = splitter * cy;
bhi = c - (c - cy);
blo = cy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ce[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ce[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ce[2] = _j - (u3 - bvirt) + (_i - bvirt);
ce[3] = u3;
s1 = dx * ay;
c = splitter * dx;
ahi = c - (c - dx);
alo = dx - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ax * dy;
c = splitter * ax;
ahi = c - (c - ax);
alo = ax - ahi;
c = splitter * dy;
bhi = c - (c - dy);
blo = dy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
da[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
da[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
da[2] = _j - (u3 - bvirt) + (_i - bvirt);
da[3] = u3;
s1 = ex * by;
c = splitter * ex;
ahi = c - (c - ex);
alo = ex - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bx * ey;
c = splitter * bx;
ahi = c - (c - bx);
alo = bx - ahi;
c = splitter * ey;
bhi = c - (c - ey);
blo = ey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
eb[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
eb[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
eb[2] = _j - (u3 - bvirt) + (_i - bvirt);
eb[3] = u3;
const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);
const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);
const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);
const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);
const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);
const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);
const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);
const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);
const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);
const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);
const deterlen = sum_three(
liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,
liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,
sum_three(
liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,
liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,
liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);
return deter[deterlen - 1];
}
const xdet = vec(96);
const ydet = vec(96);
const zdet = vec(96);
const fin = vec(1152);
function liftadapt(a, b, c, az, bz, cz, x, y, z, out) {
const len = sum_three_scale(a, b, c, az, bz, cz, _24);
return sum_three(
scale(scale(len, _24, x, _48), _48, x, xdet), xdet,
scale(scale(len, _24, y, _48), _48, y, ydet), ydet,
scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);
}
function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {
let ab3, bc3, cd3, da3, ac3, bd3;
let aextail, bextail, cextail, dextail;
let aeytail, beytail, ceytail, deytail;
let aeztail, beztail, ceztail, deztail;
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;
const aex = ax - ex;
const bex = bx - ex;
const cex = cx - ex;
const dex = dx - ex;
const aey = ay - ey;
const bey = by - ey;
const cey = cy - ey;
const dey = dy - ey;
const aez = az - ez;
const bez = bz - ez;
const cez = cz - ez;
const dez = dz - ez;
s1 = aex * bey;
c = splitter * aex;
ahi = c - (c - aex);
alo = aex - ahi;
c = splitter * bey;
bhi = c - (c - bey);
blo = bey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bex * aey;
c = splitter * bex;
ahi = c - (c - bex);
alo = bex - ahi;
c = splitter * aey;
bhi = c - (c - aey);
blo = aey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
ab3 = _j + _i;
bvirt = ab3 - _j;
ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);
ab[3] = ab3;
s1 = bex * cey;
c = splitter * bex;
ahi = c - (c - bex);
alo = bex - ahi;
c = splitter * cey;
bhi = c - (c - cey);
blo = cey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cex * bey;
c = splitter * cex;
ahi = c - (c - cex);
alo = cex - ahi;
c = splitter * bey;
bhi = c - (c - bey);
blo = bey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
bc3 = _j + _i;
bvirt = bc3 - _j;
bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);
bc[3] = bc3;
s1 = cex * dey;
c = splitter * cex;
ahi = c - (c - cex);
alo = cex - ahi;
c = splitter * dey;
bhi = c - (c - dey);
blo = dey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = dex * cey;
c = splitter * dex;
ahi = c - (c - dex);
alo = dex - ahi;
c = splitter * cey;
bhi = c - (c - cey);
blo = cey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
cd3 = _j + _i;
bvirt = cd3 - _j;
cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);
cd[3] = cd3;
s1 = dex * aey;
c = splitter * dex;
ahi = c - (c - dex);
alo = dex - ahi;
c = splitter * aey;
bhi = c - (c - aey);
blo = aey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = aex * dey;
c = splitter * aex;
ahi = c - (c - aex);
alo = aex - ahi;
c = splitter * dey;
bhi = c - (c - dey);
blo = dey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
da[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
da[1] = _0 - (_i + bvirt) + (bvirt - t1);
da3 = _j + _i;
bvirt = da3 - _j;
da[2] = _j - (da3 - bvirt) + (_i - bvirt);
da[3] = da3;
s1 = aex * cey;
c = splitter * aex;
ahi = c - (c - aex);
alo = aex - ahi;
c = splitter * cey;
bhi = c - (c - cey);
blo = cey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cex * aey;
c = splitter * cex;
ahi = c - (c - cex);
alo = cex - ahi;
c = splitter * aey;
bhi = c - (c - aey);
blo = aey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
ac3 = _j + _i;
bvirt = ac3 - _j;
ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);
ac[3] = ac3;
s1 = bex * dey;
c = splitter * bex;
ahi = c - (c - bex);
alo = bex - ahi;
c = splitter * dey;
bhi = c - (c - dey);
blo = dey - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = dex * bey;
c = splitter * dex;
ahi = c - (c - dex);
alo = dex - ahi;
c = splitter * bey;
bhi = c - (c - bey);
blo = bey - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
bd3 = _j + _i;
bvirt = bd3 - _j;
bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);
bd[3] = bd3;
const finlen = sum(
sum(
negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,
liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,
sum(
negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,
liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);
let det = estimate(finlen, fin);
let errbound = isperrboundB * permanent;
if (det >= errbound || -det >= errbound) {
return det;
}
bvirt = ax - aex;
aextail = ax - (aex + bvirt) + (bvirt - ex);
bvirt = ay - aey;
aeytail = ay - (aey + bvirt) + (bvirt - ey);
bvirt = az - aez;
aeztail = az - (aez + bvirt) + (bvirt - ez);
bvirt = bx - bex;
bextail = bx - (bex + bvirt) + (bvirt - ex);
bvirt = by - bey;
beytail = by - (bey + bvirt) + (bvirt - ey);
bvirt = bz - bez;
beztail = bz - (bez + bvirt) + (bvirt - ez);
bvirt = cx - cex;
cextail = cx - (cex + bvirt) + (bvirt - ex);
bvirt = cy - cey;
ceytail = cy - (cey + bvirt) + (bvirt - ey);
bvirt = cz - cez;
ceztail = cz - (cez + bvirt) + (bvirt - ez);
bvirt = dx - dex;
dextail = dx - (dex + bvirt) + (bvirt - ex);
bvirt = dy - dey;
deytail = dy - (dey + bvirt) + (bvirt - ey);
bvirt = dz - dez;
deztail = dz - (dez + bvirt) + (bvirt - ez);
if (aextail === 0 && aeytail === 0 && aeztail === 0 &&
bextail === 0 && beytail === 0 && beztail === 0 &&
cextail === 0 && ceytail === 0 && ceztail === 0 &&
dextail === 0 && deytail === 0 && deztail === 0) {
return det;
}
errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);
const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);
const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);
const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);
const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);
const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);
const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);
det +=
(((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +
(ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *
((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -
((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +
(beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *
((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +
2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +
(dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -
((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +
(cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));
if (det >= errbound || -det >= errbound) {
return det;
}
return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);
}
function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
const aex = ax - ex;
const bex = bx - ex;
const cex = cx - ex;
const dex = dx - ex;
const aey = ay - ey;
const bey = by - ey;
const cey = cy - ey;
const dey = dy - ey;
const aez = az - ez;
const bez = bz - ez;
const cez = cz - ez;
const dez = dz - ez;
const aexbey = aex * bey;
const bexaey = bex * aey;
const ab = aexbey - bexaey;
const bexcey = bex * cey;
const cexbey = cex * bey;
const bc = bexcey - cexbey;
const cexdey = cex * dey;
const dexcey = dex * cey;
const cd = cexdey - dexcey;
const dexaey = dex * aey;
const aexdey = aex * dey;
const da = dexaey - aexdey;
const aexcey = aex * cey;
const cexaey = cex * aey;
const ac = aexcey - cexaey;
const bexdey = bex * dey;
const dexbey = dex * bey;
const bd = bexdey - dexbey;
const abc = aez * bc - bez * ac + cez * ab;
const bcd = bez * cd - cez * bd + dez * bc;
const cda = cez * da + dez * ac + aez * cd;
const dab = dez * ab + aez * bd + bez * da;
const alift = aex * aex + aey * aey + aez * aez;
const blift = bex * bex + bey * bey + bez * bez;
const clift = cex * cex + cey * cey + cez * cez;
const dlift = dex * dex + dey * dey + dez * dez;
const det = (clift * dab - dlift * abc) + (alift * bcd - blift * cda);
const aezplus = Math.abs(aez);
const bezplus = Math.abs(bez);
const cezplus = Math.abs(cez);
const dezplus = Math.abs(dez);
const aexbeyplus = Math.abs(aexbey);
const bexaeyplus = Math.abs(bexaey);
const bexceyplus = Math.abs(bexcey);
const cexbeyplus = Math.abs(cexbey);
const cexdeyplus = Math.abs(cexdey);
const dexceyplus = Math.abs(dexcey);
const dexaeyplus = Math.abs(dexaey);
const aexdeyplus = Math.abs(aexdey);
const aexceyplus = Math.abs(aexcey);
const cexaeyplus = Math.abs(cexaey);
const bexdeyplus = Math.abs(bexdey);
const dexbeyplus = Math.abs(dexbey);
const permanent =
((cexdeyplus + dexceyplus) * bezplus + (dexbeyplus + bexdeyplus) * cezplus + (bexceyplus + cexbeyplus) * dezplus) * alift +
((dexaeyplus + aexdeyplus) * cezplus + (aexceyplus + cexaeyplus) * dezplus + (cexdeyplus + dexceyplus) * aezplus) * blift +
((aexbeyplus + bexaeyplus) * dezplus + (bexdeyplus + dexbeyplus) * aezplus + (dexaeyplus + aexdeyplus) * bezplus) * clift +
((bexceyplus + cexbeyplus) * aezplus + (cexaeyplus + aexceyplus) * bezplus + (aexbeyplus + bexaeyplus) * cezplus) * dlift;
const errbound = isperrboundA * permanent;
if (det > errbound || -det > errbound) {
return det;
}
return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);
}
function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {
const aex = pax - pex;
const bex = pbx - pex;
const cex = pcx - pex;
const dex = pdx - pex;
const aey = pay - pey;
const bey = pby - pey;
const cey = pcy - pey;
const dey = pdy - pey;
const aez = paz - pez;
const bez = pbz - pez;
const cez = pcz - pez;
const dez = pdz - pez;
const ab = aex * bey - bex * aey;
const bc = bex * cey - cex * bey;
const cd = cex * dey - dex * cey;
const da = dex * aey - aex * dey;
const ac = aex * cey - cex * aey;
const bd = bex * dey - dex * bey;
const abc = aez * bc - bez * ac + cez * ab;
const bcd = bez * cd - cez * bd + dez * bc;
const cda = cez * da + dez * ac + aez * cd;
const dab = dez * ab + aez * bd + bez * da;
const alift = aex * aex + aey * aey + aez * aez;
const blift = bex * bex + bey * bey + bez * bez;
const clift = cex * cex + cey * cey + cez * cez;
const dlift = dex * dex + dey * dey + dez * dez;
return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);
}
exports.insphere = insphere;
exports.inspherefast = inspherefast;
Object.defineProperty(exports, '__esModule', { value: true });
})));

1
node_modules/robust-predicates/umd/insphere.min.js generated vendored Normal file

File diff suppressed because one or more lines are too long

284
node_modules/robust-predicates/umd/orient2d.js generated vendored Normal file
View File

@@ -0,0 +1,284 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {}));
}(this, (function (exports) { 'use strict';
const epsilon = 1.1102230246251565e-16;
const splitter = 134217729;
const resulterrbound = (3 + 8 * epsilon) * epsilon;
// fast_expansion_sum_zeroelim routine from oritinal code
function sum(elen, e, flen, f, h) {
let Q, Qnew, hh, bvirt;
let enow = e[0];
let fnow = f[0];
let eindex = 0;
let findex = 0;
if ((fnow > enow) === (fnow > -enow)) {
Q = enow;
enow = e[++eindex];
} else {
Q = fnow;
fnow = f[++findex];
}
let hindex = 0;
if (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = enow + Q;
hh = Q - (Qnew - enow);
enow = e[++eindex];
} else {
Qnew = fnow + Q;
hh = Q - (Qnew - fnow);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
while (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
} else {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
}
while (eindex < elen) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
while (findex < flen) {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
if (Q !== 0 || hindex === 0) {
h[hindex++] = Q;
}
return hindex;
}
function estimate(elen, e) {
let Q = e[0];
for (let i = 1; i < elen; i++) Q += e[i];
return Q;
}
function vec(n) {
return new Float64Array(n);
}
const ccwerrboundA = (3 + 16 * epsilon) * epsilon;
const ccwerrboundB = (2 + 12 * epsilon) * epsilon;
const ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;
const B = vec(4);
const C1 = vec(8);
const C2 = vec(12);
const D = vec(16);
const u = vec(4);
function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
let acxtail, acytail, bcxtail, bcytail;
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
const acx = ax - cx;
const bcx = bx - cx;
const acy = ay - cy;
const bcy = by - cy;
s1 = acx * bcy;
c = splitter * acx;
ahi = c - (c - acx);
alo = acx - ahi;
c = splitter * bcy;
bhi = c - (c - bcy);
blo = bcy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = acy * bcx;
c = splitter * acy;
ahi = c - (c - acy);
alo = acy - ahi;
c = splitter * bcx;
bhi = c - (c - bcx);
blo = bcx - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
B[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
B[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
B[2] = _j - (u3 - bvirt) + (_i - bvirt);
B[3] = u3;
let det = estimate(4, B);
let errbound = ccwerrboundB * detsum;
if (det >= errbound || -det >= errbound) {
return det;
}
bvirt = ax - acx;
acxtail = ax - (acx + bvirt) + (bvirt - cx);
bvirt = bx - bcx;
bcxtail = bx - (bcx + bvirt) + (bvirt - cx);
bvirt = ay - acy;
acytail = ay - (acy + bvirt) + (bvirt - cy);
bvirt = by - bcy;
bcytail = by - (bcy + bvirt) + (bvirt - cy);
if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {
return det;
}
errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);
det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);
if (det >= errbound || -det >= errbound) return det;
s1 = acxtail * bcy;
c = splitter * acxtail;
ahi = c - (c - acxtail);
alo = acxtail - ahi;
c = splitter * bcy;
bhi = c - (c - bcy);
blo = bcy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = acytail * bcx;
c = splitter * acytail;
ahi = c - (c - acytail);
alo = acytail - ahi;
c = splitter * bcx;
bhi = c - (c - bcx);
blo = bcx - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
const C1len = sum(4, B, 4, u, C1);
s1 = acx * bcytail;
c = splitter * acx;
ahi = c - (c - acx);
alo = acx - ahi;
c = splitter * bcytail;
bhi = c - (c - bcytail);
blo = bcytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = acy * bcxtail;
c = splitter * acy;
ahi = c - (c - acy);
alo = acy - ahi;
c = splitter * bcxtail;
bhi = c - (c - bcxtail);
blo = bcxtail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
const C2len = sum(C1len, C1, 4, u, C2);
s1 = acxtail * bcytail;
c = splitter * acxtail;
ahi = c - (c - acxtail);
alo = acxtail - ahi;
c = splitter * bcytail;
bhi = c - (c - bcytail);
blo = bcytail - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = acytail * bcxtail;
c = splitter * acytail;
ahi = c - (c - acytail);
alo = acytail - ahi;
c = splitter * bcxtail;
bhi = c - (c - bcxtail);
blo = bcxtail - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
u[3] = u3;
const Dlen = sum(C2len, C2, 4, u, D);
return D[Dlen - 1];
}
function orient2d(ax, ay, bx, by, cx, cy) {
const detleft = (ay - cy) * (bx - cx);
const detright = (ax - cx) * (by - cy);
const det = detleft - detright;
if (detleft === 0 || detright === 0 || (detleft > 0) !== (detright > 0)) return det;
const detsum = Math.abs(detleft + detright);
if (Math.abs(det) >= ccwerrboundA * detsum) return det;
return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);
}
function orient2dfast(ax, ay, bx, by, cx, cy) {
return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);
}
exports.orient2d = orient2d;
exports.orient2dfast = orient2dfast;
Object.defineProperty(exports, '__esModule', { value: true });
})));

1
node_modules/robust-predicates/umd/orient2d.min.js generated vendored Normal file
View File

@@ -0,0 +1 @@
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).predicates={})}(this,(function(t){"use strict";const e=134217729;function n(t,e,n,o,r){let f,i,u,s,c=e[0],l=o[0],a=0,d=0;l>c==l>-c?(f=c,c=e[++a]):(f=l,l=o[++d]);let p=0;if(a<t&&d<n)for(l>c==l>-c?(i=c+f,u=f-(i-c),c=e[++a]):(i=l+f,u=f-(i-l),l=o[++d]),f=i,0!==u&&(r[p++]=u);a<t&&d<n;)l>c==l>-c?(i=f+c,s=i-f,u=f-(i-s)+(c-s),c=e[++a]):(i=f+l,s=i-f,u=f-(i-s)+(l-s),l=o[++d]),f=i,0!==u&&(r[p++]=u);for(;a<t;)i=f+c,s=i-f,u=f-(i-s)+(c-s),c=e[++a],f=i,0!==u&&(r[p++]=u);for(;d<n;)i=f+l,s=i-f,u=f-(i-s)+(l-s),l=o[++d],f=i,0!==u&&(r[p++]=u);return 0===f&&0!==p||(r[p++]=f),p}function o(t){return new Float64Array(t)}const r=o(4),f=o(8),i=o(12),u=o(16),s=o(4);t.orient2d=function(t,o,c,l,a,d){const p=(o-d)*(c-a),b=(t-a)*(l-d),h=p-b;if(0===p||0===b||p>0!=b>0)return h;const y=Math.abs(p+b);return Math.abs(h)>=33306690738754716e-32*y?h:-function(t,o,c,l,a,d,p){let b,h,y,M,x,g,j,m,T,_,v,w,A,F,O,P,k,q;const z=t-a,B=c-a,C=o-d,D=l-d;F=z*D,g=e*z,j=g-(g-z),m=z-j,g=e*D,T=g-(g-D),_=D-T,O=m*_-(F-j*T-m*T-j*_),P=C*B,g=e*C,j=g-(g-C),m=C-j,g=e*B,T=g-(g-B),_=B-T,k=m*_-(P-j*T-m*T-j*_),v=O-k,x=O-v,r[0]=O-(v+x)+(x-k),w=F+v,x=w-F,A=F-(w-x)+(v-x),v=A-P,x=A-v,r[1]=A-(v+x)+(x-P),q=w+v,x=q-w,r[2]=w-(q-x)+(v-x),r[3]=q;let E=function(t,e){let n=e[0];for(let o=1;o<t;o++)n+=e[o];return n}(4,r),G=22204460492503146e-32*p;if(E>=G||-E>=G)return E;if(x=t-z,b=t-(z+x)+(x-a),x=c-B,y=c-(B+x)+(x-a),x=o-C,h=o-(C+x)+(x-d),x=l-D,M=l-(D+x)+(x-d),0===b&&0===h&&0===y&&0===M)return E;if(G=11093356479670487e-47*p+33306690738754706e-32*Math.abs(E),E+=z*M+D*b-(C*y+B*h),E>=G||-E>=G)return E;F=b*D,g=e*b,j=g-(g-b),m=b-j,g=e*D,T=g-(g-D),_=D-T,O=m*_-(F-j*T-m*T-j*_),P=h*B,g=e*h,j=g-(g-h),m=h-j,g=e*B,T=g-(g-B),_=B-T,k=m*_-(P-j*T-m*T-j*_),v=O-k,x=O-v,s[0]=O-(v+x)+(x-k),w=F+v,x=w-F,A=F-(w-x)+(v-x),v=A-P,x=A-v,s[1]=A-(v+x)+(x-P),q=w+v,x=q-w,s[2]=w-(q-x)+(v-x),s[3]=q;const H=n(4,r,4,s,f);F=z*M,g=e*z,j=g-(g-z),m=z-j,g=e*M,T=g-(g-M),_=M-T,O=m*_-(F-j*T-m*T-j*_),P=C*y,g=e*C,j=g-(g-C),m=C-j,g=e*y,T=g-(g-y),_=y-T,k=m*_-(P-j*T-m*T-j*_),v=O-k,x=O-v,s[0]=O-(v+x)+(x-k),w=F+v,x=w-F,A=F-(w-x)+(v-x),v=A-P,x=A-v,s[1]=A-(v+x)+(x-P),q=w+v,x=q-w,s[2]=w-(q-x)+(v-x),s[3]=q;const I=n(H,f,4,s,i);F=b*M,g=e*b,j=g-(g-b),m=b-j,g=e*M,T=g-(g-M),_=M-T,O=m*_-(F-j*T-m*T-j*_),P=h*y,g=e*h,j=g-(g-h),m=h-j,g=e*y,T=g-(g-y),_=y-T,k=m*_-(P-j*T-m*T-j*_),v=O-k,x=O-v,s[0]=O-(v+x)+(x-k),w=F+v,x=w-F,A=F-(w-x)+(v-x),v=A-P,x=A-v,s[1]=A-(v+x)+(x-P),q=w+v,x=q-w,s[2]=w-(q-x)+(v-x),s[3]=q;const J=n(I,i,4,s,u);return u[J-1]}(t,o,c,l,a,d,y)},t.orient2dfast=function(t,e,n,o,r,f){return(e-f)*(n-r)-(t-r)*(o-f)},Object.defineProperty(t,"__esModule",{value:!0})}));

603
node_modules/robust-predicates/umd/orient3d.js generated vendored Normal file
View File

@@ -0,0 +1,603 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {}));
}(this, (function (exports) { 'use strict';
const epsilon = 1.1102230246251565e-16;
const splitter = 134217729;
const resulterrbound = (3 + 8 * epsilon) * epsilon;
// fast_expansion_sum_zeroelim routine from oritinal code
function sum(elen, e, flen, f, h) {
let Q, Qnew, hh, bvirt;
let enow = e[0];
let fnow = f[0];
let eindex = 0;
let findex = 0;
if ((fnow > enow) === (fnow > -enow)) {
Q = enow;
enow = e[++eindex];
} else {
Q = fnow;
fnow = f[++findex];
}
let hindex = 0;
if (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = enow + Q;
hh = Q - (Qnew - enow);
enow = e[++eindex];
} else {
Qnew = fnow + Q;
hh = Q - (Qnew - fnow);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
while (eindex < elen && findex < flen) {
if ((fnow > enow) === (fnow > -enow)) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
} else {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
}
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
}
while (eindex < elen) {
Qnew = Q + enow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (enow - bvirt);
enow = e[++eindex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
while (findex < flen) {
Qnew = Q + fnow;
bvirt = Qnew - Q;
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
fnow = f[++findex];
Q = Qnew;
if (hh !== 0) {
h[hindex++] = hh;
}
}
if (Q !== 0 || hindex === 0) {
h[hindex++] = Q;
}
return hindex;
}
// scale_expansion_zeroelim routine from oritinal code
function scale(elen, e, b, h) {
let Q, sum, hh, product1, product0;
let bvirt, c, ahi, alo, bhi, blo;
c = splitter * b;
bhi = c - (c - b);
blo = b - bhi;
let enow = e[0];
Q = enow * b;
c = splitter * enow;
ahi = c - (c - enow);
alo = enow - ahi;
hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);
let hindex = 0;
if (hh !== 0) {
h[hindex++] = hh;
}
for (let i = 1; i < elen; i++) {
enow = e[i];
product1 = enow * b;
c = splitter * enow;
ahi = c - (c - enow);
alo = enow - ahi;
product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);
sum = Q + product0;
bvirt = sum - Q;
hh = Q - (sum - bvirt) + (product0 - bvirt);
if (hh !== 0) {
h[hindex++] = hh;
}
Q = product1 + sum;
hh = sum - (Q - product1);
if (hh !== 0) {
h[hindex++] = hh;
}
}
if (Q !== 0 || hindex === 0) {
h[hindex++] = Q;
}
return hindex;
}
function estimate(elen, e) {
let Q = e[0];
for (let i = 1; i < elen; i++) Q += e[i];
return Q;
}
function vec(n) {
return new Float64Array(n);
}
const o3derrboundA = (7 + 56 * epsilon) * epsilon;
const o3derrboundB = (3 + 28 * epsilon) * epsilon;
const o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;
const bc = vec(4);
const ca = vec(4);
const ab = vec(4);
const at_b = vec(4);
const at_c = vec(4);
const bt_c = vec(4);
const bt_a = vec(4);
const ct_a = vec(4);
const ct_b = vec(4);
const bct = vec(8);
const cat = vec(8);
const abt = vec(8);
const u = vec(4);
const _8 = vec(8);
const _8b = vec(8);
const _16 = vec(8);
const _12 = vec(12);
let fin = vec(192);
let fin2 = vec(192);
function finadd(finlen, alen, a) {
finlen = sum(finlen, fin, alen, a, fin2);
const tmp = fin; fin = fin2; fin2 = tmp;
return finlen;
}
function tailinit(xtail, ytail, ax, ay, bx, by, a, b) {
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3, negate;
if (xtail === 0) {
if (ytail === 0) {
a[0] = 0;
b[0] = 0;
return 1;
} else {
negate = -ytail;
s1 = negate * ax;
c = splitter * negate;
ahi = c - (c - negate);
alo = negate - ahi;
c = splitter * ax;
bhi = c - (c - ax);
blo = ax - bhi;
a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
a[1] = s1;
s1 = ytail * bx;
c = splitter * ytail;
ahi = c - (c - ytail);
alo = ytail - ahi;
c = splitter * bx;
bhi = c - (c - bx);
blo = bx - bhi;
b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
b[1] = s1;
return 2;
}
} else {
if (ytail === 0) {
s1 = xtail * ay;
c = splitter * xtail;
ahi = c - (c - xtail);
alo = xtail - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
a[1] = s1;
negate = -xtail;
s1 = negate * by;
c = splitter * negate;
ahi = c - (c - negate);
alo = negate - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
b[1] = s1;
return 2;
} else {
s1 = xtail * ay;
c = splitter * xtail;
ahi = c - (c - xtail);
alo = xtail - ahi;
c = splitter * ay;
bhi = c - (c - ay);
blo = ay - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = ytail * ax;
c = splitter * ytail;
ahi = c - (c - ytail);
alo = ytail - ahi;
c = splitter * ax;
bhi = c - (c - ax);
blo = ax - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
a[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
a[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
a[2] = _j - (u3 - bvirt) + (_i - bvirt);
a[3] = u3;
s1 = ytail * bx;
c = splitter * ytail;
ahi = c - (c - ytail);
alo = ytail - ahi;
c = splitter * bx;
bhi = c - (c - bx);
blo = bx - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = xtail * by;
c = splitter * xtail;
ahi = c - (c - xtail);
alo = xtail - ahi;
c = splitter * by;
bhi = c - (c - by);
blo = by - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
b[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
b[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
b[2] = _j - (u3 - bvirt) + (_i - bvirt);
b[3] = u3;
return 4;
}
}
}
function tailadd(finlen, a, b, k, z) {
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;
s1 = a * b;
c = splitter * a;
ahi = c - (c - a);
alo = a - ahi;
c = splitter * b;
bhi = c - (c - b);
blo = b - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
c = splitter * k;
bhi = c - (c - k);
blo = k - bhi;
_i = s0 * k;
c = splitter * s0;
ahi = c - (c - s0);
alo = s0 - ahi;
u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
_j = s1 * k;
c = splitter * s1;
ahi = c - (c - s1);
alo = s1 - ahi;
_0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
_k = _i + _0;
bvirt = _k - _i;
u[1] = _i - (_k - bvirt) + (_0 - bvirt);
u3 = _j + _k;
u[2] = _k - (u3 - _j);
u[3] = u3;
finlen = finadd(finlen, 4, u);
if (z !== 0) {
c = splitter * z;
bhi = c - (c - z);
blo = z - bhi;
_i = s0 * z;
c = splitter * s0;
ahi = c - (c - s0);
alo = s0 - ahi;
u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
_j = s1 * z;
c = splitter * s1;
ahi = c - (c - s1);
alo = s1 - ahi;
_0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
_k = _i + _0;
bvirt = _k - _i;
u[1] = _i - (_k - bvirt) + (_0 - bvirt);
u3 = _j + _k;
u[2] = _k - (u3 - _j);
u[3] = u3;
finlen = finadd(finlen, 4, u);
}
return finlen;
}
function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {
let finlen;
let adxtail, bdxtail, cdxtail;
let adytail, bdytail, cdytail;
let adztail, bdztail, cdztail;
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
const adz = az - dz;
const bdz = bz - dz;
const cdz = cz - dz;
s1 = bdx * cdy;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = cdx * bdy;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
bc[3] = u3;
s1 = cdx * ady;
c = splitter * cdx;
ahi = c - (c - cdx);
alo = cdx - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = adx * cdy;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * cdy;
bhi = c - (c - cdy);
blo = cdy - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ca[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ca[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ca[2] = _j - (u3 - bvirt) + (_i - bvirt);
ca[3] = u3;
s1 = adx * bdy;
c = splitter * adx;
ahi = c - (c - adx);
alo = adx - ahi;
c = splitter * bdy;
bhi = c - (c - bdy);
blo = bdy - bhi;
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
t1 = bdx * ady;
c = splitter * bdx;
ahi = c - (c - bdx);
alo = bdx - ahi;
c = splitter * ady;
bhi = c - (c - ady);
blo = ady - bhi;
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
_i = s0 - t0;
bvirt = s0 - _i;
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
_j = s1 + _i;
bvirt = _j - s1;
_0 = s1 - (_j - bvirt) + (_i - bvirt);
_i = _0 - t1;
bvirt = _0 - _i;
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
u3 = _j + _i;
bvirt = u3 - _j;
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
ab[3] = u3;
finlen = sum(
sum(
scale(4, bc, adz, _8), _8,
scale(4, ca, bdz, _8b), _8b, _16), _16,
scale(4, ab, cdz, _8), _8, fin);
let det = estimate(finlen, fin);
let errbound = o3derrboundB * permanent;
if (det >= errbound || -det >= errbound) {
return det;
}
bvirt = ax - adx;
adxtail = ax - (adx + bvirt) + (bvirt - dx);
bvirt = bx - bdx;
bdxtail = bx - (bdx + bvirt) + (bvirt - dx);
bvirt = cx - cdx;
cdxtail = cx - (cdx + bvirt) + (bvirt - dx);
bvirt = ay - ady;
adytail = ay - (ady + bvirt) + (bvirt - dy);
bvirt = by - bdy;
bdytail = by - (bdy + bvirt) + (bvirt - dy);
bvirt = cy - cdy;
cdytail = cy - (cdy + bvirt) + (bvirt - dy);
bvirt = az - adz;
adztail = az - (adz + bvirt) + (bvirt - dz);
bvirt = bz - bdz;
bdztail = bz - (bdz + bvirt) + (bvirt - dz);
bvirt = cz - cdz;
cdztail = cz - (cdz + bvirt) + (bvirt - dz);
if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&
adytail === 0 && bdytail === 0 && cdytail === 0 &&
adztail === 0 && bdztail === 0 && cdztail === 0) {
return det;
}
errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);
det +=
adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +
bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +
cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);
if (det >= errbound || -det >= errbound) {
return det;
}
const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);
const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);
const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);
const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);
finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);
const catlen = sum(ct_len, ct_a, at_len, at_c, cat);
finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);
const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);
finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);
if (adztail !== 0) {
finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);
finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);
}
if (bdztail !== 0) {
finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);
finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);
}
if (cdztail !== 0) {
finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);
finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);
}
if (adxtail !== 0) {
if (bdytail !== 0) {
finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);
}
if (cdytail !== 0) {
finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);
}
}
if (bdxtail !== 0) {
if (cdytail !== 0) {
finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);
}
if (adytail !== 0) {
finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);
}
}
if (cdxtail !== 0) {
if (adytail !== 0) {
finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);
}
if (bdytail !== 0) {
finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);
}
}
return fin[finlen - 1];
}
function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
const adz = az - dz;
const bdz = bz - dz;
const cdz = cz - dz;
const bdxcdy = bdx * cdy;
const cdxbdy = cdx * bdy;
const cdxady = cdx * ady;
const adxcdy = adx * cdy;
const adxbdy = adx * bdy;
const bdxady = bdx * ady;
const det =
adz * (bdxcdy - cdxbdy) +
bdz * (cdxady - adxcdy) +
cdz * (adxbdy - bdxady);
const 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);
const errbound = o3derrboundA * permanent;
if (det > errbound || -det > errbound) {
return det;
}
return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);
}
function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {
const adx = ax - dx;
const bdx = bx - dx;
const cdx = cx - dx;
const ady = ay - dy;
const bdy = by - dy;
const cdy = cy - dy;
const adz = az - dz;
const bdz = bz - dz;
const cdz = cz - dz;
return adx * (bdy * cdz - bdz * cdy) +
bdx * (cdy * adz - cdz * ady) +
cdx * (ady * bdz - adz * bdy);
}
exports.orient3d = orient3d;
exports.orient3dfast = orient3dfast;
Object.defineProperty(exports, '__esModule', { value: true });
})));

1
node_modules/robust-predicates/umd/orient3d.min.js generated vendored Normal file

File diff suppressed because one or more lines are too long

2341
node_modules/robust-predicates/umd/predicates.js generated vendored Normal file

File diff suppressed because it is too large Load Diff

1
node_modules/robust-predicates/umd/predicates.min.js generated vendored Normal file

File diff suppressed because one or more lines are too long