@thi.ng/geom-splines 1.0.5 → 2.0.4

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/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [1.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@1.0.4...@thi.ng/geom-splines@1.0.5) (2021-09-03)
6
+ ## [2.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@2.0.3...@thi.ng/geom-splines@2.0.4) (2021-10-25)
7
7
 
8
8
  **Note:** Version bump only for package @thi.ng/geom-splines
9
9
 
@@ -11,50 +11,102 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
11
11
 
12
12
 
13
13
 
14
- # [0.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.4.5...@thi.ng/geom-splines@0.5.0) (2020-02-25)
14
+ ## [2.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@2.0.2...@thi.ng/geom-splines@2.0.3) (2021-10-15)
15
+
16
+ **Note:** Version bump only for package @thi.ng/geom-splines
17
+
18
+
19
+
20
+
21
+
22
+ ## [2.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@2.0.1...@thi.ng/geom-splines@2.0.2) (2021-10-15)
23
+
24
+ **Note:** Version bump only for package @thi.ng/geom-splines
25
+
26
+
27
+
28
+
29
+
30
+ ## [2.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@2.0.0...@thi.ng/geom-splines@2.0.1) (2021-10-13)
31
+
32
+ **Note:** Version bump only for package @thi.ng/geom-splines
33
+
34
+
35
+
36
+
37
+
38
+ # [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@1.0.5...@thi.ng/geom-splines@2.0.0) (2021-10-12)
39
+
40
+
41
+ ### Build System
42
+
43
+ * major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea9fab2a645d6c5f2bf2591459b939c09b6))
44
+
45
+
46
+ ### BREAKING CHANGES
47
+
48
+ * discontinue CommonJS & UMD versions
49
+
50
+ - only ESM modules will be published from now on
51
+ - CJS obsolete due to ESM support in recent versions of node:
52
+ - i.e. launch NodeJS via:
53
+ - `node --experimental-specifier-resolution=node --experimental-repl-await`
54
+ - in the node REPL use `await import(...)` instead of `require()`
55
+ - UMD obsolete due to widespread browser support for ESM
56
+
57
+ Also:
58
+ - normalize/restructure/reorg all package.json files
59
+ - cleanup all build scripts, remove obsolete
60
+ - switch from mocha to @thi.ng/testament for all tests
61
+
62
+
63
+
15
64
 
16
65
 
17
- ### Features
18
66
 
19
- * **geom-splines:** add openCubicFromBreakPoints(), refactor, [#208](https://github.com/thi-ng/umbrella/issues/208) ([1882262](https://github.com/thi-ng/umbrella/commit/188226216099a33b6251540b497ce8fd946502d8))
20
- * **geom-splines:** add openCubicFromControlPoints(), [#208](https://github.com/thi-ng/umbrella/issues/208) ([1a95d94](https://github.com/thi-ng/umbrella/commit/1a95d94df2396e14247cca84d3add7385d74a693))
21
- * **geom-splines:** add sampleCubicArray(), sampleQuadraticArray(), [#208](https://github.com/thi-ng/umbrella/issues/208) ([bfc09db](https://github.com/thi-ng/umbrella/commit/bfc09db2493d50576c9f57a93273a3bd102b7ad8))
67
+ ## [1.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@1.0.4...@thi.ng/geom-splines@1.0.5) (2021-09-03)
22
68
 
69
+ **Note:** Version bump only for package @thi.ng/geom-splines
23
70
 
71
+ # [0.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.4.5...@thi.ng/geom-splines@0.5.0) (2020-02-25)
24
72
 
73
+ ### Features
25
74
 
75
+ - **geom-splines:** add openCubicFromBreakPoints(), refactor, [#208](https://github.com/thi-ng/umbrella/issues/208) ([1882262](https://github.com/thi-ng/umbrella/commit/188226216099a33b6251540b497ce8fd946502d8))
76
+ - **geom-splines:** add openCubicFromControlPoints(), [#208](https://github.com/thi-ng/umbrella/issues/208) ([1a95d94](https://github.com/thi-ng/umbrella/commit/1a95d94df2396e14247cca84d3add7385d74a693))
77
+ - **geom-splines:** add sampleCubicArray(), sampleQuadraticArray(), [#208](https://github.com/thi-ng/umbrella/issues/208) ([bfc09db](https://github.com/thi-ng/umbrella/commit/bfc09db2493d50576c9f57a93273a3bd102b7ad8))
26
78
 
27
- # [0.4.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.3.4...@thi.ng/geom-splines@0.4.0) (2019-08-21)
79
+ # [0.4.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.3.4...@thi.ng/geom-splines@0.4.0) (2019-08-21)
28
80
 
29
- ### Features
81
+ ### Features
30
82
 
31
- * **geom-splines:** add cubicTangentAt / quadraticTangentAt() ([e1cf355](https://github.com/thi-ng/umbrella/commit/e1cf355))
83
+ - **geom-splines:** add cubicTangentAt / quadraticTangentAt() ([e1cf355](https://github.com/thi-ng/umbrella/commit/e1cf355))
32
84
 
33
- ## [0.3.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.3.0...@thi.ng/geom-splines@0.3.1) (2019-07-31)
85
+ ## [0.3.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.3.0...@thi.ng/geom-splines@0.3.1) (2019-07-31)
34
86
 
35
- ### Bug Fixes
87
+ ### Bug Fixes
36
88
 
37
- * **geom-splines:** fix seg count in cubicFromArc(), minor optimizations ([e289ade](https://github.com/thi-ng/umbrella/commit/e289ade))
89
+ - **geom-splines:** fix seg count in cubicFromArc(), minor optimizations ([e289ade](https://github.com/thi-ng/umbrella/commit/e289ade))
38
90
 
39
- # [0.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.2.1...@thi.ng/geom-splines@0.3.0) (2019-07-12)
91
+ # [0.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.2.1...@thi.ng/geom-splines@0.3.0) (2019-07-12)
40
92
 
41
- ### Bug Fixes
93
+ ### Bug Fixes
42
94
 
43
- * **geom-splines:** add full circle check for cubicFromArc() ([3e386f7](https://github.com/thi-ng/umbrella/commit/3e386f7))
44
- * **geom-splines:** fix [#100](https://github.com/thi-ng/umbrella/issues/100), replace cubicBounds impl ([6c64b88](https://github.com/thi-ng/umbrella/commit/6c64b88))
95
+ - **geom-splines:** add full circle check for cubicFromArc() ([3e386f7](https://github.com/thi-ng/umbrella/commit/3e386f7))
96
+ - **geom-splines:** fix [#100](https://github.com/thi-ng/umbrella/issues/100), replace cubicBounds impl ([6c64b88](https://github.com/thi-ng/umbrella/commit/6c64b88))
45
97
 
46
- ### Features
98
+ ### Features
47
99
 
48
- * **geom-splines:** add closedCubicFromBreak/ControlPoints, update readme ([1284f37](https://github.com/thi-ng/umbrella/commit/1284f37))
100
+ - **geom-splines:** add closedCubicFromBreak/ControlPoints, update readme ([1284f37](https://github.com/thi-ng/umbrella/commit/1284f37))
49
101
 
50
- # [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.1.17...@thi.ng/geom-splines@0.2.0) (2019-07-07)
102
+ # [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.1.17...@thi.ng/geom-splines@0.2.0) (2019-07-07)
51
103
 
52
- ### Features
104
+ ### Features
53
105
 
54
- * **geom-splines:** enable TS strict compiler flags (refactor) ([748417b](https://github.com/thi-ng/umbrella/commit/748417b))
106
+ - **geom-splines:** enable TS strict compiler flags (refactor) ([748417b](https://github.com/thi-ng/umbrella/commit/748417b))
55
107
 
56
- # 0.1.0 (2019-02-05)
108
+ # 0.1.0 (2019-02-05)
57
109
 
58
- ### Features
110
+ ### Features
59
111
 
60
- * **geom-splines:** extract from geom as new package ([027150a](https://github.com/thi-ng/umbrella/commit/027150a))
112
+ - **geom-splines:** extract from geom as new package ([027150a](https://github.com/thi-ng/umbrella/commit/027150a))
package/README.md CHANGED
@@ -46,15 +46,24 @@ Current implementations partially based on
46
46
  yarn add @thi.ng/geom-splines
47
47
  ```
48
48
 
49
+ ES module import:
50
+
49
51
  ```html
50
- // ES module
51
- <script type="module" src="https://unpkg.com/@thi.ng/geom-splines?module" crossorigin></script>
52
+ <script type="module" src="https://cdn.skypack.dev/@thi.ng/geom-splines"></script>
53
+ ```
54
+
55
+ [Skypack documentation](https://docs.skypack.dev/)
56
+
57
+ For Node.js REPL:
58
+
59
+ ```text
60
+ # with flag only for < v16
61
+ node --experimental-repl-await
52
62
 
53
- // UMD
54
- <script src="https://unpkg.com/@thi.ng/geom-splines/lib/index.umd.js" crossorigin></script>
63
+ > const geomSplines = await import("@thi.ng/geom-splines");
55
64
  ```
56
65
 
57
- Package sizes (gzipped, pre-treeshake): ESM: 2.18 KB / CJS: 2.30 KB / UMD: 2.28 KB
66
+ Package sizes (gzipped, pre-treeshake): ESM: 2.32 KB
58
67
 
59
68
  ## Dependencies
60
69
 
package/cubic-arc.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ReadonlyVec, Vec } from "@thi.ng/vectors";
1
+ import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
2
2
  /**
3
3
  * Converts elliptic arc into a 1-4 cubic curve segments, depending on
4
4
  * arc's angle range.
package/cubic-arc.js CHANGED
@@ -1,7 +1,9 @@
1
- import { pointAtTheta } from "@thi.ng/geom-arc";
2
- import { EPS, HALF_PI, PI, roundEps, sincos } from "@thi.ng/math";
3
- import { magSq2 } from "@thi.ng/vectors";
4
- import { cubicFromLine } from "./cubic-line";
1
+ import { pointAtTheta } from "@thi.ng/geom-arc/point-at";
2
+ import { sincos } from "@thi.ng/math/angle";
3
+ import { EPS, HALF_PI, PI } from "@thi.ng/math/api";
4
+ import { roundEps } from "@thi.ng/math/prec";
5
+ import { magSq2 } from "@thi.ng/vectors/magsq";
6
+ import { cubicFromLine } from "./cubic-line.js";
5
7
  /**
6
8
  * Converts elliptic arc into a 1-4 cubic curve segments, depending on
7
9
  * arc's angle range.
package/cubic-bounds.js CHANGED
@@ -1,4 +1,4 @@
1
- import { mixCubic } from "@thi.ng/math";
1
+ import { mixCubic } from "@thi.ng/math/mix";
2
2
  /**
3
3
  * Computes cubic spline bounds for a single vector component.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { ReadonlyVec, Vec } from "@thi.ng/vectors";
1
+ import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
2
2
  /**
3
3
  * Performs recursive search for closest point to `p` on cubic curve
4
4
  * defined by control points `a`,`b`,`c`,`d`. The `res` and `recur`
@@ -1,5 +1,6 @@
1
- import { minError } from "@thi.ng/math";
2
- import { distSq, mixCubic } from "@thi.ng/vectors";
1
+ import { minError } from "@thi.ng/math/min-error";
2
+ import { distSq } from "@thi.ng/vectors/distsq";
3
+ import { mixCubic } from "@thi.ng/vectors/mix-cubic";
3
4
  /**
4
5
  * Performs recursive search for closest point to `p` on cubic curve
5
6
  * defined by control points `a`,`b`,`c`,`d`. The `res` and `recur`
@@ -1,4 +1,4 @@
1
- import { ReadonlyVec, Vec } from "@thi.ng/vectors";
1
+ import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
2
2
  export declare const closedCubicFromBreakPoints: (points: ReadonlyVec[], t?: number, uniform?: boolean) => Vec[][];
3
3
  export declare const openCubicFromBreakPoints: (points: ReadonlyVec[], t?: number, uniform?: boolean) => Vec[][];
4
4
  //# sourceMappingURL=cubic-from-breakpoints.d.ts.map
@@ -1,4 +1,11 @@
1
- import { corner2, cornerBisector, direction, dist, maddN, mulN, perpendicularCW, set, } from "@thi.ng/vectors";
1
+ import { cornerBisector } from "@thi.ng/vectors/bisect";
2
+ import { corner2 } from "@thi.ng/vectors/clockwise";
3
+ import { direction } from "@thi.ng/vectors/direction";
4
+ import { dist } from "@thi.ng/vectors/dist";
5
+ import { maddN } from "@thi.ng/vectors/maddn";
6
+ import { mulN } from "@thi.ng/vectors/muln";
7
+ import { perpendicularCW } from "@thi.ng/vectors/perpendicular";
8
+ import { set } from "@thi.ng/vectors/set";
2
9
  const buildSegments = (tangents, t, uniform) => {
3
10
  const res = [];
4
11
  for (let i = 0, num = tangents.length - 1; i < num; i++) {
@@ -1,4 +1,4 @@
1
- import { ReadonlyVec, Vec } from "@thi.ng/vectors";
1
+ import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
2
2
  export declare const closedCubicFromControlPoints: (points: ReadonlyVec[], t?: number, uniform?: boolean) => Vec[][];
3
3
  export declare const openCubicFromControlPoints: (points: ReadonlyVec[], t?: number, uniform?: boolean) => Vec[][];
4
4
  //# sourceMappingURL=cubic-from-controlpoints.d.ts.map
@@ -1,4 +1,8 @@
1
- import { add, addmN, direction, mixN, set, } from "@thi.ng/vectors";
1
+ import { add } from "@thi.ng/vectors/add";
2
+ import { addmN } from "@thi.ng/vectors/addmn";
3
+ import { direction } from "@thi.ng/vectors/direction";
4
+ import { mixN } from "@thi.ng/vectors/mixn";
5
+ import { set } from "@thi.ng/vectors/set";
2
6
  const buildUniform = (segments, t) => {
3
7
  const res = [];
4
8
  for (let i = 0, n = segments.length - 2; i < n; i += 2) {
package/cubic-line.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { FnU2 } from "@thi.ng/api";
2
- import { Vec } from "@thi.ng/vectors";
2
+ import type { Vec } from "@thi.ng/vectors";
3
3
  /**
4
4
  * Converts line segment `a` -> `b` into a cubic curve, which when
5
5
  * sampled yields uniformly spaced points. The inner control points are
package/cubic-line.js CHANGED
@@ -1,4 +1,5 @@
1
- import { mixN, set } from "@thi.ng/vectors";
1
+ import { mixN } from "@thi.ng/vectors/mixn";
2
+ import { set } from "@thi.ng/vectors/set";
2
3
  /**
3
4
  * Converts line segment `a` -> `b` into a cubic curve, which when
4
5
  * sampled yields uniformly spaced points. The inner control points are
@@ -1,4 +1,4 @@
1
1
  import type { FnU3 } from "@thi.ng/api";
2
- import { Vec } from "@thi.ng/vectors";
2
+ import type { Vec } from "@thi.ng/vectors";
3
3
  export declare const cubicFromQuadratic: FnU3<Vec, Vec[]>;
4
4
  //# sourceMappingURL=cubic-quadratic.d.ts.map
@@ -1,4 +1,5 @@
1
- import { mixN, set } from "@thi.ng/vectors";
1
+ import { mixN } from "@thi.ng/vectors/mixn";
2
+ import { set } from "@thi.ng/vectors/set";
2
3
  export const cubicFromQuadratic = (a, b, c) => [
3
4
  set([], a),
4
5
  mixN([], a, b, 2 / 3),
package/cubic-sample.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export declare const sampleCubic: (pts: import("@thi.ng/vectors").ReadonlyVec[], opts?: number | Partial<import("@thi.ng/geom-api").SamplingOpts> | undefined) => import("@thi.ng/vectors").Vec[];
2
- export declare const sampleCubicArray: (segments: import("@thi.ng/vectors").ReadonlyVec[][], closed: boolean | undefined, opts: number | Partial<import("@thi.ng/geom-api").SamplingOpts>) => any[];
1
+ export declare const sampleCubic: (pts: import("@thi.ng/vectors").ReadonlyVec[], opts?: number | Partial<import("@thi.ng/geom-api/sample").SamplingOpts> | undefined) => import("@thi.ng/vectors").Vec[];
2
+ export declare const sampleCubicArray: (segments: import("@thi.ng/vectors").ReadonlyVec[][], closed: boolean | undefined, opts: number | Partial<import("@thi.ng/geom-api/sample").SamplingOpts>) => any[];
3
3
  //# sourceMappingURL=cubic-sample.d.ts.map
package/cubic-sample.js CHANGED
@@ -1,5 +1,5 @@
1
- import { mixCubic } from "@thi.ng/vectors";
2
- import { __sample, __sampleArray } from "./internal/sample";
1
+ import { mixCubic } from "@thi.ng/vectors/mix-cubic";
2
+ import { __sample, __sampleArray } from "./internal/sample.js";
3
3
  export const sampleCubic = __sample((res, [a, b, c, d], num) => {
4
4
  const delta = 1 / num;
5
5
  for (let t = 0; t < num; t++) {
package/cubic-split.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ReadonlyVec } from "@thi.ng/vectors";
1
+ import type { ReadonlyVec } from "@thi.ng/vectors";
2
2
  export declare const cubicSplitAt: (a: ReadonlyVec, b: ReadonlyVec, c: ReadonlyVec, d: ReadonlyVec, t: number) => import("@thi.ng/vectors").Vec[][];
3
3
  export declare const splitCubicNearPoint: (p: ReadonlyVec, a: ReadonlyVec, b: ReadonlyVec, c: ReadonlyVec, d: ReadonlyVec, res?: number | undefined, iter?: number | undefined) => import("@thi.ng/vectors").Vec[][];
4
4
  //# sourceMappingURL=cubic-split.d.ts.map
package/cubic-split.js CHANGED
@@ -1,5 +1,8 @@
1
- import { minError } from "@thi.ng/math";
2
- import { distSq, mixCubic, mixN, set } from "@thi.ng/vectors";
1
+ import { minError } from "@thi.ng/math/min-error";
2
+ import { distSq } from "@thi.ng/vectors/distsq";
3
+ import { mixCubic } from "@thi.ng/vectors/mix-cubic";
4
+ import { mixN } from "@thi.ng/vectors/mixn";
5
+ import { set } from "@thi.ng/vectors/set";
3
6
  export const cubicSplitAt = (a, b, c, d, t) => {
4
7
  if (t <= 0 || t >= 1) {
5
8
  const p = t <= 0 ? a : d;
@@ -1,3 +1,3 @@
1
- import { ReadonlyVec, Vec } from "@thi.ng/vectors";
1
+ import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
2
2
  export declare const cubicTangentAt: (out: Vec, a: ReadonlyVec, b: ReadonlyVec, c: ReadonlyVec, d: ReadonlyVec, t: number, len?: number) => Vec;
3
3
  //# sourceMappingURL=cubic-tangent.d.ts.map
package/cubic-tangent.js CHANGED
@@ -1,4 +1,5 @@
1
- import { addW4, normalize } from "@thi.ng/vectors";
1
+ import { addW4 } from "@thi.ng/vectors/addw";
2
+ import { normalize } from "@thi.ng/vectors/normalize";
2
3
  export const cubicTangentAt = (out, a, b, c, d, t, len = 1) => {
3
4
  const s = 1 - t;
4
5
  const ss = s * s;
package/index.d.ts CHANGED
@@ -1,18 +1,18 @@
1
- export * from "./cubic-arc";
2
- export * from "./cubic-bounds";
3
- export * from "./cubic-closest-point";
4
- export * from "./cubic-from-breakpoints";
5
- export * from "./cubic-from-controlpoints";
6
- export * from "./cubic-line";
7
- export * from "./cubic-quadratic";
8
- export * from "./cubic-sample";
9
- export * from "./cubic-split";
10
- export * from "./cubic-tangent";
11
- export * from "./quadratic-bounds";
12
- export * from "./quadratic-closest-point";
13
- export * from "./quadratic-line";
14
- export * from "./quadratic-sample";
15
- export * from "./quadratic-split";
16
- export * from "./quadratic-tangent";
17
- export * from "./point-at";
1
+ export * from "./cubic-arc.js";
2
+ export * from "./cubic-bounds.js";
3
+ export * from "./cubic-closest-point.js";
4
+ export * from "./cubic-from-breakpoints.js";
5
+ export * from "./cubic-from-controlpoints.js";
6
+ export * from "./cubic-line.js";
7
+ export * from "./cubic-quadratic.js";
8
+ export * from "./cubic-sample.js";
9
+ export * from "./cubic-split.js";
10
+ export * from "./cubic-tangent.js";
11
+ export * from "./quadratic-bounds.js";
12
+ export * from "./quadratic-closest-point.js";
13
+ export * from "./quadratic-line.js";
14
+ export * from "./quadratic-sample.js";
15
+ export * from "./quadratic-split.js";
16
+ export * from "./quadratic-tangent.js";
17
+ export * from "./point-at.js";
18
18
  //# sourceMappingURL=index.d.ts.map
package/index.js CHANGED
@@ -1,17 +1,17 @@
1
- export * from "./cubic-arc";
2
- export * from "./cubic-bounds";
3
- export * from "./cubic-closest-point";
4
- export * from "./cubic-from-breakpoints";
5
- export * from "./cubic-from-controlpoints";
6
- export * from "./cubic-line";
7
- export * from "./cubic-quadratic";
8
- export * from "./cubic-sample";
9
- export * from "./cubic-split";
10
- export * from "./cubic-tangent";
11
- export * from "./quadratic-bounds";
12
- export * from "./quadratic-closest-point";
13
- export * from "./quadratic-line";
14
- export * from "./quadratic-sample";
15
- export * from "./quadratic-split";
16
- export * from "./quadratic-tangent";
17
- export * from "./point-at";
1
+ export * from "./cubic-arc.js";
2
+ export * from "./cubic-bounds.js";
3
+ export * from "./cubic-closest-point.js";
4
+ export * from "./cubic-from-breakpoints.js";
5
+ export * from "./cubic-from-controlpoints.js";
6
+ export * from "./cubic-line.js";
7
+ export * from "./cubic-quadratic.js";
8
+ export * from "./cubic-sample.js";
9
+ export * from "./cubic-split.js";
10
+ export * from "./cubic-tangent.js";
11
+ export * from "./quadratic-bounds.js";
12
+ export * from "./quadratic-closest-point.js";
13
+ export * from "./quadratic-line.js";
14
+ export * from "./quadratic-sample.js";
15
+ export * from "./quadratic-split.js";
16
+ export * from "./quadratic-tangent.js";
17
+ export * from "./point-at.js";
@@ -1,6 +1,6 @@
1
- import { SamplingOpts } from "@thi.ng/geom-api";
2
- import { ReadonlyVec, Vec } from "@thi.ng/vectors";
3
- import type { Fn3, Fn2 } from "@thi.ng/api";
1
+ import type { Fn2, Fn3 } from "@thi.ng/api";
2
+ import { SamplingOpts } from "@thi.ng/geom-api/sample";
3
+ import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
4
4
  export declare const __sample: (sample: Fn3<Vec[], ReadonlyVec[], number, void>) => (pts: ReadonlyVec[], opts?: number | Partial<SamplingOpts> | undefined) => Vec[];
5
5
  export declare const __sampleArray: (fn: Fn2<ReadonlyVec[], Partial<SamplingOpts>, Vec[]>) => (segments: ReadonlyVec[][], closed: boolean | undefined, opts: number | Partial<SamplingOpts>) => any[];
6
6
  //# sourceMappingURL=sample.d.ts.map
@@ -1,7 +1,8 @@
1
- import { isNumber, isPlainObject } from "@thi.ng/checks";
2
- import { DEFAULT_SAMPLES } from "@thi.ng/geom-api";
3
- import { Sampler } from "@thi.ng/geom-resample";
4
- import { set } from "@thi.ng/vectors";
1
+ import { isNumber } from "@thi.ng/checks/is-number";
2
+ import { isPlainObject } from "@thi.ng/checks/is-plain-object";
3
+ import { DEFAULT_SAMPLES } from "@thi.ng/geom-api/sample";
4
+ import { Sampler } from "@thi.ng/geom-resample/sampler";
5
+ import { set } from "@thi.ng/vectors/set";
5
6
  export const __sample = (sample) => function $(pts, opts) {
6
7
  if (isPlainObject(opts) && opts.dist !== undefined) {
7
8
  return new Sampler($(pts, opts.num || DEFAULT_SAMPLES)).sampleUniform(opts.dist, opts.last !== false);
@@ -11,7 +12,10 @@ export const __sample = (sample) => function $(pts, opts) {
11
12
  num: opts,
12
13
  last: true,
13
14
  }
14
- : Object.assign({ num: DEFAULT_SAMPLES }, opts);
15
+ : {
16
+ num: DEFAULT_SAMPLES,
17
+ ...opts,
18
+ };
15
19
  const res = [];
16
20
  sample(res, pts, opts.num);
17
21
  opts.last && res.push(set([], pts[pts.length - 1]));
@@ -22,6 +26,6 @@ export const __sampleArray = (fn) => (segments, closed = false, opts) => {
22
26
  const n = segments.length - 1;
23
27
  return Array.prototype.concat.apply([], segments.map((seg, i) => {
24
28
  const last = !closed && i === n;
25
- return fn(seg, Object.assign(Object.assign({}, _opts), { last }));
29
+ return fn(seg, { ..._opts, last });
26
30
  }));
27
31
  };
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@thi.ng/geom-splines",
3
- "version": "1.0.5",
3
+ "version": "2.0.4",
4
4
  "description": "nD cubic & quadratic curve analysis, conversion, interpolation, splitting",
5
+ "type": "module",
5
6
  "module": "./index.js",
6
- "main": "./lib/index.js",
7
- "umd:main": "./lib/index.umd.js",
8
7
  "typings": "./index.d.ts",
8
+ "sideEffects": false,
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "https://github.com/thi-ng/umbrella.git"
@@ -24,34 +24,27 @@
24
24
  "author": "Karsten Schmidt <k+npm@thi.ng>",
25
25
  "license": "Apache-2.0",
26
26
  "scripts": {
27
- "build": "yarn clean && yarn build:es6 && node ../../scripts/bundle-module",
28
- "build:release": "yarn clean && yarn build:es6 && node ../../scripts/bundle-module all",
29
- "build:es6": "tsc --declaration",
30
- "build:test": "rimraf build && tsc -p test/tsconfig.json",
31
- "build:check": "tsc --isolatedModules --noEmit",
32
- "test": "mocha test",
33
- "cover": "nyc mocha test && nyc report --reporter=lcov",
34
- "clean": "rimraf *.js *.d.ts *.map .nyc_output build coverage doc lib internal",
35
- "doc:readme": "ts-node -P ../../tools/tsconfig.json ../../tools/src/readme.ts",
36
- "doc": "typedoc --excludePrivate --out doc --theme ../../tools/doc/typedoc-theme src/index.ts",
27
+ "build": "yarn clean && tsc --declaration",
28
+ "clean": "rimraf *.js *.d.ts *.map doc internal",
29
+ "doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
37
30
  "doc:ae": "mkdir -p .ae/doc .ae/temp && node_modules/.bin/api-extractor run --local --verbose",
38
- "pub": "yarn build:release && yarn publish --access public"
31
+ "doc:readme": "yarn doc:stats && ../../scripts/node-esm ../../tools/src/readme.ts",
32
+ "doc:stats": "../../scripts/node-esm ../../tools/src/module-stats.ts",
33
+ "pub": "yarn build && yarn publish --access public",
34
+ "test": "testament test"
39
35
  },
40
36
  "dependencies": {
41
- "@thi.ng/api": "^7.2.0",
42
- "@thi.ng/checks": "^2.9.11",
43
- "@thi.ng/geom-api": "^2.0.31",
44
- "@thi.ng/geom-arc": "^1.0.5",
45
- "@thi.ng/geom-resample": "^1.0.5",
46
- "@thi.ng/math": "^4.0.6",
47
- "@thi.ng/vectors": "^6.2.0"
37
+ "@thi.ng/api": "^8.0.4",
38
+ "@thi.ng/checks": "^3.0.4",
39
+ "@thi.ng/geom-api": "^3.0.4",
40
+ "@thi.ng/geom-arc": "^2.0.4",
41
+ "@thi.ng/geom-resample": "^2.0.4",
42
+ "@thi.ng/math": "^5.0.4",
43
+ "@thi.ng/vectors": "^7.0.4"
44
+ },
45
+ "devDependencies": {
46
+ "@thi.ng/testament": "^0.1.4"
48
47
  },
49
- "files": [
50
- "*.js",
51
- "*.d.ts",
52
- "lib",
53
- "internal"
54
- ],
55
48
  "keywords": [
56
49
  "2d",
57
50
  "3d",
@@ -76,12 +69,75 @@
76
69
  "publishConfig": {
77
70
  "access": "public"
78
71
  },
79
- "sideEffects": false,
72
+ "engines": {
73
+ "node": ">=12.7"
74
+ },
75
+ "files": [
76
+ "*.js",
77
+ "*.d.ts",
78
+ "internal"
79
+ ],
80
+ "exports": {
81
+ ".": {
82
+ "import": "./index.js"
83
+ },
84
+ "./cubic-arc": {
85
+ "import": "./cubic-arc.js"
86
+ },
87
+ "./cubic-bounds": {
88
+ "import": "./cubic-bounds.js"
89
+ },
90
+ "./cubic-closest-point": {
91
+ "import": "./cubic-closest-point.js"
92
+ },
93
+ "./cubic-from-breakpoints": {
94
+ "import": "./cubic-from-breakpoints.js"
95
+ },
96
+ "./cubic-from-controlpoints": {
97
+ "import": "./cubic-from-controlpoints.js"
98
+ },
99
+ "./cubic-line": {
100
+ "import": "./cubic-line.js"
101
+ },
102
+ "./cubic-quadratic": {
103
+ "import": "./cubic-quadratic.js"
104
+ },
105
+ "./cubic-sample": {
106
+ "import": "./cubic-sample.js"
107
+ },
108
+ "./cubic-split": {
109
+ "import": "./cubic-split.js"
110
+ },
111
+ "./cubic-tangent": {
112
+ "import": "./cubic-tangent.js"
113
+ },
114
+ "./point-at": {
115
+ "import": "./point-at.js"
116
+ },
117
+ "./quadratic-bounds": {
118
+ "import": "./quadratic-bounds.js"
119
+ },
120
+ "./quadratic-closest-point": {
121
+ "import": "./quadratic-closest-point.js"
122
+ },
123
+ "./quadratic-line": {
124
+ "import": "./quadratic-line.js"
125
+ },
126
+ "./quadratic-sample": {
127
+ "import": "./quadratic-sample.js"
128
+ },
129
+ "./quadratic-split": {
130
+ "import": "./quadratic-split.js"
131
+ },
132
+ "./quadratic-tangent": {
133
+ "import": "./quadratic-tangent.js"
134
+ }
135
+ },
80
136
  "thi.ng": {
81
137
  "parent": "@thi.ng/geom",
82
138
  "related": [
83
139
  "geom-subdiv-curve"
84
140
  ]
85
141
  },
86
- "gitHead": "d971cb3f9b215a95483f78f1a8614015e331146f"
142
+ "gitHead": "9ff00a103f76cc4917ef3f244132e218f2300a05"
87
143
  }
package/point-at.js CHANGED
@@ -1,4 +1,5 @@
1
- import { mixCubic, mixQuadratic } from "@thi.ng/vectors";
1
+ import { mixCubic } from "@thi.ng/vectors/mix-cubic";
2
+ import { mixQuadratic } from "@thi.ng/vectors/mix-quadratic";
2
3
  /**
3
4
  * Same as thi.ng/vectors/mixCubic
4
5
  */
@@ -1,4 +1,4 @@
1
1
  import type { FnU3 } from "@thi.ng/api";
2
- import { ReadonlyVec, VecPair } from "@thi.ng/vectors";
2
+ import type { ReadonlyVec, VecPair } from "@thi.ng/vectors";
3
3
  export declare const quadraticBounds: FnU3<ReadonlyVec, VecPair>;
4
4
  //# sourceMappingURL=quadratic-bounds.d.ts.map
@@ -1,5 +1,6 @@
1
- import { clamp01, inRange } from "@thi.ng/math";
2
- import { max, min } from "@thi.ng/vectors";
1
+ import { clamp01, inRange } from "@thi.ng/math/interval";
2
+ import { max } from "@thi.ng/vectors/max";
3
+ import { min } from "@thi.ng/vectors/min";
3
4
  const solveQuadratic = (a, b, c) => {
4
5
  const t = clamp01((a - b) / (a - 2.0 * b + c));
5
6
  const s = 1 - t;
@@ -1,4 +1,4 @@
1
- import { ReadonlyVec, Vec } from "@thi.ng/vectors";
1
+ import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
2
2
  /**
3
3
  * Performs recursive search for closest point to `p` on quadratic curve
4
4
  * defined by control points `a`,`b`,`c`. The `res` and `recur` params
@@ -1,5 +1,6 @@
1
- import { minError } from "@thi.ng/math";
2
- import { distSq, mixQuadratic } from "@thi.ng/vectors";
1
+ import { minError } from "@thi.ng/math/min-error";
2
+ import { distSq } from "@thi.ng/vectors/distsq";
3
+ import { mixQuadratic } from "@thi.ng/vectors/mix-quadratic";
3
4
  /**
4
5
  * Performs recursive search for closest point to `p` on quadratic curve
5
6
  * defined by control points `a`,`b`,`c`. The `res` and `recur` params
@@ -1,4 +1,4 @@
1
1
  import type { FnU2 } from "@thi.ng/api";
2
- import { ReadonlyVec, Vec } from "@thi.ng/vectors";
2
+ import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
3
3
  export declare const quadraticFromLine: FnU2<ReadonlyVec, Vec[]>;
4
4
  //# sourceMappingURL=quadratic-line.d.ts.map
package/quadratic-line.js CHANGED
@@ -1,4 +1,5 @@
1
- import { addmN, set } from "@thi.ng/vectors";
1
+ import { addmN } from "@thi.ng/vectors/addmn";
2
+ import { set } from "@thi.ng/vectors/set";
2
3
  export const quadraticFromLine = (a, b) => [
3
4
  set([], a),
4
5
  addmN([], a, b, 0.5),
@@ -1,3 +1,3 @@
1
- export declare const sampleQuadratic: (pts: import("@thi.ng/vectors").ReadonlyVec[], opts?: number | Partial<import("@thi.ng/geom-api").SamplingOpts> | undefined) => import("@thi.ng/vectors").Vec[];
2
- export declare const sampleQuadraticArray: (segments: import("@thi.ng/vectors").ReadonlyVec[][], closed: boolean | undefined, opts: number | Partial<import("@thi.ng/geom-api").SamplingOpts>) => any[];
1
+ export declare const sampleQuadratic: (pts: import("@thi.ng/vectors").ReadonlyVec[], opts?: number | Partial<import("@thi.ng/geom-api/sample").SamplingOpts> | undefined) => import("@thi.ng/vectors").Vec[];
2
+ export declare const sampleQuadraticArray: (segments: import("@thi.ng/vectors").ReadonlyVec[][], closed: boolean | undefined, opts: number | Partial<import("@thi.ng/geom-api/sample").SamplingOpts>) => any[];
3
3
  //# sourceMappingURL=quadratic-sample.d.ts.map
@@ -1,5 +1,5 @@
1
- import { mixQuadratic } from "@thi.ng/vectors";
2
- import { __sample, __sampleArray } from "./internal/sample";
1
+ import { mixQuadratic } from "@thi.ng/vectors/mix-quadratic";
2
+ import { __sample, __sampleArray } from "./internal/sample.js";
3
3
  export const sampleQuadratic = __sample((res, [a, b, c], num) => {
4
4
  const delta = 1 / num;
5
5
  for (let t = 0; t < num; t++) {
@@ -1,4 +1,4 @@
1
- import { ReadonlyVec } from "@thi.ng/vectors";
1
+ import type { ReadonlyVec } from "@thi.ng/vectors";
2
2
  export declare const quadraticSplitAt: (a: ReadonlyVec, b: ReadonlyVec, c: ReadonlyVec, t: number) => import("@thi.ng/vectors").Vec[][];
3
3
  export declare const quadraticSplitNearPoint: (p: ReadonlyVec, a: ReadonlyVec, b: ReadonlyVec, c: ReadonlyVec, res?: number | undefined, iter?: number | undefined) => import("@thi.ng/vectors").Vec[][];
4
4
  //# sourceMappingURL=quadratic-split.d.ts.map
@@ -1,5 +1,8 @@
1
- import { minError } from "@thi.ng/math";
2
- import { distSq, mixN, mixQuadratic, set } from "@thi.ng/vectors";
1
+ import { minError } from "@thi.ng/math/min-error";
2
+ import { distSq } from "@thi.ng/vectors/distsq";
3
+ import { mixQuadratic } from "@thi.ng/vectors/mix-quadratic";
4
+ import { mixN } from "@thi.ng/vectors/mixn";
5
+ import { set } from "@thi.ng/vectors/set";
3
6
  export const quadraticSplitAt = (a, b, c, t) => {
4
7
  if (t <= 0 || t >= 1) {
5
8
  const p = t <= 0 ? a : c;
@@ -1,3 +1,3 @@
1
- import { ReadonlyVec, Vec } from "@thi.ng/vectors";
1
+ import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
2
2
  export declare const quadraticTangentAt: (out: Vec, a: ReadonlyVec, b: ReadonlyVec, c: ReadonlyVec, t: number, len?: number) => Vec;
3
3
  //# sourceMappingURL=quadratic-tangent.d.ts.map
@@ -1,2 +1,4 @@
1
- import { addW2, normalize, sub } from "@thi.ng/vectors";
1
+ import { addW2 } from "@thi.ng/vectors/addw";
2
+ import { normalize } from "@thi.ng/vectors/normalize";
3
+ import { sub } from "@thi.ng/vectors/sub";
2
4
  export const quadraticTangentAt = (out, a, b, c, t, len = 1) => normalize(out, addW2(out, sub(out, b, a), sub([], c, b), 2 * (1 - t), 2 * t), len);
package/lib/index.js DELETED
@@ -1,329 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var geomArc = require('@thi.ng/geom-arc');
6
- var math = require('@thi.ng/math');
7
- var vectors = require('@thi.ng/vectors');
8
- var checks = require('@thi.ng/checks');
9
- var geomApi = require('@thi.ng/geom-api');
10
- var geomResample = require('@thi.ng/geom-resample');
11
-
12
- const cubicFromLine = (a, b) => [
13
- vectors.set([], a),
14
- vectors.mixN([], a, b, 1 / 3),
15
- vectors.mixN([], b, a, 1 / 3),
16
- vectors.set([], b),
17
- ];
18
-
19
- const cubicFromArc = (pos, r, axis, start, end) => {
20
- const p = geomArc.pointAtTheta(pos, r, axis, start);
21
- const q = geomArc.pointAtTheta(pos, r, axis, end);
22
- const delta = end - start;
23
- const [rx, ry] = r;
24
- const [s, c] = math.sincos(axis);
25
- const dx = (c * (p[0] - q[0])) / 2 + (s * (p[1] - q[1])) / 2;
26
- const dy = (-s * (p[0] - q[0])) / 2 + (c * (p[1] - q[1])) / 2;
27
- if ((Math.abs(delta) < math.PI && dx === 0 && dy === 0) || vectors.magSq2(r) < math.EPS) {
28
- return [cubicFromLine(p, q)];
29
- }
30
- const mapP = (x, y) => {
31
- x *= rx;
32
- y *= ry;
33
- return [c * x - s * y + pos[0], s * x + c * y + pos[1]];
34
- };
35
- const res = [];
36
- const n = Math.ceil(math.roundEps(Math.abs(delta) / math.HALF_PI, 1e-3));
37
- const d = delta / n;
38
- const t = (8 / 6) * Math.tan(0.25 * d);
39
- if (!isFinite(t)) {
40
- return [cubicFromLine(p, q)];
41
- }
42
- for (let i = n, theta = start, sc = math.sincos(theta); i > 0; i--, theta += d) {
43
- const [s1, c1] = sc;
44
- const [s2, c2] = (sc = math.sincos(theta + d));
45
- res.push([
46
- mapP(c1, s1),
47
- mapP(c1 - s1 * t, s1 + c1 * t),
48
- mapP(c2 + s2 * t, s2 - c2 * t),
49
- mapP(c2, s2),
50
- ]);
51
- }
52
- return res;
53
- };
54
-
55
- const axisBounds = (min, max, i, pa, pb, pc, pd) => {
56
- min[i] = Math.min(pa, pd);
57
- max[i] = Math.max(pa, pd);
58
- const k0 = -pa + pb;
59
- const k1 = pa - 2 * pb + pc;
60
- const k2 = -pa + 3 * pb - 3 * pc + pd;
61
- let h = k1 * k1 - k0 * k2;
62
- if (h > 0) {
63
- h = Math.sqrt(h);
64
- const update = (t) => {
65
- if (t > 0 && t < 1) {
66
- const q = math.mixCubic(pa, pb, pc, pd, t);
67
- min[i] = Math.min(min[i], q);
68
- max[i] = Math.max(max[i], q);
69
- }
70
- };
71
- update(k0 / (-k1 - h));
72
- update(k0 / (-k1 + h));
73
- }
74
- };
75
- const cubicBounds = (a, b, c, d) => {
76
- const min = [];
77
- const max = [];
78
- for (let i = a.length; --i >= 0;) {
79
- axisBounds(min, max, i, a[i], b[i], c[i], d[i]);
80
- }
81
- return [min, max];
82
- };
83
-
84
- const closestPointCubic = (p, a, b, c, d, out = [], res, iter, eps) => {
85
- const fn = (t) => vectors.mixCubic(out, a, b, c, d, t);
86
- return fn(math.minError(fn, vectors.distSq, p, res, iter, 0, 1, eps));
87
- };
88
-
89
- const buildSegments = (tangents, t, uniform) => {
90
- const res = [];
91
- for (let i = 0, num = tangents.length - 1; i < num; i++) {
92
- const [a, na] = tangents[i];
93
- const [b, nb] = tangents[i + 1];
94
- const d = uniform ? t : t * vectors.dist(a, b);
95
- res.push([a, vectors.maddN([], na, d, a), vectors.maddN([], nb, -d, b), b]);
96
- }
97
- return res;
98
- };
99
- const closedCubicFromBreakPoints = (points, t = 1 / 3, uniform = false) => {
100
- const tangents = [];
101
- for (let num = points.length, i = num - 1, j = 0; j < num; i = j, j++) {
102
- const a = points[i];
103
- const b = points[j];
104
- const c = points[(j + 1) % num];
105
- const n = vectors.mulN(null, vectors.perpendicularCW(null, vectors.cornerBisector([], a, b, c)), vectors.corner2(a, b, c));
106
- tangents.push([vectors.set([], b), n]);
107
- }
108
- tangents.push(tangents[0]);
109
- return buildSegments(tangents, t, uniform);
110
- };
111
- const openCubicFromBreakPoints = (points, t = 1 / 3, uniform = false) => {
112
- const tangents = [
113
- [points[0], vectors.direction([], points[0], points[1])],
114
- ];
115
- const num = points.length - 1;
116
- for (let i = 1; i < num; i++) {
117
- const a = points[i - 1];
118
- const b = points[i];
119
- const c = points[i + 1];
120
- const n = vectors.mulN(null, vectors.perpendicularCW(null, vectors.cornerBisector([], a, b, c)), vectors.corner2(a, b, c));
121
- tangents.push([vectors.set([], b), n]);
122
- }
123
- tangents.push([points[num], vectors.direction([], points[num - 1], points[num])]);
124
- return buildSegments(tangents, t, uniform);
125
- };
126
-
127
- const buildUniform = (segments, t) => {
128
- const res = [];
129
- for (let i = 0, n = segments.length - 2; i < n; i += 2) {
130
- const a = segments[i];
131
- const b = segments[i + 1];
132
- const c = segments[i + 2];
133
- res.push([
134
- a,
135
- vectors.add(null, vectors.direction([], a, b, t), a),
136
- vectors.add(null, vectors.direction([], c, b, t), c),
137
- c,
138
- ]);
139
- }
140
- return res;
141
- };
142
- const buildNonUniform = (segments, t) => {
143
- const res = [];
144
- for (let i = 0, n = segments.length - 2; i < n; i += 2) {
145
- const a = segments[i];
146
- const b = segments[i + 1];
147
- const c = segments[i + 2];
148
- res.push([a, vectors.mixN([], a, b, t), vectors.mixN([], c, b, t), c]);
149
- }
150
- return res;
151
- };
152
- const closedCubicFromControlPoints = (points, t = 1, uniform = false) => {
153
- const segments = [];
154
- for (let i = 0, num = points.length; i < num; i++) {
155
- const q = points[(i + 1) % num];
156
- segments.push(vectors.addmN([], points[i], q, 0.5), vectors.set([], q));
157
- }
158
- segments.push(segments[0]);
159
- return uniform ? buildUniform(segments, t) : buildNonUniform(segments, t);
160
- };
161
- const openCubicFromControlPoints = (points, t = 1, uniform = false) => {
162
- const segments = [vectors.set([], points[0]), vectors.set([], points[0])];
163
- const num = points.length - 1;
164
- for (let i = 0; i < num; i++) {
165
- const q = points[i + 1];
166
- segments.push(vectors.addmN([], points[i], q, 0.5), vectors.set([], q));
167
- }
168
- segments.push(vectors.set([], points[num]));
169
- return uniform ? buildUniform(segments, t) : buildNonUniform(segments, t);
170
- };
171
-
172
- const cubicFromQuadratic = (a, b, c) => [
173
- vectors.set([], a),
174
- vectors.mixN([], a, b, 2 / 3),
175
- vectors.mixN([], c, b, 2 / 3),
176
- vectors.set([], c),
177
- ];
178
-
179
- const __sample = (sample) => function $(pts, opts) {
180
- if (checks.isPlainObject(opts) && opts.dist !== undefined) {
181
- return new geomResample.Sampler($(pts, opts.num || geomApi.DEFAULT_SAMPLES)).sampleUniform(opts.dist, opts.last !== false);
182
- }
183
- opts = checks.isNumber(opts)
184
- ? {
185
- num: opts,
186
- last: true,
187
- }
188
- : Object.assign({ num: geomApi.DEFAULT_SAMPLES }, opts);
189
- const res = [];
190
- sample(res, pts, opts.num);
191
- opts.last && res.push(vectors.set([], pts[pts.length - 1]));
192
- return res;
193
- };
194
- const __sampleArray = (fn) => (segments, closed = false, opts) => {
195
- const _opts = checks.isNumber(opts) ? { num: opts } : opts;
196
- const n = segments.length - 1;
197
- return Array.prototype.concat.apply([], segments.map((seg, i) => {
198
- const last = !closed && i === n;
199
- return fn(seg, Object.assign(Object.assign({}, _opts), { last }));
200
- }));
201
- };
202
-
203
- const sampleCubic = __sample((res, [a, b, c, d], num) => {
204
- const delta = 1 / num;
205
- for (let t = 0; t < num; t++) {
206
- res.push(vectors.mixCubic([], a, b, c, d, t * delta));
207
- }
208
- });
209
- const sampleCubicArray = __sampleArray(sampleCubic);
210
-
211
- const cubicSplitAt = (a, b, c, d, t) => {
212
- if (t <= 0 || t >= 1) {
213
- const p = t <= 0 ? a : d;
214
- const c1 = [vectors.set([], p), vectors.set([], p), vectors.set([], p), vectors.set([], p)];
215
- const c2 = [vectors.set([], a), vectors.set([], b), vectors.set([], c), vectors.set([], d)];
216
- return t <= 0 ? [c1, c2] : [c2, c1];
217
- }
218
- const ab = vectors.mixN([], a, b, t);
219
- const bc = vectors.mixN([], b, c, t);
220
- const cd = vectors.mixN([], c, d, t);
221
- const abc = vectors.mixN([], ab, bc, t);
222
- const bcd = vectors.mixN([], bc, cd, t);
223
- const p = vectors.mixN([], abc, bcd, t);
224
- return [
225
- [vectors.set([], a), ab, abc, vectors.set([], p)],
226
- [p, bcd, cd, vectors.set([], d)],
227
- ];
228
- };
229
- const splitCubicNearPoint = (p, a, b, c, d, res, iter) => cubicSplitAt(a, b, c, d, math.minError((t) => vectors.mixCubic([], a, b, c, d, t), vectors.distSq, p, res, iter));
230
-
231
- const cubicTangentAt = (out, a, b, c, d, t, len = 1) => {
232
- const s = 1 - t;
233
- const ss = s * s;
234
- const tt = t * t;
235
- const ts2 = 2 * t * s;
236
- return vectors.normalize(out, vectors.addW4(out, a, b, c, d, -3 * ss, 3 * (ss - ts2), 3 * (ts2 - tt), 3 * tt), len);
237
- };
238
-
239
- const solveQuadratic = (a, b, c) => {
240
- const t = math.clamp01((a - b) / (a - 2.0 * b + c));
241
- const s = 1 - t;
242
- return s * s * a + 2.0 * s * t * b + t * t * c;
243
- };
244
- const inBounds = (p, min, max) => {
245
- for (let i = p.length; --i >= 0;) {
246
- if (!math.inRange(p[i], min[i], max[i]))
247
- return false;
248
- }
249
- return true;
250
- };
251
- const quadraticBounds = (a, b, c) => {
252
- const mi = vectors.min([], a, c);
253
- const ma = vectors.max([], a, c);
254
- if (!inBounds(b, mi, ma)) {
255
- const q = [];
256
- for (let i = a.length; --i >= 0;) {
257
- q[i] = solveQuadratic(a[i], b[i], c[i]);
258
- }
259
- vectors.min(null, mi, q);
260
- vectors.max(null, ma, q);
261
- }
262
- return [mi, ma];
263
- };
264
-
265
- const closestPointQuadratic = (p, a, b, c, out = [], res, iter, eps) => {
266
- const fn = (t) => vectors.mixQuadratic(out, a, b, c, t);
267
- return fn(math.minError(fn, vectors.distSq, p, res, iter, 0, 1, eps));
268
- };
269
-
270
- const quadraticFromLine = (a, b) => [
271
- vectors.set([], a),
272
- vectors.addmN([], a, b, 0.5),
273
- vectors.set([], b),
274
- ];
275
-
276
- const sampleQuadratic = __sample((res, [a, b, c], num) => {
277
- const delta = 1 / num;
278
- for (let t = 0; t < num; t++) {
279
- res.push(vectors.mixQuadratic([], a, b, c, t * delta));
280
- }
281
- });
282
- const sampleQuadraticArray = __sampleArray(sampleQuadratic);
283
-
284
- const quadraticSplitAt = (a, b, c, t) => {
285
- if (t <= 0 || t >= 1) {
286
- const p = t <= 0 ? a : c;
287
- const c1 = [vectors.set([], p), vectors.set([], p), vectors.set([], p)];
288
- const c2 = [vectors.set([], a), vectors.set([], b), vectors.set([], c)];
289
- return t <= 0 ? [c1, c2] : [c2, c1];
290
- }
291
- const ab = vectors.mixN([], a, b, t);
292
- const bc = vectors.mixN([], b, c, t);
293
- const p = vectors.mixN([], ab, bc, t);
294
- return [
295
- [vectors.set([], a), ab, p],
296
- [p, bc, vectors.set([], c)],
297
- ];
298
- };
299
- const quadraticSplitNearPoint = (p, a, b, c, res, iter) => quadraticSplitAt(a, b, c, math.minError((t) => vectors.mixQuadratic([], a, b, c, t), vectors.distSq, p, res, iter));
300
-
301
- const quadraticTangentAt = (out, a, b, c, t, len = 1) => vectors.normalize(out, vectors.addW2(out, vectors.sub(out, b, a), vectors.sub([], c, b), 2 * (1 - t), 2 * t), len);
302
-
303
- const cubicPointAt = vectors.mixCubic;
304
- const quadraticPointAt = vectors.mixQuadratic;
305
-
306
- exports.closedCubicFromBreakPoints = closedCubicFromBreakPoints;
307
- exports.closedCubicFromControlPoints = closedCubicFromControlPoints;
308
- exports.closestPointCubic = closestPointCubic;
309
- exports.closestPointQuadratic = closestPointQuadratic;
310
- exports.cubicBounds = cubicBounds;
311
- exports.cubicFromArc = cubicFromArc;
312
- exports.cubicFromLine = cubicFromLine;
313
- exports.cubicFromQuadratic = cubicFromQuadratic;
314
- exports.cubicPointAt = cubicPointAt;
315
- exports.cubicSplitAt = cubicSplitAt;
316
- exports.cubicTangentAt = cubicTangentAt;
317
- exports.openCubicFromBreakPoints = openCubicFromBreakPoints;
318
- exports.openCubicFromControlPoints = openCubicFromControlPoints;
319
- exports.quadraticBounds = quadraticBounds;
320
- exports.quadraticFromLine = quadraticFromLine;
321
- exports.quadraticPointAt = quadraticPointAt;
322
- exports.quadraticSplitAt = quadraticSplitAt;
323
- exports.quadraticSplitNearPoint = quadraticSplitNearPoint;
324
- exports.quadraticTangentAt = quadraticTangentAt;
325
- exports.sampleCubic = sampleCubic;
326
- exports.sampleCubicArray = sampleCubicArray;
327
- exports.sampleQuadratic = sampleQuadratic;
328
- exports.sampleQuadraticArray = sampleQuadraticArray;
329
- exports.splitCubicNearPoint = splitCubicNearPoint;
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../cubic-line.js","../cubic-arc.js","../cubic-bounds.js","../cubic-closest-point.js","../cubic-from-breakpoints.js","../cubic-from-controlpoints.js","../cubic-quadratic.js","../internal/sample.js","../cubic-sample.js","../cubic-split.js","../cubic-tangent.js","../quadratic-bounds.js","../quadratic-closest-point.js","../quadratic-line.js","../quadratic-sample.js","../quadratic-split.js","../quadratic-tangent.js","../point-at.js"],"sourcesContent":null,"names":["set","mixN","pointAtTheta","sincos","PI","magSq2","EPS","roundEps","HALF_PI","mixCubic","minError","distSq","dist","maddN","mulN","perpendicularCW","cornerBisector","corner2","direction","add","addmN","isPlainObject","Sampler","DEFAULT_SAMPLES","isNumber","normalize","addW4","clamp01","inRange","min","max","mixQuadratic","addW2","sub"],"mappings":"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"}
package/lib/index.umd.js DELETED
@@ -1 +0,0 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@thi.ng/geom-arc"),require("@thi.ng/math"),require("@thi.ng/vectors"),require("@thi.ng/checks"),require("@thi.ng/geom-api"),require("@thi.ng/geom-resample")):"function"==typeof define&&define.amd?define(["exports","@thi.ng/geom-arc","@thi.ng/math","@thi.ng/vectors","@thi.ng/checks","@thi.ng/geom-api","@thi.ng/geom-resample"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).thi=t.thi||{},t.thi.ng=t.thi.ng||{},t.thi.ng.geomSplines={}),t.thi.ng.geomArc,t.thi.ng.math,t.thi.ng.vectors,t.thi.ng.checks,t.thi.ng.geomApi,t.thi.ng.geomResample)}(this,(function(t,e,n,i,r,s,o){"use strict";const c=(t,e)=>[i.set([],t),i.mixN([],t,e,1/3),i.mixN([],e,t,1/3),i.set([],e)],u=(t,e,i,r,s,o,c)=>{t[i]=Math.min(r,c),e[i]=Math.max(r,c);const u=-r+s,a=r-2*s+o;let m=a*a-u*(3*s-r-3*o+c);if(m>0){m=Math.sqrt(m);const l=u=>{if(u>0&&u<1){const a=n.mixCubic(r,s,o,c,u);t[i]=Math.min(t[i],a),e[i]=Math.max(e[i],a)}};l(u/(-a-m)),l(u/(-a+m))}},a=(t,e,n)=>{const r=[];for(let s=0,o=t.length-1;s<o;s++){const[o,c]=t[s],[u,a]=t[s+1],m=n?e:e*i.dist(o,u);r.push([o,i.maddN([],c,m,o),i.maddN([],a,-m,u),u])}return r},m=(t,e)=>{const n=[];for(let r=0,s=t.length-2;r<s;r+=2){const s=t[r],o=t[r+1],c=t[r+2];n.push([s,i.add(null,i.direction([],s,o,e),s),i.add(null,i.direction([],c,o,e),c),c])}return n},l=(t,e)=>{const n=[];for(let r=0,s=t.length-2;r<s;r+=2){const s=t[r],o=t[r+1],c=t[r+2];n.push([s,i.mixN([],s,o,e),i.mixN([],c,o,e),c])}return n},h=t=>function e(n,c){if(r.isPlainObject(c)&&void 0!==c.dist)return new o.Sampler(e(n,c.num||s.DEFAULT_SAMPLES)).sampleUniform(c.dist,!1!==c.last);c=r.isNumber(c)?{num:c,last:!0}:Object.assign({num:s.DEFAULT_SAMPLES},c);const u=[];return t(u,n,c.num),c.last&&u.push(i.set([],n[n.length-1])),u},d=t=>(e,n=!1,i)=>{const s=r.isNumber(i)?{num:i}:i,o=e.length-1;return Array.prototype.concat.apply([],e.map(((e,i)=>{const r=!n&&i===o;return t(e,Object.assign(Object.assign({},s),{last:r}))})))},p=h(((t,[e,n,r,s],o)=>{const c=1/o;for(let u=0;u<o;u++)t.push(i.mixCubic([],e,n,r,s,u*c))})),g=d(p),f=(t,e,n,r,s)=>{if(s<=0||s>=1){const o=s<=0?t:r,c=[i.set([],o),i.set([],o),i.set([],o),i.set([],o)],u=[i.set([],t),i.set([],e),i.set([],n),i.set([],r)];return s<=0?[c,u]:[u,c]}const o=i.mixN([],t,e,s),c=i.mixN([],e,n,s),u=i.mixN([],n,r,s),a=i.mixN([],o,c,s),m=i.mixN([],c,u,s),l=i.mixN([],a,m,s);return[[i.set([],t),o,a,i.set([],l)],[l,m,u,i.set([],r)]]},b=(t,e,i)=>{const r=n.clamp01((t-e)/(t-2*e+i)),s=1-r;return s*s*t+2*s*r*e+r*r*i},x=h(((t,[e,n,r],s)=>{const o=1/s;for(let c=0;c<s;c++)t.push(i.mixQuadratic([],e,n,r,c*o))})),N=d(x),A=(t,e,n,r)=>{if(r<=0||r>=1){const s=r<=0?t:n,o=[i.set([],s),i.set([],s),i.set([],s)],c=[i.set([],t),i.set([],e),i.set([],n)];return r<=0?[o,c]:[c,o]}const s=i.mixN([],t,e,r),o=i.mixN([],e,n,r),c=i.mixN([],s,o,r);return[[i.set([],t),s,c],[c,o,i.set([],n)]]},q=i.mixCubic,C=i.mixQuadratic;t.closedCubicFromBreakPoints=(t,e=1/3,n=!1)=>{const r=[];for(let e=t.length,n=e-1,s=0;s<e;n=s,s++){const o=t[n],c=t[s],u=t[(s+1)%e],a=i.mulN(null,i.perpendicularCW(null,i.cornerBisector([],o,c,u)),i.corner2(o,c,u));r.push([i.set([],c),a])}return r.push(r[0]),a(r,e,n)},t.closedCubicFromControlPoints=(t,e=1,n=!1)=>{const r=[];for(let e=0,n=t.length;e<n;e++){const s=t[(e+1)%n];r.push(i.addmN([],t[e],s,.5),i.set([],s))}return r.push(r[0]),n?m(r,e):l(r,e)},t.closestPointCubic=(t,e,r,s,o,c=[],u,a,m)=>{const l=t=>i.mixCubic(c,e,r,s,o,t);return l(n.minError(l,i.distSq,t,u,a,0,1,m))},t.closestPointQuadratic=(t,e,r,s,o=[],c,u,a)=>{const m=t=>i.mixQuadratic(o,e,r,s,t);return m(n.minError(m,i.distSq,t,c,u,0,1,a))},t.cubicBounds=(t,e,n,i)=>{const r=[],s=[];for(let o=t.length;--o>=0;)u(r,s,o,t[o],e[o],n[o],i[o]);return[r,s]},t.cubicFromArc=(t,r,s,o,u)=>{const a=e.pointAtTheta(t,r,s,o),m=e.pointAtTheta(t,r,s,u),l=u-o,[h,d]=r,[p,g]=n.sincos(s),f=g*(a[0]-m[0])/2+p*(a[1]-m[1])/2,b=-p*(a[0]-m[0])/2+g*(a[1]-m[1])/2;if(Math.abs(l)<n.PI&&0===f&&0===b||i.magSq2(r)<n.EPS)return[c(a,m)];const x=(e,n)=>[g*(e*=h)-p*(n*=d)+t[0],p*e+g*n+t[1]],N=[],A=Math.ceil(n.roundEps(Math.abs(l)/n.HALF_PI,.001)),q=l/A,C=8/6*Math.tan(.25*q);if(!isFinite(C))return[c(a,m)];for(let t=A,e=o,i=n.sincos(e);t>0;t--,e+=q){const[t,r]=i,[s,o]=i=n.sincos(e+q);N.push([x(r,t),x(r-t*C,t+r*C),x(o+s*C,s-o*C),x(o,s)])}return N},t.cubicFromLine=c,t.cubicFromQuadratic=(t,e,n)=>[i.set([],t),i.mixN([],t,e,2/3),i.mixN([],n,e,2/3),i.set([],n)],t.cubicPointAt=q,t.cubicSplitAt=f,t.cubicTangentAt=(t,e,n,r,s,o,c=1)=>{const u=1-o,a=u*u,m=o*o,l=2*o*u;return i.normalize(t,i.addW4(t,e,n,r,s,-3*a,3*(a-l),3*(l-m),3*m),c)},t.openCubicFromBreakPoints=(t,e=1/3,n=!1)=>{const r=[[t[0],i.direction([],t[0],t[1])]],s=t.length-1;for(let e=1;e<s;e++){const n=t[e-1],s=t[e],o=t[e+1],c=i.mulN(null,i.perpendicularCW(null,i.cornerBisector([],n,s,o)),i.corner2(n,s,o));r.push([i.set([],s),c])}return r.push([t[s],i.direction([],t[s-1],t[s])]),a(r,e,n)},t.openCubicFromControlPoints=(t,e=1,n=!1)=>{const r=[i.set([],t[0]),i.set([],t[0])],s=t.length-1;for(let e=0;e<s;e++){const n=t[e+1];r.push(i.addmN([],t[e],n,.5),i.set([],n))}return r.push(i.set([],t[s])),n?m(r,e):l(r,e)},t.quadraticBounds=(t,e,r)=>{const s=i.min([],t,r),o=i.max([],t,r);if(!((t,e,i)=>{for(let r=t.length;--r>=0;)if(!n.inRange(t[r],e[r],i[r]))return!1;return!0})(e,s,o)){const n=[];for(let i=t.length;--i>=0;)n[i]=b(t[i],e[i],r[i]);i.min(null,s,n),i.max(null,o,n)}return[s,o]},t.quadraticFromLine=(t,e)=>[i.set([],t),i.addmN([],t,e,.5),i.set([],e)],t.quadraticPointAt=C,t.quadraticSplitAt=A,t.quadraticSplitNearPoint=(t,e,r,s,o,c)=>A(e,r,s,n.minError((t=>i.mixQuadratic([],e,r,s,t)),i.distSq,t,o,c)),t.quadraticTangentAt=(t,e,n,r,s,o=1)=>i.normalize(t,i.addW2(t,i.sub(t,n,e),i.sub([],r,n),2*(1-s),2*s),o),t.sampleCubic=p,t.sampleCubicArray=g,t.sampleQuadratic=x,t.sampleQuadraticArray=N,t.splitCubicNearPoint=(t,e,r,s,o,c,u)=>f(e,r,s,o,n.minError((t=>i.mixCubic([],e,r,s,o,t)),i.distSq,t,c,u)),Object.defineProperty(t,"__esModule",{value:!0})}));
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.umd.js","sources":["../cubic-line.js","../cubic-arc.js","../cubic-bounds.js","../cubic-closest-point.js","../cubic-from-breakpoints.js","../cubic-from-controlpoints.js","../cubic-quadratic.js","../internal/sample.js","../cubic-sample.js","../cubic-split.js","../cubic-tangent.js","../quadratic-bounds.js","../quadratic-closest-point.js","../quadratic-line.js","../quadratic-sample.js","../quadratic-split.js","../quadratic-tangent.js","../point-at.js"],"sourcesContent":null,"names":["set","mixN","pointAtTheta","sincos","PI","magSq2","EPS","roundEps","HALF_PI","mixCubic","minError","distSq","dist","maddN","mulN","perpendicularCW","cornerBisector","corner2","direction","add","addmN","isPlainObject","Sampler","DEFAULT_SAMPLES","isNumber","normalize","addW4","clamp01","inRange","min","max","mixQuadratic","addW2","sub"],"mappings":"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"}