pts 0.10.12 → 0.11.0
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/dist/{pts.d.ts → index.d.ts} +1245 -1207
- package/dist/index.js +6825 -6660
- package/dist/index.mjs +6785 -0
- package/package.json +12 -33
- package/tsup.browser.js +21 -0
- package/tsup.min.js +23 -0
- package/tsup.module.js +15 -0
- package/dist/es2015/Canvas.js +0 -684
- package/dist/es2015/Canvas.js.map +0 -1
- package/dist/es2015/Color.js +0 -337
- package/dist/es2015/Color.js.map +0 -1
- package/dist/es2015/Create.js +0 -275
- package/dist/es2015/Create.js.map +0 -1
- package/dist/es2015/Dom.js +0 -448
- package/dist/es2015/Dom.js.map +0 -1
- package/dist/es2015/Form.js +0 -80
- package/dist/es2015/Form.js.map +0 -1
- package/dist/es2015/Image.js +0 -220
- package/dist/es2015/Image.js.map +0 -1
- package/dist/es2015/LinearAlgebra.js +0 -286
- package/dist/es2015/LinearAlgebra.js.map +0 -1
- package/dist/es2015/Num.js +0 -477
- package/dist/es2015/Num.js.map +0 -1
- package/dist/es2015/Op.js +0 -978
- package/dist/es2015/Op.js.map +0 -1
- package/dist/es2015/Physics.js +0 -383
- package/dist/es2015/Physics.js.map +0 -1
- package/dist/es2015/Play.js +0 -339
- package/dist/es2015/Play.js.map +0 -1
- package/dist/es2015/Pt.js +0 -463
- package/dist/es2015/Pt.js.map +0 -1
- package/dist/es2015/Space.js +0 -331
- package/dist/es2015/Space.js.map +0 -1
- package/dist/es2015/Svg.js +0 -367
- package/dist/es2015/Svg.js.map +0 -1
- package/dist/es2015/Types.js +0 -3
- package/dist/es2015/Types.js.map +0 -1
- package/dist/es2015/Typography.js +0 -40
- package/dist/es2015/Typography.js.map +0 -1
- package/dist/es2015/UI.js +0 -273
- package/dist/es2015/UI.js.map +0 -1
- package/dist/es2015/Util.js +0 -200
- package/dist/es2015/Util.js.map +0 -1
- package/dist/es2015/_lib.js +0 -45
- package/dist/es2015/_lib.js.map +0 -1
- package/dist/es2015/_module.js +0 -18
- package/dist/es2015/_module.js.map +0 -1
- package/dist/es2015/uheprng.js +0 -69
- package/dist/es2015/uheprng.js.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/es2015/Num.js
DELETED
|
@@ -1,477 +0,0 @@
|
|
|
1
|
-
/*! Pts.js is licensed under Apache License 2.0. Copyright © 2017-current William Ngan and contributors. (https://github.com/williamngan/pts) */
|
|
2
|
-
import { Const, Util } from "./Util";
|
|
3
|
-
import { Curve } from "./Op";
|
|
4
|
-
import { Pt, Group } from "./Pt";
|
|
5
|
-
import { Vec, Mat } from "./LinearAlgebra";
|
|
6
|
-
import generator from './uheprng';
|
|
7
|
-
export class Num {
|
|
8
|
-
static equals(a, b, threshold = 0.00001) {
|
|
9
|
-
return Math.abs(a - b) < threshold;
|
|
10
|
-
}
|
|
11
|
-
static lerp(a, b, t) {
|
|
12
|
-
return (1 - t) * a + t * b;
|
|
13
|
-
}
|
|
14
|
-
static clamp(val, min, max) {
|
|
15
|
-
return Math.max(min, Math.min(max, val));
|
|
16
|
-
}
|
|
17
|
-
static boundValue(val, min, max) {
|
|
18
|
-
let len = Math.abs(max - min);
|
|
19
|
-
let a = val % len;
|
|
20
|
-
if (a > max)
|
|
21
|
-
a -= len;
|
|
22
|
-
else if (a < min)
|
|
23
|
-
a += len;
|
|
24
|
-
return a;
|
|
25
|
-
}
|
|
26
|
-
static within(p, a, b) {
|
|
27
|
-
return p >= Math.min(a, b) && p <= Math.max(a, b);
|
|
28
|
-
}
|
|
29
|
-
static randomRange(a, b = 0) {
|
|
30
|
-
let r = (a > b) ? (a - b) : (b - a);
|
|
31
|
-
return a + Num.random() * r;
|
|
32
|
-
}
|
|
33
|
-
static randomPt(a, b) {
|
|
34
|
-
let p = new Pt(a.length);
|
|
35
|
-
let range = b ? Vec.subtract(b, a) : a;
|
|
36
|
-
let start = b ? a : new Pt(a.length).fill(0);
|
|
37
|
-
for (let i = 0, len = p.length; i < len; i++) {
|
|
38
|
-
p[i] = Num.random() * range[i] + start[i];
|
|
39
|
-
}
|
|
40
|
-
return p;
|
|
41
|
-
}
|
|
42
|
-
static normalizeValue(n, a, b) {
|
|
43
|
-
let min = Math.min(a, b);
|
|
44
|
-
let max = Math.max(a, b);
|
|
45
|
-
return (n - min) / (max - min);
|
|
46
|
-
}
|
|
47
|
-
static sum(pts) {
|
|
48
|
-
let _pts = Util.iterToArray(pts);
|
|
49
|
-
let c = new Pt(_pts[0]);
|
|
50
|
-
for (let i = 1, len = _pts.length; i < len; i++) {
|
|
51
|
-
Vec.add(c, _pts[i]);
|
|
52
|
-
}
|
|
53
|
-
return c;
|
|
54
|
-
}
|
|
55
|
-
static average(pts) {
|
|
56
|
-
let _pts = Util.iterToArray(pts);
|
|
57
|
-
return Num.sum(_pts).divide(_pts.length);
|
|
58
|
-
}
|
|
59
|
-
static cycle(t, method = Shaping.sineInOut) {
|
|
60
|
-
return method(t > 0.5 ? 2 - t * 2 : t * 2);
|
|
61
|
-
}
|
|
62
|
-
static mapToRange(n, currA, currB, targetA, targetB) {
|
|
63
|
-
if (currA == currB)
|
|
64
|
-
throw new Error("[currMin, currMax] must define a range that is not zero");
|
|
65
|
-
let min = Math.min(targetA, targetB);
|
|
66
|
-
let max = Math.max(targetA, targetB);
|
|
67
|
-
return Num.normalizeValue(n, currA, currB) * (max - min) + min;
|
|
68
|
-
}
|
|
69
|
-
static seed(seed) {
|
|
70
|
-
this.generator = generator(seed);
|
|
71
|
-
}
|
|
72
|
-
static random() {
|
|
73
|
-
return this.generator
|
|
74
|
-
? this.generator.random()
|
|
75
|
-
: Math.random();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
export class Geom {
|
|
79
|
-
static boundAngle(angle) {
|
|
80
|
-
return Num.boundValue(angle, 0, 360);
|
|
81
|
-
}
|
|
82
|
-
static boundRadian(radian) {
|
|
83
|
-
return Num.boundValue(radian, 0, Const.two_pi);
|
|
84
|
-
}
|
|
85
|
-
static toRadian(angle) {
|
|
86
|
-
return angle * Const.deg_to_rad;
|
|
87
|
-
}
|
|
88
|
-
static toDegree(radian) {
|
|
89
|
-
return radian * Const.rad_to_deg;
|
|
90
|
-
}
|
|
91
|
-
static boundingBox(pts) {
|
|
92
|
-
let minPt, maxPt;
|
|
93
|
-
for (let p of pts) {
|
|
94
|
-
if (minPt == undefined) {
|
|
95
|
-
minPt = p.clone();
|
|
96
|
-
maxPt = p.clone();
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
minPt = minPt.$min(p);
|
|
100
|
-
maxPt = maxPt.$max(p);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return new Group(minPt, maxPt);
|
|
104
|
-
}
|
|
105
|
-
static centroid(pts) {
|
|
106
|
-
return Num.average(pts);
|
|
107
|
-
}
|
|
108
|
-
static anchor(pts, ptOrIndex = 0, direction = "to") {
|
|
109
|
-
let method = (direction == "to") ? "subtract" : "add";
|
|
110
|
-
let i = 0;
|
|
111
|
-
for (let p of pts) {
|
|
112
|
-
if (typeof ptOrIndex == "number") {
|
|
113
|
-
if (ptOrIndex !== i)
|
|
114
|
-
p[method](pts[ptOrIndex]);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
p[method](ptOrIndex);
|
|
118
|
-
}
|
|
119
|
-
i++;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
static interpolate(a, b, t = 0.5) {
|
|
123
|
-
let len = Math.min(a.length, b.length);
|
|
124
|
-
let d = Pt.make(len);
|
|
125
|
-
for (let i = 0; i < len; i++) {
|
|
126
|
-
d[i] = a[i] * (1 - t) + b[i] * t;
|
|
127
|
-
}
|
|
128
|
-
return d;
|
|
129
|
-
}
|
|
130
|
-
static perpendicular(pt, axis = Const.xy) {
|
|
131
|
-
let y = axis[1];
|
|
132
|
-
let x = axis[0];
|
|
133
|
-
let p = new Pt(pt);
|
|
134
|
-
let pa = new Pt(p);
|
|
135
|
-
pa[x] = -p[y];
|
|
136
|
-
pa[y] = p[x];
|
|
137
|
-
let pb = new Pt(p);
|
|
138
|
-
pb[x] = p[y];
|
|
139
|
-
pb[y] = -p[x];
|
|
140
|
-
return new Group(pa, pb);
|
|
141
|
-
}
|
|
142
|
-
static isPerpendicular(p1, p2) {
|
|
143
|
-
return new Pt(p1).dot(p2) === 0;
|
|
144
|
-
}
|
|
145
|
-
static withinBound(pt, boundPt1, boundPt2) {
|
|
146
|
-
for (let i = 0, len = Math.min(pt.length, boundPt1.length, boundPt2.length); i < len; i++) {
|
|
147
|
-
if (!Num.within(pt[i], boundPt1[i], boundPt2[i]))
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
return true;
|
|
151
|
-
}
|
|
152
|
-
static sortEdges(pts) {
|
|
153
|
-
let _pts = Util.iterToArray(pts);
|
|
154
|
-
let bounds = Geom.boundingBox(_pts);
|
|
155
|
-
let center = bounds[1].add(bounds[0]).divide(2);
|
|
156
|
-
let fn = (a, b) => {
|
|
157
|
-
if (a.length < 2 || b.length < 2)
|
|
158
|
-
throw new Error("Pt dimension cannot be less than 2");
|
|
159
|
-
let da = a.$subtract(center);
|
|
160
|
-
let db = b.$subtract(center);
|
|
161
|
-
if (da[0] >= 0 && db[0] < 0)
|
|
162
|
-
return 1;
|
|
163
|
-
if (da[0] < 0 && db[0] >= 0)
|
|
164
|
-
return -1;
|
|
165
|
-
if (da[0] == 0 && db[0] == 0) {
|
|
166
|
-
if (da[1] >= 0 || db[1] >= 0)
|
|
167
|
-
return (da[1] > db[1]) ? 1 : -1;
|
|
168
|
-
return (db[1] > da[1]) ? 1 : -1;
|
|
169
|
-
}
|
|
170
|
-
let det = da.$cross2D(db);
|
|
171
|
-
if (det < 0)
|
|
172
|
-
return 1;
|
|
173
|
-
if (det > 0)
|
|
174
|
-
return -1;
|
|
175
|
-
return (da[0] * da[0] + da[1] * da[1] > db[0] * db[0] + db[1] * db[1]) ? 1 : -1;
|
|
176
|
-
};
|
|
177
|
-
return _pts.sort(fn);
|
|
178
|
-
}
|
|
179
|
-
static scale(ps, scale, anchor) {
|
|
180
|
-
let pts = Util.iterToArray((ps[0] !== undefined && typeof ps[0] == 'number') ? [ps] : ps);
|
|
181
|
-
let scs = (typeof scale == "number") ? Pt.make(pts[0].length, scale) : scale;
|
|
182
|
-
if (!anchor)
|
|
183
|
-
anchor = Pt.make(pts[0].length, 0);
|
|
184
|
-
for (let i = 0, len = pts.length; i < len; i++) {
|
|
185
|
-
let p = pts[i];
|
|
186
|
-
for (let k = 0, lenP = p.length; k < lenP; k++) {
|
|
187
|
-
p[k] = (anchor && anchor[k]) ? anchor[k] + (p[k] - anchor[k]) * scs[k] : p[k] * scs[k];
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
return Geom;
|
|
191
|
-
}
|
|
192
|
-
static rotate2D(ps, angle, anchor, axis) {
|
|
193
|
-
let pts = Util.iterToArray((ps[0] !== undefined && typeof ps[0] == 'number') ? [ps] : ps);
|
|
194
|
-
let fn = (anchor) ? Mat.rotateAt2DMatrix : Mat.rotate2DMatrix;
|
|
195
|
-
if (!anchor)
|
|
196
|
-
anchor = Pt.make(pts[0].length, 0);
|
|
197
|
-
let cos = Math.cos(angle);
|
|
198
|
-
let sin = Math.sin(angle);
|
|
199
|
-
for (let i = 0, len = pts.length; i < len; i++) {
|
|
200
|
-
let p = (axis) ? pts[i].$take(axis) : pts[i];
|
|
201
|
-
p.to(Mat.transform2D(p, fn(cos, sin, anchor)));
|
|
202
|
-
if (axis) {
|
|
203
|
-
for (let k = 0; k < axis.length; k++) {
|
|
204
|
-
pts[i][axis[k]] = p[k];
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return Geom;
|
|
209
|
-
}
|
|
210
|
-
static shear2D(ps, scale, anchor, axis) {
|
|
211
|
-
let pts = Util.iterToArray((ps[0] !== undefined && typeof ps[0] == 'number') ? [ps] : ps);
|
|
212
|
-
let s = (typeof scale == "number") ? [scale, scale] : scale;
|
|
213
|
-
if (!anchor)
|
|
214
|
-
anchor = Pt.make(pts[0].length, 0);
|
|
215
|
-
let fn = (anchor) ? Mat.shearAt2DMatrix : Mat.shear2DMatrix;
|
|
216
|
-
let tanx = Math.tan(s[0]);
|
|
217
|
-
let tany = Math.tan(s[1]);
|
|
218
|
-
for (let i = 0, len = pts.length; i < len; i++) {
|
|
219
|
-
let p = (axis) ? pts[i].$take(axis) : pts[i];
|
|
220
|
-
p.to(Mat.transform2D(p, fn(tanx, tany, anchor)));
|
|
221
|
-
if (axis) {
|
|
222
|
-
for (let k = 0; k < axis.length; k++) {
|
|
223
|
-
pts[i][axis[k]] = p[k];
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return Geom;
|
|
228
|
-
}
|
|
229
|
-
static reflect2D(ps, line, axis) {
|
|
230
|
-
let pts = Util.iterToArray((ps[0] !== undefined && typeof ps[0] == 'number') ? [ps] : ps);
|
|
231
|
-
let _line = Util.iterToArray(line);
|
|
232
|
-
let mat = Mat.reflectAt2DMatrix(_line[0], _line[1]);
|
|
233
|
-
for (let i = 0, len = pts.length; i < len; i++) {
|
|
234
|
-
let p = (axis) ? pts[i].$take(axis) : pts[i];
|
|
235
|
-
p.to(Mat.transform2D(p, mat));
|
|
236
|
-
if (axis) {
|
|
237
|
-
for (let k = 0; k < axis.length; k++) {
|
|
238
|
-
pts[i][axis[k]] = p[k];
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
return Geom;
|
|
243
|
-
}
|
|
244
|
-
static cosTable() {
|
|
245
|
-
let cos = new Float64Array(360);
|
|
246
|
-
for (let i = 0; i < 360; i++)
|
|
247
|
-
cos[i] = Math.cos(i * Math.PI / 180);
|
|
248
|
-
let find = (rad) => cos[Math.floor(Geom.boundAngle(Geom.toDegree(rad)))];
|
|
249
|
-
return { table: cos, cos: find };
|
|
250
|
-
}
|
|
251
|
-
static sinTable() {
|
|
252
|
-
let sin = new Float64Array(360);
|
|
253
|
-
for (let i = 0; i < 360; i++)
|
|
254
|
-
sin[i] = Math.sin(i * Math.PI / 180);
|
|
255
|
-
let find = (rad) => sin[Math.floor(Geom.boundAngle(Geom.toDegree(rad)))];
|
|
256
|
-
return { table: sin, sin: find };
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
export class Shaping {
|
|
260
|
-
static linear(t, c = 1) {
|
|
261
|
-
return c * t;
|
|
262
|
-
}
|
|
263
|
-
static quadraticIn(t, c = 1) {
|
|
264
|
-
return c * t * t;
|
|
265
|
-
}
|
|
266
|
-
static quadraticOut(t, c = 1) {
|
|
267
|
-
return -c * t * (t - 2);
|
|
268
|
-
}
|
|
269
|
-
static quadraticInOut(t, c = 1) {
|
|
270
|
-
let dt = t * 2;
|
|
271
|
-
return (t < 0.5) ? c / 2 * t * t * 4 : -c / 2 * ((dt - 1) * (dt - 3) - 1);
|
|
272
|
-
}
|
|
273
|
-
static cubicIn(t, c = 1) {
|
|
274
|
-
return c * t * t * t;
|
|
275
|
-
}
|
|
276
|
-
static cubicOut(t, c = 1) {
|
|
277
|
-
let dt = t - 1;
|
|
278
|
-
return c * (dt * dt * dt + 1);
|
|
279
|
-
}
|
|
280
|
-
static cubicInOut(t, c = 1) {
|
|
281
|
-
let dt = t * 2;
|
|
282
|
-
return (t < 0.5) ? c / 2 * dt * dt * dt : c / 2 * ((dt - 2) * (dt - 2) * (dt - 2) + 2);
|
|
283
|
-
}
|
|
284
|
-
static exponentialIn(t, c = 1, p = 0.25) {
|
|
285
|
-
return c * Math.pow(t, 1 / p);
|
|
286
|
-
}
|
|
287
|
-
static exponentialOut(t, c = 1, p = 0.25) {
|
|
288
|
-
return c * Math.pow(t, p);
|
|
289
|
-
}
|
|
290
|
-
static sineIn(t, c = 1) {
|
|
291
|
-
return -c * Math.cos(t * Const.half_pi) + c;
|
|
292
|
-
}
|
|
293
|
-
static sineOut(t, c = 1) {
|
|
294
|
-
return c * Math.sin(t * Const.half_pi);
|
|
295
|
-
}
|
|
296
|
-
static sineInOut(t, c = 1) {
|
|
297
|
-
return -c / 2 * (Math.cos(Math.PI * t) - 1);
|
|
298
|
-
}
|
|
299
|
-
static cosineApprox(t, c = 1) {
|
|
300
|
-
let t2 = t * t;
|
|
301
|
-
let t4 = t2 * t2;
|
|
302
|
-
let t6 = t4 * t2;
|
|
303
|
-
return c * (4 * t6 / 9 - 17 * t4 / 9 + 22 * t2 / 9);
|
|
304
|
-
}
|
|
305
|
-
static circularIn(t, c = 1) {
|
|
306
|
-
return -c * (Math.sqrt(1 - t * t) - 1);
|
|
307
|
-
}
|
|
308
|
-
static circularOut(t, c = 1) {
|
|
309
|
-
let dt = t - 1;
|
|
310
|
-
return c * Math.sqrt(1 - dt * dt);
|
|
311
|
-
}
|
|
312
|
-
static circularInOut(t, c = 1) {
|
|
313
|
-
let dt = t * 2;
|
|
314
|
-
return (t < 0.5) ? -c / 2 * (Math.sqrt(1 - dt * dt) - 1) : c / 2 * (Math.sqrt(1 - (dt - 2) * (dt - 2)) + 1);
|
|
315
|
-
}
|
|
316
|
-
static elasticIn(t, c = 1, p = 0.7) {
|
|
317
|
-
let dt = t - 1;
|
|
318
|
-
let s = (p / Const.two_pi) * 1.5707963267948966;
|
|
319
|
-
return c * (-Math.pow(2, 10 * dt) * Math.sin((dt - s) * Const.two_pi / p));
|
|
320
|
-
}
|
|
321
|
-
static elasticOut(t, c = 1, p = 0.7) {
|
|
322
|
-
let s = (p / Const.two_pi) * 1.5707963267948966;
|
|
323
|
-
return c * (Math.pow(2, -10 * t) * Math.sin((t - s) * Const.two_pi / p)) + c;
|
|
324
|
-
}
|
|
325
|
-
static elasticInOut(t, c = 1, p = 0.6) {
|
|
326
|
-
let dt = t * 2;
|
|
327
|
-
let s = (p / Const.two_pi) * 1.5707963267948966;
|
|
328
|
-
if (t < 0.5) {
|
|
329
|
-
dt -= 1;
|
|
330
|
-
return c * (-0.5 * (Math.pow(2, 10 * dt) * Math.sin((dt - s) * Const.two_pi / p)));
|
|
331
|
-
}
|
|
332
|
-
else {
|
|
333
|
-
dt -= 1;
|
|
334
|
-
return c * (0.5 * (Math.pow(2, -10 * dt) * Math.sin((dt - s) * Const.two_pi / p))) + c;
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
static bounceIn(t, c = 1) {
|
|
338
|
-
return c - Shaping.bounceOut((1 - t), c);
|
|
339
|
-
}
|
|
340
|
-
static bounceOut(t, c = 1) {
|
|
341
|
-
if (t < (1 / 2.75)) {
|
|
342
|
-
return c * (7.5625 * t * t);
|
|
343
|
-
}
|
|
344
|
-
else if (t < (2 / 2.75)) {
|
|
345
|
-
t -= 1.5 / 2.75;
|
|
346
|
-
return c * (7.5625 * t * t + 0.75);
|
|
347
|
-
}
|
|
348
|
-
else if (t < (2.5 / 2.75)) {
|
|
349
|
-
t -= 2.25 / 2.75;
|
|
350
|
-
return c * (7.5625 * t * t + 0.9375);
|
|
351
|
-
}
|
|
352
|
-
else {
|
|
353
|
-
t -= 2.625 / 2.75;
|
|
354
|
-
return c * (7.5625 * t * t + 0.984375);
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
static bounceInOut(t, c = 1) {
|
|
358
|
-
return (t < 0.5) ? Shaping.bounceIn(t * 2, c) / 2 : Shaping.bounceOut(t * 2 - 1, c) / 2 + c / 2;
|
|
359
|
-
}
|
|
360
|
-
static sigmoid(t, c = 1, p = 10) {
|
|
361
|
-
let d = p * (t - 0.5);
|
|
362
|
-
return c / (1 + Math.exp(-d));
|
|
363
|
-
}
|
|
364
|
-
static logSigmoid(t, c = 1, p = 0.7) {
|
|
365
|
-
p = Math.max(Const.epsilon, Math.min(1 - Const.epsilon, p));
|
|
366
|
-
p = 1 / (1 - p);
|
|
367
|
-
let A = 1 / (1 + Math.exp(((t - 0.5) * p * -2)));
|
|
368
|
-
let B = 1 / (1 + Math.exp(p));
|
|
369
|
-
let C = 1 / (1 + Math.exp(-p));
|
|
370
|
-
return c * (A - B) / (C - B);
|
|
371
|
-
}
|
|
372
|
-
static seat(t, c = 1, p = 0.5) {
|
|
373
|
-
if ((t < 0.5)) {
|
|
374
|
-
return c * (Math.pow(2 * t, 1 - p)) / 2;
|
|
375
|
-
}
|
|
376
|
-
else {
|
|
377
|
-
return c * (1 - (Math.pow(2 * (1 - t), 1 - p)) / 2);
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
static quadraticBezier(t, c = 1, p = [0.05, 0.95]) {
|
|
381
|
-
let a = (typeof p != "number") ? p[0] : p;
|
|
382
|
-
let b = (typeof p != "number") ? p[1] : 0.5;
|
|
383
|
-
let om2a = 1 - 2 * a;
|
|
384
|
-
if (om2a === 0) {
|
|
385
|
-
om2a = Const.epsilon;
|
|
386
|
-
}
|
|
387
|
-
let d = (Math.sqrt(a * a + om2a * t) - a) / om2a;
|
|
388
|
-
return c * ((1 - 2 * b) * (d * d) + (2 * b) * d);
|
|
389
|
-
}
|
|
390
|
-
static cubicBezier(t, c = 1, p1 = [0.1, 0.7], p2 = [0.9, 0.2]) {
|
|
391
|
-
let curve = new Group(new Pt(0, 0), new Pt(p1), new Pt(p2), new Pt(1, 1));
|
|
392
|
-
return c * Curve.bezierStep(new Pt(t * t * t, t * t, t, 1), Curve.controlPoints(curve)).y;
|
|
393
|
-
}
|
|
394
|
-
static quadraticTarget(t, c = 1, p1 = [0.2, 0.35]) {
|
|
395
|
-
let a = Math.min(1 - Const.epsilon, Math.max(Const.epsilon, p1[0]));
|
|
396
|
-
let b = Math.min(1, Math.max(0, p1[1]));
|
|
397
|
-
let A = (1 - b) / (1 - a) - (b / a);
|
|
398
|
-
let B = (A * (a * a) - b) / a;
|
|
399
|
-
let y = A * (t * t) - B * t;
|
|
400
|
-
return c * Math.min(1, Math.max(0, y));
|
|
401
|
-
}
|
|
402
|
-
static cliff(t, c = 1, p = 0.5) {
|
|
403
|
-
return (t > p) ? c : 0;
|
|
404
|
-
}
|
|
405
|
-
static step(fn, steps, t, c, ...args) {
|
|
406
|
-
let s = 1 / steps;
|
|
407
|
-
let tt = Math.floor(t / s) * s;
|
|
408
|
-
return fn(tt, c, ...args);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
export class Range {
|
|
412
|
-
constructor(g) {
|
|
413
|
-
this._dims = 0;
|
|
414
|
-
this._source = Group.fromPtArray(g);
|
|
415
|
-
this.calc();
|
|
416
|
-
}
|
|
417
|
-
get max() { return this._max.clone(); }
|
|
418
|
-
get min() { return this._min.clone(); }
|
|
419
|
-
get magnitude() { return this._mag.clone(); }
|
|
420
|
-
calc() {
|
|
421
|
-
if (!this._source)
|
|
422
|
-
return;
|
|
423
|
-
let dims = this._source[0].length;
|
|
424
|
-
this._dims = dims;
|
|
425
|
-
let max = new Pt(dims);
|
|
426
|
-
let min = new Pt(dims);
|
|
427
|
-
let mag = new Pt(dims);
|
|
428
|
-
for (let i = 0; i < dims; i++) {
|
|
429
|
-
max[i] = Const.min;
|
|
430
|
-
min[i] = Const.max;
|
|
431
|
-
mag[i] = 0;
|
|
432
|
-
let s = this._source.zipSlice(i);
|
|
433
|
-
for (let k = 0, len = s.length; k < len; k++) {
|
|
434
|
-
max[i] = Math.max(max[i], s[k]);
|
|
435
|
-
min[i] = Math.min(min[i], s[k]);
|
|
436
|
-
mag[i] = max[i] - min[i];
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
this._max = max;
|
|
440
|
-
this._min = min;
|
|
441
|
-
this._mag = mag;
|
|
442
|
-
return this;
|
|
443
|
-
}
|
|
444
|
-
mapTo(min, max, exclude) {
|
|
445
|
-
let target = new Group();
|
|
446
|
-
for (let i = 0, len = this._source.length; i < len; i++) {
|
|
447
|
-
let g = this._source[i];
|
|
448
|
-
let n = new Pt(this._dims);
|
|
449
|
-
for (let k = 0; k < this._dims; k++) {
|
|
450
|
-
n[k] = (exclude && exclude[k]) ? g[k] : Num.mapToRange(g[k], this._min[k], this._max[k], min, max);
|
|
451
|
-
}
|
|
452
|
-
target.push(n);
|
|
453
|
-
}
|
|
454
|
-
return target;
|
|
455
|
-
}
|
|
456
|
-
append(pts, update = true) {
|
|
457
|
-
let _pts = Util.iterToArray(pts);
|
|
458
|
-
if (_pts[0].length !== this._dims)
|
|
459
|
-
throw new Error(`Dimensions don't match. ${this._dims} dimensions in Range and ${_pts[0].length} provided in parameter. `);
|
|
460
|
-
this._source = this._source.concat(_pts);
|
|
461
|
-
if (update)
|
|
462
|
-
this.calc();
|
|
463
|
-
return this;
|
|
464
|
-
}
|
|
465
|
-
ticks(count) {
|
|
466
|
-
let g = new Group();
|
|
467
|
-
for (let i = 0; i <= count; i++) {
|
|
468
|
-
let p = new Pt(this._dims);
|
|
469
|
-
for (let k = 0, len = this._max.length; k < len; k++) {
|
|
470
|
-
p[k] = Num.lerp(this._min[k], this._max[k], i / count);
|
|
471
|
-
}
|
|
472
|
-
g.push(p);
|
|
473
|
-
}
|
|
474
|
-
return g;
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
//# sourceMappingURL=Num.js.map
|
package/dist/es2015/Num.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Num.js","sourceRoot":"","sources":["../../src/Num.ts"],"names":[],"mappings":"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"}
|