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.
Files changed (50) hide show
  1. package/dist/{pts.d.ts → index.d.ts} +1245 -1207
  2. package/dist/index.js +6825 -6660
  3. package/dist/index.mjs +6785 -0
  4. package/package.json +12 -33
  5. package/tsup.browser.js +21 -0
  6. package/tsup.min.js +23 -0
  7. package/tsup.module.js +15 -0
  8. package/dist/es2015/Canvas.js +0 -684
  9. package/dist/es2015/Canvas.js.map +0 -1
  10. package/dist/es2015/Color.js +0 -337
  11. package/dist/es2015/Color.js.map +0 -1
  12. package/dist/es2015/Create.js +0 -275
  13. package/dist/es2015/Create.js.map +0 -1
  14. package/dist/es2015/Dom.js +0 -448
  15. package/dist/es2015/Dom.js.map +0 -1
  16. package/dist/es2015/Form.js +0 -80
  17. package/dist/es2015/Form.js.map +0 -1
  18. package/dist/es2015/Image.js +0 -220
  19. package/dist/es2015/Image.js.map +0 -1
  20. package/dist/es2015/LinearAlgebra.js +0 -286
  21. package/dist/es2015/LinearAlgebra.js.map +0 -1
  22. package/dist/es2015/Num.js +0 -477
  23. package/dist/es2015/Num.js.map +0 -1
  24. package/dist/es2015/Op.js +0 -978
  25. package/dist/es2015/Op.js.map +0 -1
  26. package/dist/es2015/Physics.js +0 -383
  27. package/dist/es2015/Physics.js.map +0 -1
  28. package/dist/es2015/Play.js +0 -339
  29. package/dist/es2015/Play.js.map +0 -1
  30. package/dist/es2015/Pt.js +0 -463
  31. package/dist/es2015/Pt.js.map +0 -1
  32. package/dist/es2015/Space.js +0 -331
  33. package/dist/es2015/Space.js.map +0 -1
  34. package/dist/es2015/Svg.js +0 -367
  35. package/dist/es2015/Svg.js.map +0 -1
  36. package/dist/es2015/Types.js +0 -3
  37. package/dist/es2015/Types.js.map +0 -1
  38. package/dist/es2015/Typography.js +0 -40
  39. package/dist/es2015/Typography.js.map +0 -1
  40. package/dist/es2015/UI.js +0 -273
  41. package/dist/es2015/UI.js.map +0 -1
  42. package/dist/es2015/Util.js +0 -200
  43. package/dist/es2015/Util.js.map +0 -1
  44. package/dist/es2015/_lib.js +0 -45
  45. package/dist/es2015/_lib.js.map +0 -1
  46. package/dist/es2015/_module.js +0 -18
  47. package/dist/es2015/_module.js.map +0 -1
  48. package/dist/es2015/uheprng.js +0 -69
  49. package/dist/es2015/uheprng.js.map +0 -1
  50. package/dist/index.js.map +0 -1
@@ -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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"}