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/Create.js
DELETED
|
@@ -1,275 +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 { Pt, Group } from "./Pt";
|
|
3
|
-
import { Line, Triangle } from "./Op";
|
|
4
|
-
import { Const, Util } from "./Util";
|
|
5
|
-
import { Num, Geom } from "./Num";
|
|
6
|
-
import { Vec } from "./LinearAlgebra";
|
|
7
|
-
export class Create {
|
|
8
|
-
static distributeRandom(bound, count, dimensions = 2) {
|
|
9
|
-
let pts = new Group();
|
|
10
|
-
for (let i = 0; i < count; i++) {
|
|
11
|
-
let p = [bound.x + Num.random() * bound.width];
|
|
12
|
-
if (dimensions > 1)
|
|
13
|
-
p.push(bound.y + Num.random() * bound.height);
|
|
14
|
-
if (dimensions > 2)
|
|
15
|
-
p.push(bound.z + Num.random() * bound.depth);
|
|
16
|
-
pts.push(new Pt(p));
|
|
17
|
-
}
|
|
18
|
-
return pts;
|
|
19
|
-
}
|
|
20
|
-
static distributeLinear(line, count) {
|
|
21
|
-
let _line = Util.iterToArray(line);
|
|
22
|
-
let ln = Line.subpoints(_line, count - 2);
|
|
23
|
-
ln.unshift(_line[0]);
|
|
24
|
-
ln.push(_line[_line.length - 1]);
|
|
25
|
-
return ln;
|
|
26
|
-
}
|
|
27
|
-
static gridPts(bound, columns, rows, orientation = [0.5, 0.5]) {
|
|
28
|
-
if (columns === 0 || rows === 0)
|
|
29
|
-
throw new Error("grid columns and rows cannot be 0");
|
|
30
|
-
let unit = bound.size.$subtract(1).$divide(columns, rows);
|
|
31
|
-
let offset = unit.$multiply(orientation);
|
|
32
|
-
let g = new Group();
|
|
33
|
-
for (let r = 0; r < rows; r++) {
|
|
34
|
-
for (let c = 0; c < columns; c++) {
|
|
35
|
-
g.push(bound.topLeft.$add(unit.$multiply(c, r)).add(offset));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return g;
|
|
39
|
-
}
|
|
40
|
-
static gridCells(bound, columns, rows) {
|
|
41
|
-
if (columns === 0 || rows === 0)
|
|
42
|
-
throw new Error("grid columns and rows cannot be 0");
|
|
43
|
-
let unit = bound.size.$subtract(1).divide(columns, rows);
|
|
44
|
-
let g = [];
|
|
45
|
-
for (let r = 0; r < rows; r++) {
|
|
46
|
-
for (let c = 0; c < columns; c++) {
|
|
47
|
-
g.push(new Group(bound.topLeft.$add(unit.$multiply(c, r)), bound.topLeft.$add(unit.$multiply(c, r).add(unit))));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return g;
|
|
51
|
-
}
|
|
52
|
-
static radialPts(center, radius, count, angleOffset = -Const.half_pi) {
|
|
53
|
-
let g = new Group();
|
|
54
|
-
let a = Const.two_pi / count;
|
|
55
|
-
for (let i = 0; i < count; i++) {
|
|
56
|
-
g.push(new Pt(center).toAngle(a * i + angleOffset, radius, true));
|
|
57
|
-
}
|
|
58
|
-
return g;
|
|
59
|
-
}
|
|
60
|
-
static noisePts(pts, dx = 0.01, dy = 0.01, rows = 0, columns = 0) {
|
|
61
|
-
let seed = Num.random();
|
|
62
|
-
let g = new Group();
|
|
63
|
-
let i = 0;
|
|
64
|
-
for (let p of pts) {
|
|
65
|
-
let np = new Noise(p);
|
|
66
|
-
let r = (rows && rows > 0) ? Math.floor(i / rows) : i;
|
|
67
|
-
let c = (columns && columns > 0) ? i % columns : i;
|
|
68
|
-
np.initNoise(dx * c, dy * r);
|
|
69
|
-
np.seed(seed);
|
|
70
|
-
g.push(np);
|
|
71
|
-
i++;
|
|
72
|
-
}
|
|
73
|
-
return g;
|
|
74
|
-
}
|
|
75
|
-
static delaunay(pts) {
|
|
76
|
-
return Delaunay.from(pts);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
const __noise_grad3 = [
|
|
80
|
-
[1, 1, 0], [-1, 1, 0], [1, -1, 0], [-1, -1, 0],
|
|
81
|
-
[1, 0, 1], [-1, 0, 1], [1, 0, -1], [-1, 0, -1],
|
|
82
|
-
[0, 1, 1], [0, -1, 1], [0, 1, -1], [0, -1, -1]
|
|
83
|
-
];
|
|
84
|
-
const __noise_permTable = [151, 160, 137, 91, 90, 15,
|
|
85
|
-
131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23,
|
|
86
|
-
190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33,
|
|
87
|
-
88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166,
|
|
88
|
-
77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244,
|
|
89
|
-
102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196,
|
|
90
|
-
135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123,
|
|
91
|
-
5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,
|
|
92
|
-
223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9,
|
|
93
|
-
129, 22, 39, 253, 9, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228,
|
|
94
|
-
251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107,
|
|
95
|
-
49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254,
|
|
96
|
-
138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180
|
|
97
|
-
];
|
|
98
|
-
export class Noise extends Pt {
|
|
99
|
-
constructor(...args) {
|
|
100
|
-
super(...args);
|
|
101
|
-
this.perm = [];
|
|
102
|
-
this._n = new Pt(0.01, 0.01);
|
|
103
|
-
this.perm = __noise_permTable.concat(__noise_permTable);
|
|
104
|
-
}
|
|
105
|
-
initNoise(...args) {
|
|
106
|
-
this._n = new Pt(...args);
|
|
107
|
-
return this;
|
|
108
|
-
}
|
|
109
|
-
step(x = 0, y = 0) {
|
|
110
|
-
this._n.add(x, y);
|
|
111
|
-
return this;
|
|
112
|
-
}
|
|
113
|
-
seed(s) {
|
|
114
|
-
if (s > 0 && s < 1)
|
|
115
|
-
s *= 65536;
|
|
116
|
-
s = Math.floor(s);
|
|
117
|
-
if (s < 256)
|
|
118
|
-
s |= s << 8;
|
|
119
|
-
for (let i = 0; i < 255; i++) {
|
|
120
|
-
let v = (i & 1) ? __noise_permTable[i] ^ (s & 255) : __noise_permTable[i] ^ ((s >> 8) & 255);
|
|
121
|
-
this.perm[i] = this.perm[i + 256] = v;
|
|
122
|
-
}
|
|
123
|
-
return this;
|
|
124
|
-
}
|
|
125
|
-
noise2D() {
|
|
126
|
-
let i = Math.max(0, Math.floor(this._n[0])) % 255;
|
|
127
|
-
let j = Math.max(0, Math.floor(this._n[1])) % 255;
|
|
128
|
-
let x = (this._n[0] % 255) - i;
|
|
129
|
-
let y = (this._n[1] % 255) - j;
|
|
130
|
-
let n00 = Vec.dot(__noise_grad3[(i + this.perm[j]) % 12], [x, y, 0]);
|
|
131
|
-
let n01 = Vec.dot(__noise_grad3[(i + this.perm[j + 1]) % 12], [x, y - 1, 0]);
|
|
132
|
-
let n10 = Vec.dot(__noise_grad3[(i + 1 + this.perm[j]) % 12], [x - 1, y, 0]);
|
|
133
|
-
let n11 = Vec.dot(__noise_grad3[(i + 1 + this.perm[j + 1]) % 12], [x - 1, y - 1, 0]);
|
|
134
|
-
let _fade = (f) => f * f * f * (f * (f * 6 - 15) + 10);
|
|
135
|
-
let tx = _fade(x);
|
|
136
|
-
return Num.lerp(Num.lerp(n00, n10, tx), Num.lerp(n01, n11, tx), _fade(y));
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
export class Delaunay extends Group {
|
|
140
|
-
constructor() {
|
|
141
|
-
super(...arguments);
|
|
142
|
-
this._mesh = [];
|
|
143
|
-
}
|
|
144
|
-
delaunay(triangleOnly = true) {
|
|
145
|
-
if (this.length < 3)
|
|
146
|
-
return [];
|
|
147
|
-
this._mesh = [];
|
|
148
|
-
let n = this.length;
|
|
149
|
-
let indices = [];
|
|
150
|
-
for (let i = 0; i < n; i++)
|
|
151
|
-
indices[i] = i;
|
|
152
|
-
indices.sort((i, j) => this[j][0] - this[i][0]);
|
|
153
|
-
let pts = this.slice();
|
|
154
|
-
let st = this._superTriangle();
|
|
155
|
-
pts = pts.concat(st);
|
|
156
|
-
let opened = [this._circum(n, n + 1, n + 2, st)];
|
|
157
|
-
let closed = [];
|
|
158
|
-
let tris = [];
|
|
159
|
-
for (let i = 0, len = indices.length; i < len; i++) {
|
|
160
|
-
let c = indices[i];
|
|
161
|
-
let edges = [];
|
|
162
|
-
let j = opened.length;
|
|
163
|
-
if (!this._mesh[c])
|
|
164
|
-
this._mesh[c] = {};
|
|
165
|
-
while (j--) {
|
|
166
|
-
let circum = opened[j];
|
|
167
|
-
let radius = circum.circle[1][0];
|
|
168
|
-
let d = pts[c].$subtract(circum.circle[0]);
|
|
169
|
-
if (d[0] > 0 && d[0] * d[0] > radius * radius) {
|
|
170
|
-
closed.push(circum);
|
|
171
|
-
tris.push(circum.triangle);
|
|
172
|
-
opened.splice(j, 1);
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
if (d[0] * d[0] + d[1] * d[1] - radius * radius > Const.epsilon) {
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
edges.push(circum.i, circum.j, circum.j, circum.k, circum.k, circum.i);
|
|
179
|
-
opened.splice(j, 1);
|
|
180
|
-
}
|
|
181
|
-
Delaunay._dedupe(edges);
|
|
182
|
-
j = edges.length;
|
|
183
|
-
while (j > 1) {
|
|
184
|
-
opened.push(this._circum(edges[--j], edges[--j], c, false, pts));
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
for (let i = 0, len = opened.length; i < len; i++) {
|
|
188
|
-
let o = opened[i];
|
|
189
|
-
if (o.i < n && o.j < n && o.k < n) {
|
|
190
|
-
closed.push(o);
|
|
191
|
-
tris.push(o.triangle);
|
|
192
|
-
this._cache(o);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return (triangleOnly) ? tris : closed;
|
|
196
|
-
}
|
|
197
|
-
voronoi() {
|
|
198
|
-
let vs = [];
|
|
199
|
-
let n = this._mesh;
|
|
200
|
-
for (let i = 0, len = n.length; i < len; i++) {
|
|
201
|
-
vs.push(this.neighborPts(i, true));
|
|
202
|
-
}
|
|
203
|
-
return vs;
|
|
204
|
-
}
|
|
205
|
-
mesh() {
|
|
206
|
-
return this._mesh;
|
|
207
|
-
}
|
|
208
|
-
neighborPts(i, sort = false) {
|
|
209
|
-
let cs = new Group();
|
|
210
|
-
let n = this._mesh;
|
|
211
|
-
for (let k in n[i]) {
|
|
212
|
-
if (n[i].hasOwnProperty(k))
|
|
213
|
-
cs.push(n[i][k].circle[0]);
|
|
214
|
-
}
|
|
215
|
-
return (sort) ? Geom.sortEdges(cs) : cs;
|
|
216
|
-
}
|
|
217
|
-
neighbors(i) {
|
|
218
|
-
let cs = [];
|
|
219
|
-
let n = this._mesh;
|
|
220
|
-
for (let k in n[i]) {
|
|
221
|
-
if (n[i].hasOwnProperty(k))
|
|
222
|
-
cs.push(n[i][k]);
|
|
223
|
-
}
|
|
224
|
-
return cs;
|
|
225
|
-
}
|
|
226
|
-
_cache(o) {
|
|
227
|
-
this._mesh[o.i][`${Math.min(o.j, o.k)}-${Math.max(o.j, o.k)}`] = o;
|
|
228
|
-
this._mesh[o.j][`${Math.min(o.i, o.k)}-${Math.max(o.i, o.k)}`] = o;
|
|
229
|
-
this._mesh[o.k][`${Math.min(o.i, o.j)}-${Math.max(o.i, o.j)}`] = o;
|
|
230
|
-
}
|
|
231
|
-
_superTriangle() {
|
|
232
|
-
let minPt = this[0];
|
|
233
|
-
let maxPt = this[0];
|
|
234
|
-
for (let i = 1, len = this.length; i < len; i++) {
|
|
235
|
-
minPt = minPt.$min(this[i]);
|
|
236
|
-
maxPt = maxPt.$max(this[i]);
|
|
237
|
-
}
|
|
238
|
-
let d = maxPt.$subtract(minPt);
|
|
239
|
-
let mid = minPt.$add(maxPt).divide(2);
|
|
240
|
-
let dmax = Math.max(d[0], d[1]);
|
|
241
|
-
return new Group(mid.$subtract(20 * dmax, dmax), mid.$add(0, 20 * dmax), mid.$add(20 * dmax, -dmax));
|
|
242
|
-
}
|
|
243
|
-
_triangle(i, j, k, pts = this) {
|
|
244
|
-
return new Group(pts[i], pts[j], pts[k]);
|
|
245
|
-
}
|
|
246
|
-
_circum(i, j, k, tri, pts = this) {
|
|
247
|
-
let t = tri || this._triangle(i, j, k, pts);
|
|
248
|
-
return {
|
|
249
|
-
i: i,
|
|
250
|
-
j: j,
|
|
251
|
-
k: k,
|
|
252
|
-
triangle: t,
|
|
253
|
-
circle: Triangle.circumcircle(t)
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
static _dedupe(edges) {
|
|
257
|
-
let j = edges.length;
|
|
258
|
-
while (j > 1) {
|
|
259
|
-
let b = edges[--j];
|
|
260
|
-
let a = edges[--j];
|
|
261
|
-
let i = j;
|
|
262
|
-
while (i > 1) {
|
|
263
|
-
let n = edges[--i];
|
|
264
|
-
let m = edges[--i];
|
|
265
|
-
if ((a == m && b == n) || (a == n && b == m)) {
|
|
266
|
-
edges.splice(j, 2);
|
|
267
|
-
edges.splice(i, 2);
|
|
268
|
-
break;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
return edges;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
//# sourceMappingURL=Create.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Create.js","sourceRoot":"","sources":["../../src/Create.ts"],"names":[],"mappings":"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G,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE;IAC1E,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG;IAC1E,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG;IAC3E,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG;IACxE,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG;IAC1E,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAA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"}
|