@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 +76 -24
- package/README.md +14 -5
- package/cubic-arc.d.ts +1 -1
- package/cubic-arc.js +6 -4
- package/cubic-bounds.js +1 -1
- package/cubic-closest-point.d.ts +1 -1
- package/cubic-closest-point.js +3 -2
- package/cubic-from-breakpoints.d.ts +1 -1
- package/cubic-from-breakpoints.js +8 -1
- package/cubic-from-controlpoints.d.ts +1 -1
- package/cubic-from-controlpoints.js +5 -1
- package/cubic-line.d.ts +1 -1
- package/cubic-line.js +2 -1
- package/cubic-quadratic.d.ts +1 -1
- package/cubic-quadratic.js +2 -1
- package/cubic-sample.d.ts +2 -2
- package/cubic-sample.js +2 -2
- package/cubic-split.d.ts +1 -1
- package/cubic-split.js +5 -2
- package/cubic-tangent.d.ts +1 -1
- package/cubic-tangent.js +2 -1
- package/index.d.ts +17 -17
- package/index.js +17 -17
- package/internal/sample.d.ts +3 -3
- package/internal/sample.js +10 -6
- package/package.json +85 -29
- package/point-at.js +2 -1
- package/quadratic-bounds.d.ts +1 -1
- package/quadratic-bounds.js +3 -2
- package/quadratic-closest-point.d.ts +1 -1
- package/quadratic-closest-point.js +3 -2
- package/quadratic-line.d.ts +1 -1
- package/quadratic-line.js +2 -1
- package/quadratic-sample.d.ts +2 -2
- package/quadratic-sample.js +2 -2
- package/quadratic-split.d.ts +1 -1
- package/quadratic-split.js +5 -2
- package/quadratic-tangent.d.ts +1 -1
- package/quadratic-tangent.js +3 -1
- package/lib/index.js +0 -329
- package/lib/index.js.map +0 -1
- package/lib/index.umd.js +0 -1
- package/lib/index.umd.js.map +0 -1
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
|
-
## [
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
-
###
|
|
81
|
+
### Features
|
|
30
82
|
|
|
31
|
-
|
|
83
|
+
- **geom-splines:** add cubicTangentAt / quadraticTangentAt() ([e1cf355](https://github.com/thi-ng/umbrella/commit/e1cf355))
|
|
32
84
|
|
|
33
|
-
##
|
|
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
|
-
###
|
|
87
|
+
### Bug Fixes
|
|
36
88
|
|
|
37
|
-
|
|
89
|
+
- **geom-splines:** fix seg count in cubicFromArc(), minor optimizations ([e289ade](https://github.com/thi-ng/umbrella/commit/e289ade))
|
|
38
90
|
|
|
39
|
-
#
|
|
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
|
-
###
|
|
93
|
+
### Bug Fixes
|
|
42
94
|
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
###
|
|
98
|
+
### Features
|
|
47
99
|
|
|
48
|
-
|
|
100
|
+
- **geom-splines:** add closedCubicFromBreak/ControlPoints, update readme ([1284f37](https://github.com/thi-ng/umbrella/commit/1284f37))
|
|
49
101
|
|
|
50
|
-
#
|
|
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
|
-
###
|
|
104
|
+
### Features
|
|
53
105
|
|
|
54
|
-
|
|
106
|
+
- **geom-splines:** enable TS strict compiler flags (refactor) ([748417b](https://github.com/thi-ng/umbrella/commit/748417b))
|
|
55
107
|
|
|
56
|
-
#
|
|
108
|
+
# 0.1.0 (2019-02-05)
|
|
57
109
|
|
|
58
|
-
###
|
|
110
|
+
### Features
|
|
59
111
|
|
|
60
|
-
|
|
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
|
-
|
|
51
|
-
|
|
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
|
-
|
|
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.
|
|
66
|
+
Package sizes (gzipped, pre-treeshake): ESM: 2.32 KB
|
|
58
67
|
|
|
59
68
|
## Dependencies
|
|
60
69
|
|
package/cubic-arc.d.ts
CHANGED
package/cubic-arc.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { pointAtTheta } from "@thi.ng/geom-arc";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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
package/cubic-closest-point.d.ts
CHANGED
package/cubic-closest-point.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { minError } from "@thi.ng/math";
|
|
2
|
-
import { distSq
|
|
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 {
|
|
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
|
|
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
|
|
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
|
package/cubic-quadratic.d.ts
CHANGED
package/cubic-quadratic.js
CHANGED
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
|
|
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;
|
package/cubic-tangent.d.ts
CHANGED
|
@@ -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
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";
|
package/internal/sample.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
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
|
package/internal/sample.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { isNumber
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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
|
-
:
|
|
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,
|
|
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": "
|
|
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 &&
|
|
28
|
-
"
|
|
29
|
-
"
|
|
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
|
-
"
|
|
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": "^
|
|
42
|
-
"@thi.ng/checks": "^
|
|
43
|
-
"@thi.ng/geom-api": "^
|
|
44
|
-
"@thi.ng/geom-arc": "^
|
|
45
|
-
"@thi.ng/geom-resample": "^
|
|
46
|
-
"@thi.ng/math": "^
|
|
47
|
-
"@thi.ng/vectors": "^
|
|
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
|
-
"
|
|
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": "
|
|
142
|
+
"gitHead": "9ff00a103f76cc4917ef3f244132e218f2300a05"
|
|
87
143
|
}
|
package/point-at.js
CHANGED
package/quadratic-bounds.d.ts
CHANGED
|
@@ -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
|
package/quadratic-bounds.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { clamp01, inRange } from "@thi.ng/math";
|
|
2
|
-
import { max
|
|
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,5 +1,6 @@
|
|
|
1
|
-
import { minError } from "@thi.ng/math";
|
|
2
|
-
import { distSq
|
|
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
|
package/quadratic-line.d.ts
CHANGED
package/quadratic-line.js
CHANGED
package/quadratic-sample.d.ts
CHANGED
|
@@ -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
|
package/quadratic-sample.js
CHANGED
|
@@ -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++) {
|
package/quadratic-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 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
|
package/quadratic-split.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { minError } from "@thi.ng/math";
|
|
2
|
-
import { distSq
|
|
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;
|
package/quadratic-tangent.d.ts
CHANGED
|
@@ -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
|
package/quadratic-tangent.js
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import { addW2
|
|
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})}));
|
package/lib/index.umd.js.map
DELETED
|
@@ -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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"}
|