robust-predicates 2.0.2 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/incircle.js +388 -550
- package/esm/insphere.js +307 -488
- package/esm/orient2d.js +32 -53
- package/esm/orient3d.js +265 -798
- package/esm/util.js +23 -11
- package/index.d.ts +49 -0
- package/package.json +27 -21
- package/umd/incircle.js +408 -560
- package/umd/incircle.min.js +1 -1
- package/umd/insphere.js +330 -496
- package/umd/insphere.min.js +1 -1
- package/umd/orient2d.js +38 -55
- package/umd/orient2d.min.js +1 -1
- package/umd/orient3d.js +281 -808
- package/umd/orient3d.min.js +1 -1
- package/umd/predicates.js +1056 -1929
- package/umd/predicates.min.js +1 -1
package/esm/util.js
CHANGED
|
@@ -2,7 +2,8 @@ export const epsilon = 1.1102230246251565e-16;
|
|
|
2
2
|
export const splitter = 134217729;
|
|
3
3
|
export const resulterrbound = (3 + 8 * epsilon) * epsilon;
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// fast_expansion_sum_zeroelim routine from oritinal code
|
|
6
|
+
export function sum(elen, e, flen, f, h) {
|
|
6
7
|
let Q, Qnew, hh, bvirt;
|
|
7
8
|
let enow = e[0];
|
|
8
9
|
let fnow = f[0];
|
|
@@ -16,7 +17,7 @@ export function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
|
|
|
16
17
|
fnow = f[++findex];
|
|
17
18
|
}
|
|
18
19
|
let hindex = 0;
|
|
19
|
-
if (
|
|
20
|
+
if (eindex < elen && findex < flen) {
|
|
20
21
|
if ((fnow > enow) === (fnow > -enow)) {
|
|
21
22
|
Qnew = enow + Q;
|
|
22
23
|
hh = Q - (Qnew - enow);
|
|
@@ -30,7 +31,7 @@ export function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
|
|
|
30
31
|
if (hh !== 0) {
|
|
31
32
|
h[hindex++] = hh;
|
|
32
33
|
}
|
|
33
|
-
while (
|
|
34
|
+
while (eindex < elen && findex < flen) {
|
|
34
35
|
if ((fnow > enow) === (fnow > -enow)) {
|
|
35
36
|
Qnew = Q + enow;
|
|
36
37
|
bvirt = Qnew - Q;
|
|
@@ -74,24 +75,30 @@ export function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
|
|
|
74
75
|
return hindex;
|
|
75
76
|
}
|
|
76
77
|
|
|
77
|
-
export function
|
|
78
|
+
export function sum_three(alen, a, blen, b, clen, c, tmp, out) {
|
|
79
|
+
return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// scale_expansion_zeroelim routine from oritinal code
|
|
83
|
+
export function scale(elen, e, b, h) {
|
|
78
84
|
let Q, sum, hh, product1, product0;
|
|
79
85
|
let bvirt, c, ahi, alo, bhi, blo;
|
|
80
86
|
|
|
81
87
|
c = splitter * b;
|
|
82
88
|
bhi = c - (c - b);
|
|
83
89
|
blo = b - bhi;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
90
|
+
let enow = e[0];
|
|
91
|
+
Q = enow * b;
|
|
92
|
+
c = splitter * enow;
|
|
93
|
+
ahi = c - (c - enow);
|
|
94
|
+
alo = enow - ahi;
|
|
88
95
|
hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);
|
|
89
96
|
let hindex = 0;
|
|
90
97
|
if (hh !== 0) {
|
|
91
98
|
h[hindex++] = hh;
|
|
92
99
|
}
|
|
93
|
-
for (let
|
|
94
|
-
|
|
100
|
+
for (let i = 1; i < elen; i++) {
|
|
101
|
+
enow = e[i];
|
|
95
102
|
product1 = enow * b;
|
|
96
103
|
c = splitter * enow;
|
|
97
104
|
ahi = c - (c - enow);
|
|
@@ -109,12 +116,17 @@ export function scale_expansion_zeroelim(elen, e, b, h) {
|
|
|
109
116
|
h[hindex++] = hh;
|
|
110
117
|
}
|
|
111
118
|
}
|
|
112
|
-
if (Q !== 0
|
|
119
|
+
if (Q !== 0 || hindex === 0) {
|
|
113
120
|
h[hindex++] = Q;
|
|
114
121
|
}
|
|
115
122
|
return hindex;
|
|
116
123
|
}
|
|
117
124
|
|
|
125
|
+
export function negate(elen, e) {
|
|
126
|
+
for (let i = 0; i < elen; i++) e[i] = -e[i];
|
|
127
|
+
return elen;
|
|
128
|
+
}
|
|
129
|
+
|
|
118
130
|
export function estimate(elen, e) {
|
|
119
131
|
let Q = e[0];
|
|
120
132
|
for (let i = 1; i < elen; i++) Q += e[i];
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export as namespace predicates;
|
|
2
|
+
|
|
3
|
+
export function orient2d(
|
|
4
|
+
ax: number, ay: number,
|
|
5
|
+
bx: number, by: number,
|
|
6
|
+
cx: number, cy: number): number;
|
|
7
|
+
|
|
8
|
+
export function orient2dfast(
|
|
9
|
+
ax: number, ay: number,
|
|
10
|
+
bx: number, by: number,
|
|
11
|
+
cx: number, cy: number): number;
|
|
12
|
+
|
|
13
|
+
export function incircle(
|
|
14
|
+
ax: number, ay: number,
|
|
15
|
+
bx: number, by: number,
|
|
16
|
+
cx: number, cy: number,
|
|
17
|
+
dx: number, dy: number): number;
|
|
18
|
+
|
|
19
|
+
export function incirclefast(
|
|
20
|
+
ax: number, ay: number,
|
|
21
|
+
bx: number, by: number,
|
|
22
|
+
cx: number, cy: number,
|
|
23
|
+
dx: number, dy: number): number;
|
|
24
|
+
|
|
25
|
+
export function orient3d(
|
|
26
|
+
ax: number, ay: number, az: number,
|
|
27
|
+
bx: number, by: number, bz: number,
|
|
28
|
+
cx: number, cy: number, cz: number,
|
|
29
|
+
dx: number, dy: number, dz: number): number;
|
|
30
|
+
|
|
31
|
+
export function orient3dfast(
|
|
32
|
+
ax: number, ay: number, az: number,
|
|
33
|
+
bx: number, by: number, bz: number,
|
|
34
|
+
cx: number, cy: number, cz: number,
|
|
35
|
+
dx: number, dy: number, dz: number): number;
|
|
36
|
+
|
|
37
|
+
export function insphere(
|
|
38
|
+
ax: number, ay: number, az: number,
|
|
39
|
+
bx: number, by: number, bz: number,
|
|
40
|
+
cx: number, cy: number, cz: number,
|
|
41
|
+
dx: number, dy: number, dz: number,
|
|
42
|
+
ex: number, ey: number, ez: number): number;
|
|
43
|
+
|
|
44
|
+
export function inspherefast(
|
|
45
|
+
ax: number, ay: number, az: number,
|
|
46
|
+
bx: number, by: number, bz: number,
|
|
47
|
+
cx: number, cy: number, cz: number,
|
|
48
|
+
dx: number, dy: number, dz: number,
|
|
49
|
+
ex: number, ey: number, ez: number): number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "robust-predicates",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "Fast robust predicates for computational geometry",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"computational geometry",
|
|
@@ -8,46 +8,55 @@
|
|
|
8
8
|
],
|
|
9
9
|
"author": "Vladimir Agafonkin",
|
|
10
10
|
"license": "Unlicense",
|
|
11
|
-
"
|
|
11
|
+
"type": "module",
|
|
12
|
+
"main": "index.js",
|
|
12
13
|
"unpkg": "umd/predicates.min.js",
|
|
13
14
|
"module": "index.js",
|
|
15
|
+
"exports": "./index.js",
|
|
14
16
|
"types": "index.d.ts",
|
|
15
17
|
"scripts": {
|
|
16
18
|
"build": "mkdirp esm && node compile.js",
|
|
17
19
|
"lint": "eslint *.js src test/test.js",
|
|
18
|
-
"test": "npm run lint && npm run build && node
|
|
19
|
-
"cov": "
|
|
20
|
-
"bench": "node
|
|
20
|
+
"test": "npm run lint && npm run build && node test/test.js",
|
|
21
|
+
"cov": "c8 node test/test.js",
|
|
22
|
+
"bench": "node bench.js",
|
|
21
23
|
"prepublishOnly": "npm run test && rollup -c"
|
|
22
24
|
},
|
|
23
25
|
"devDependencies": {
|
|
24
|
-
"
|
|
26
|
+
"c8": "^7.7.0",
|
|
27
|
+
"eslint": "^7.23.0",
|
|
25
28
|
"eslint-config-mourner": "^3.0.0",
|
|
26
|
-
"
|
|
27
|
-
"mkdirp": "^0.5.1",
|
|
29
|
+
"mkdirp": "^1.0.4",
|
|
28
30
|
"nextafter": "^1.0.0",
|
|
29
|
-
"nyc": "^14.1.1",
|
|
30
31
|
"robust-in-sphere": "^1.1.3",
|
|
31
32
|
"robust-orientation": "^1.1.3",
|
|
32
|
-
"rollup": "^
|
|
33
|
-
"rollup-plugin-terser": "^
|
|
34
|
-
"tape": "^
|
|
35
|
-
"terser": "^
|
|
33
|
+
"rollup": "^2.44.0",
|
|
34
|
+
"rollup-plugin-terser": "^7.0.2",
|
|
35
|
+
"tape": "^5.2.2",
|
|
36
|
+
"terser": "^5.6.1"
|
|
36
37
|
},
|
|
37
38
|
"files": [
|
|
38
39
|
"index.js",
|
|
40
|
+
"index.d.ts",
|
|
39
41
|
"esm",
|
|
40
42
|
"umd"
|
|
41
43
|
],
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "https://github.com/mourner/robust-predicates.git"
|
|
47
|
+
},
|
|
42
48
|
"eslintConfig": {
|
|
43
49
|
"extends": "mourner",
|
|
50
|
+
"parserOptions": {
|
|
51
|
+
"ecmaVersion": 2020
|
|
52
|
+
},
|
|
44
53
|
"rules": {
|
|
45
54
|
"camelcase": 0,
|
|
46
55
|
"new-cap": 0,
|
|
47
56
|
"no-unused-vars": [
|
|
48
57
|
2,
|
|
49
58
|
{
|
|
50
|
-
"varsIgnorePattern": "splitter|bvirt|c|[ab]hi|[ab]lo|_[ijk0]"
|
|
59
|
+
"varsIgnorePattern": "splitter|bvirt|c|[ab]hi|[ab]lo|_[ijk0]|u3|[st][01]"
|
|
51
60
|
}
|
|
52
61
|
],
|
|
53
62
|
"no-lonely-if": 0
|
|
@@ -56,16 +65,13 @@
|
|
|
56
65
|
"$Fast_Two_Sum": false,
|
|
57
66
|
"$Two_Sum": false,
|
|
58
67
|
"$Two_Diff_Tail": false,
|
|
59
|
-
"$Two_Diff": false,
|
|
60
68
|
"$Split": false,
|
|
61
69
|
"$Two_Product": false,
|
|
62
70
|
"$Two_Product_Presplit": false,
|
|
63
|
-
"$
|
|
64
|
-
"$
|
|
65
|
-
"$
|
|
66
|
-
"$
|
|
67
|
-
"$Two_Two_Diff": false,
|
|
68
|
-
"$Two_One_Product": false
|
|
71
|
+
"$Two_One_Product": false,
|
|
72
|
+
"$Cross_Product": false,
|
|
73
|
+
"$Square_Sum": false,
|
|
74
|
+
"$Two_Product_Sum": false
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
77
|
}
|