@tsparticles/perlin-noise 3.0.0-beta.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.
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PerlinNoise = void 0;
4
+ const Grad_js_1 = require("./Grad.js");
5
+ class PerlinNoise {
6
+ constructor() {
7
+ this._grad3 = [
8
+ new Grad_js_1.Grad(1, 1, 0),
9
+ new Grad_js_1.Grad(-1, 1, 0),
10
+ new Grad_js_1.Grad(1, -1, 0),
11
+ new Grad_js_1.Grad(-1, -1, 0),
12
+ new Grad_js_1.Grad(1, 0, 1),
13
+ new Grad_js_1.Grad(-1, 0, 1),
14
+ new Grad_js_1.Grad(1, 0, -1),
15
+ new Grad_js_1.Grad(-1, 0, -1),
16
+ new Grad_js_1.Grad(0, 1, 1),
17
+ new Grad_js_1.Grad(0, -1, 1),
18
+ new Grad_js_1.Grad(0, 1, -1),
19
+ new Grad_js_1.Grad(0, -1, -1),
20
+ ];
21
+ this._p = [
22
+ 151,
23
+ 160,
24
+ 137,
25
+ 91,
26
+ 90,
27
+ 15,
28
+ 131,
29
+ 13,
30
+ 201,
31
+ 95,
32
+ 96,
33
+ 53,
34
+ 194,
35
+ 233,
36
+ 7,
37
+ 225,
38
+ 140,
39
+ 36,
40
+ 103,
41
+ 30,
42
+ 69,
43
+ 142,
44
+ 8,
45
+ 99,
46
+ 37,
47
+ 240,
48
+ 21,
49
+ 10,
50
+ 23,
51
+ 190,
52
+ 6,
53
+ 148,
54
+ 247,
55
+ 120,
56
+ 234,
57
+ 75,
58
+ 0,
59
+ 26,
60
+ 197,
61
+ 62,
62
+ 94,
63
+ 252,
64
+ 219,
65
+ 203,
66
+ 117,
67
+ 35,
68
+ 11,
69
+ 32,
70
+ 57,
71
+ 177,
72
+ 33,
73
+ 88,
74
+ 237,
75
+ 149,
76
+ 56,
77
+ 87,
78
+ 174,
79
+ 20,
80
+ 125,
81
+ 136,
82
+ 171,
83
+ 168,
84
+ 68,
85
+ 175,
86
+ 74,
87
+ 165,
88
+ 71,
89
+ 134,
90
+ 139,
91
+ 48,
92
+ 27,
93
+ 166,
94
+ 77,
95
+ 146,
96
+ 158,
97
+ 231,
98
+ 83,
99
+ 111,
100
+ 229,
101
+ 122,
102
+ 60,
103
+ 211,
104
+ 133,
105
+ 230,
106
+ 220,
107
+ 105,
108
+ 92,
109
+ 41,
110
+ 55,
111
+ 46,
112
+ 245,
113
+ 40,
114
+ 244,
115
+ 102,
116
+ 143,
117
+ 54,
118
+ 65,
119
+ 25,
120
+ 63,
121
+ 161,
122
+ 1,
123
+ 216,
124
+ 80,
125
+ 73,
126
+ 209,
127
+ 76,
128
+ 132,
129
+ 187,
130
+ 208,
131
+ 89,
132
+ 18,
133
+ 169,
134
+ 200,
135
+ 196,
136
+ 135,
137
+ 130,
138
+ 116,
139
+ 188,
140
+ 159,
141
+ 86,
142
+ 164,
143
+ 100,
144
+ 109,
145
+ 198,
146
+ 173,
147
+ 186,
148
+ 3,
149
+ 64,
150
+ 52,
151
+ 217,
152
+ 226,
153
+ 250,
154
+ 124,
155
+ 123,
156
+ 5,
157
+ 202,
158
+ 38,
159
+ 147,
160
+ 118,
161
+ 126,
162
+ 255,
163
+ 82,
164
+ 85,
165
+ 212,
166
+ 207,
167
+ 206,
168
+ 59,
169
+ 227,
170
+ 47,
171
+ 16,
172
+ 58,
173
+ 17,
174
+ 182,
175
+ 189,
176
+ 28,
177
+ 42,
178
+ 223,
179
+ 183,
180
+ 170,
181
+ 213,
182
+ 119,
183
+ 248,
184
+ 152,
185
+ 2,
186
+ 44,
187
+ 154,
188
+ 163,
189
+ 70,
190
+ 221,
191
+ 153,
192
+ 101,
193
+ 155,
194
+ 167,
195
+ 43,
196
+ 172,
197
+ 9,
198
+ 129,
199
+ 22,
200
+ 39,
201
+ 253,
202
+ 19,
203
+ 98,
204
+ 108,
205
+ 110,
206
+ 79,
207
+ 113,
208
+ 224,
209
+ 232,
210
+ 178,
211
+ 185,
212
+ 112,
213
+ 104,
214
+ 218,
215
+ 246,
216
+ 97,
217
+ 228,
218
+ 251,
219
+ 34,
220
+ 242,
221
+ 193,
222
+ 238,
223
+ 210,
224
+ 144,
225
+ 12,
226
+ 191,
227
+ 179,
228
+ 162,
229
+ 241,
230
+ 81,
231
+ 51,
232
+ 145,
233
+ 235,
234
+ 249,
235
+ 14,
236
+ 239,
237
+ 107,
238
+ 49,
239
+ 192,
240
+ 214,
241
+ 31,
242
+ 181,
243
+ 199,
244
+ 106,
245
+ 157,
246
+ 184,
247
+ 84,
248
+ 204,
249
+ 176,
250
+ 115,
251
+ 121,
252
+ 50,
253
+ 45,
254
+ 127,
255
+ 4,
256
+ 150,
257
+ 254,
258
+ 138,
259
+ 236,
260
+ 205,
261
+ 93,
262
+ 222,
263
+ 114,
264
+ 67,
265
+ 29,
266
+ 24,
267
+ 72,
268
+ 243,
269
+ 141,
270
+ 128,
271
+ 195,
272
+ 78,
273
+ 66,
274
+ 215,
275
+ 61,
276
+ 156,
277
+ 180,
278
+ ];
279
+ this._gradP = new Array(512);
280
+ this._perm = new Array(512);
281
+ }
282
+ noise2d(x, y) {
283
+ const { _gradP, _perm } = this;
284
+ let X = Math.floor(x), Y = Math.floor(y);
285
+ x = x - X;
286
+ y = y - Y;
287
+ X = X & 255;
288
+ Y = Y & 255;
289
+ const n00 = _gradP[X + _perm[Y]].dot2(x, y), n01 = _gradP[X + _perm[Y + 1]].dot2(x, y - 1), n10 = _gradP[X + 1 + _perm[Y]].dot2(x - 1, y), n11 = _gradP[X + 1 + _perm[Y + 1]].dot2(x - 1, y - 1);
290
+ const u = this._fade(x);
291
+ return this._lerp(this._lerp(n00, n10, u), this._lerp(n01, n11, u), this._fade(y));
292
+ }
293
+ noise3d(x, y, z) {
294
+ const { _gradP: gradP, _perm: perm } = this;
295
+ let X = Math.floor(x), Y = Math.floor(y), Z = Math.floor(z);
296
+ x = x - X;
297
+ y = y - Y;
298
+ z = z - Z;
299
+ X = X & 255;
300
+ Y = Y & 255;
301
+ Z = Z & 255;
302
+ const n000 = gradP[X + perm[Y + perm[Z]]].dot3(x, y, z), n001 = gradP[X + perm[Y + perm[Z + 1]]].dot3(x, y, z - 1), n010 = gradP[X + perm[Y + 1 + perm[Z]]].dot3(x, y - 1, z), n011 = gradP[X + perm[Y + 1 + perm[Z + 1]]].dot3(x, y - 1, z - 1), n100 = gradP[X + 1 + perm[Y + perm[Z]]].dot3(x - 1, y, z), n101 = gradP[X + 1 + perm[Y + perm[Z + 1]]].dot3(x - 1, y, z - 1), n110 = gradP[X + 1 + perm[Y + 1 + perm[Z]]].dot3(x - 1, y - 1, z), n111 = gradP[X + 1 + perm[Y + 1 + perm[Z + 1]]].dot3(x - 1, y - 1, z - 1), u = this._fade(x), v = this._fade(y), w = this._fade(z);
303
+ return this._lerp(this._lerp(this._lerp(n000, n100, u), this._lerp(n001, n101, u), w), this._lerp(this._lerp(n010, n110, u), this._lerp(n011, n111, u), w), v);
304
+ }
305
+ seed(inputSeed) {
306
+ const { _grad3: grad3, _gradP: gradP, _perm: perm, _p: p } = this;
307
+ let seed = inputSeed;
308
+ if (seed > 0 && seed < 1) {
309
+ seed *= 65536;
310
+ }
311
+ seed = Math.floor(seed);
312
+ if (seed < 256) {
313
+ seed |= seed << 8;
314
+ }
315
+ for (let i = 0; i < 256; i++) {
316
+ const v = i & 1 ? p[i] ^ (seed & 255) : p[i] ^ ((seed >> 8) & 255);
317
+ perm[i] = perm[i + 256] = v;
318
+ gradP[i] = gradP[i + 256] = grad3[v % 12];
319
+ }
320
+ }
321
+ _fade(t) {
322
+ return t * t * t * (t * (t * 6 - 15) + 10);
323
+ }
324
+ _lerp(a, b, t) {
325
+ return (1 - t) * a + t * b;
326
+ }
327
+ }
328
+ exports.PerlinNoise = PerlinNoise;
package/cjs/index.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PerlinNoise = void 0;
4
+ var PerlinNoise_js_1 = require("./PerlinNoise.js");
5
+ Object.defineProperty(exports, "PerlinNoise", { enumerable: true, get: function () { return PerlinNoise_js_1.PerlinNoise; } });
@@ -0,0 +1 @@
1
+ { "type": "commonjs" }
package/esm/Grad.js ADDED
@@ -0,0 +1,13 @@
1
+ export class Grad {
2
+ constructor(x, y, z) {
3
+ this.x = x;
4
+ this.y = y;
5
+ this.z = z;
6
+ }
7
+ dot2(x, y) {
8
+ return this.x * x + this.y * y;
9
+ }
10
+ dot3(x, y, z) {
11
+ return this.dot2(x, y) + this.z * z;
12
+ }
13
+ }
@@ -0,0 +1,324 @@
1
+ import { Grad } from "./Grad.js";
2
+ export class PerlinNoise {
3
+ constructor() {
4
+ this._grad3 = [
5
+ new Grad(1, 1, 0),
6
+ new Grad(-1, 1, 0),
7
+ new Grad(1, -1, 0),
8
+ new Grad(-1, -1, 0),
9
+ new Grad(1, 0, 1),
10
+ new Grad(-1, 0, 1),
11
+ new Grad(1, 0, -1),
12
+ new Grad(-1, 0, -1),
13
+ new Grad(0, 1, 1),
14
+ new Grad(0, -1, 1),
15
+ new Grad(0, 1, -1),
16
+ new Grad(0, -1, -1),
17
+ ];
18
+ this._p = [
19
+ 151,
20
+ 160,
21
+ 137,
22
+ 91,
23
+ 90,
24
+ 15,
25
+ 131,
26
+ 13,
27
+ 201,
28
+ 95,
29
+ 96,
30
+ 53,
31
+ 194,
32
+ 233,
33
+ 7,
34
+ 225,
35
+ 140,
36
+ 36,
37
+ 103,
38
+ 30,
39
+ 69,
40
+ 142,
41
+ 8,
42
+ 99,
43
+ 37,
44
+ 240,
45
+ 21,
46
+ 10,
47
+ 23,
48
+ 190,
49
+ 6,
50
+ 148,
51
+ 247,
52
+ 120,
53
+ 234,
54
+ 75,
55
+ 0,
56
+ 26,
57
+ 197,
58
+ 62,
59
+ 94,
60
+ 252,
61
+ 219,
62
+ 203,
63
+ 117,
64
+ 35,
65
+ 11,
66
+ 32,
67
+ 57,
68
+ 177,
69
+ 33,
70
+ 88,
71
+ 237,
72
+ 149,
73
+ 56,
74
+ 87,
75
+ 174,
76
+ 20,
77
+ 125,
78
+ 136,
79
+ 171,
80
+ 168,
81
+ 68,
82
+ 175,
83
+ 74,
84
+ 165,
85
+ 71,
86
+ 134,
87
+ 139,
88
+ 48,
89
+ 27,
90
+ 166,
91
+ 77,
92
+ 146,
93
+ 158,
94
+ 231,
95
+ 83,
96
+ 111,
97
+ 229,
98
+ 122,
99
+ 60,
100
+ 211,
101
+ 133,
102
+ 230,
103
+ 220,
104
+ 105,
105
+ 92,
106
+ 41,
107
+ 55,
108
+ 46,
109
+ 245,
110
+ 40,
111
+ 244,
112
+ 102,
113
+ 143,
114
+ 54,
115
+ 65,
116
+ 25,
117
+ 63,
118
+ 161,
119
+ 1,
120
+ 216,
121
+ 80,
122
+ 73,
123
+ 209,
124
+ 76,
125
+ 132,
126
+ 187,
127
+ 208,
128
+ 89,
129
+ 18,
130
+ 169,
131
+ 200,
132
+ 196,
133
+ 135,
134
+ 130,
135
+ 116,
136
+ 188,
137
+ 159,
138
+ 86,
139
+ 164,
140
+ 100,
141
+ 109,
142
+ 198,
143
+ 173,
144
+ 186,
145
+ 3,
146
+ 64,
147
+ 52,
148
+ 217,
149
+ 226,
150
+ 250,
151
+ 124,
152
+ 123,
153
+ 5,
154
+ 202,
155
+ 38,
156
+ 147,
157
+ 118,
158
+ 126,
159
+ 255,
160
+ 82,
161
+ 85,
162
+ 212,
163
+ 207,
164
+ 206,
165
+ 59,
166
+ 227,
167
+ 47,
168
+ 16,
169
+ 58,
170
+ 17,
171
+ 182,
172
+ 189,
173
+ 28,
174
+ 42,
175
+ 223,
176
+ 183,
177
+ 170,
178
+ 213,
179
+ 119,
180
+ 248,
181
+ 152,
182
+ 2,
183
+ 44,
184
+ 154,
185
+ 163,
186
+ 70,
187
+ 221,
188
+ 153,
189
+ 101,
190
+ 155,
191
+ 167,
192
+ 43,
193
+ 172,
194
+ 9,
195
+ 129,
196
+ 22,
197
+ 39,
198
+ 253,
199
+ 19,
200
+ 98,
201
+ 108,
202
+ 110,
203
+ 79,
204
+ 113,
205
+ 224,
206
+ 232,
207
+ 178,
208
+ 185,
209
+ 112,
210
+ 104,
211
+ 218,
212
+ 246,
213
+ 97,
214
+ 228,
215
+ 251,
216
+ 34,
217
+ 242,
218
+ 193,
219
+ 238,
220
+ 210,
221
+ 144,
222
+ 12,
223
+ 191,
224
+ 179,
225
+ 162,
226
+ 241,
227
+ 81,
228
+ 51,
229
+ 145,
230
+ 235,
231
+ 249,
232
+ 14,
233
+ 239,
234
+ 107,
235
+ 49,
236
+ 192,
237
+ 214,
238
+ 31,
239
+ 181,
240
+ 199,
241
+ 106,
242
+ 157,
243
+ 184,
244
+ 84,
245
+ 204,
246
+ 176,
247
+ 115,
248
+ 121,
249
+ 50,
250
+ 45,
251
+ 127,
252
+ 4,
253
+ 150,
254
+ 254,
255
+ 138,
256
+ 236,
257
+ 205,
258
+ 93,
259
+ 222,
260
+ 114,
261
+ 67,
262
+ 29,
263
+ 24,
264
+ 72,
265
+ 243,
266
+ 141,
267
+ 128,
268
+ 195,
269
+ 78,
270
+ 66,
271
+ 215,
272
+ 61,
273
+ 156,
274
+ 180,
275
+ ];
276
+ this._gradP = new Array(512);
277
+ this._perm = new Array(512);
278
+ }
279
+ noise2d(x, y) {
280
+ const { _gradP, _perm } = this;
281
+ let X = Math.floor(x), Y = Math.floor(y);
282
+ x = x - X;
283
+ y = y - Y;
284
+ X = X & 255;
285
+ Y = Y & 255;
286
+ const n00 = _gradP[X + _perm[Y]].dot2(x, y), n01 = _gradP[X + _perm[Y + 1]].dot2(x, y - 1), n10 = _gradP[X + 1 + _perm[Y]].dot2(x - 1, y), n11 = _gradP[X + 1 + _perm[Y + 1]].dot2(x - 1, y - 1);
287
+ const u = this._fade(x);
288
+ return this._lerp(this._lerp(n00, n10, u), this._lerp(n01, n11, u), this._fade(y));
289
+ }
290
+ noise3d(x, y, z) {
291
+ const { _gradP: gradP, _perm: perm } = this;
292
+ let X = Math.floor(x), Y = Math.floor(y), Z = Math.floor(z);
293
+ x = x - X;
294
+ y = y - Y;
295
+ z = z - Z;
296
+ X = X & 255;
297
+ Y = Y & 255;
298
+ Z = Z & 255;
299
+ const n000 = gradP[X + perm[Y + perm[Z]]].dot3(x, y, z), n001 = gradP[X + perm[Y + perm[Z + 1]]].dot3(x, y, z - 1), n010 = gradP[X + perm[Y + 1 + perm[Z]]].dot3(x, y - 1, z), n011 = gradP[X + perm[Y + 1 + perm[Z + 1]]].dot3(x, y - 1, z - 1), n100 = gradP[X + 1 + perm[Y + perm[Z]]].dot3(x - 1, y, z), n101 = gradP[X + 1 + perm[Y + perm[Z + 1]]].dot3(x - 1, y, z - 1), n110 = gradP[X + 1 + perm[Y + 1 + perm[Z]]].dot3(x - 1, y - 1, z), n111 = gradP[X + 1 + perm[Y + 1 + perm[Z + 1]]].dot3(x - 1, y - 1, z - 1), u = this._fade(x), v = this._fade(y), w = this._fade(z);
300
+ return this._lerp(this._lerp(this._lerp(n000, n100, u), this._lerp(n001, n101, u), w), this._lerp(this._lerp(n010, n110, u), this._lerp(n011, n111, u), w), v);
301
+ }
302
+ seed(inputSeed) {
303
+ const { _grad3: grad3, _gradP: gradP, _perm: perm, _p: p } = this;
304
+ let seed = inputSeed;
305
+ if (seed > 0 && seed < 1) {
306
+ seed *= 65536;
307
+ }
308
+ seed = Math.floor(seed);
309
+ if (seed < 256) {
310
+ seed |= seed << 8;
311
+ }
312
+ for (let i = 0; i < 256; i++) {
313
+ const v = i & 1 ? p[i] ^ (seed & 255) : p[i] ^ ((seed >> 8) & 255);
314
+ perm[i] = perm[i + 256] = v;
315
+ gradP[i] = gradP[i + 256] = grad3[v % 12];
316
+ }
317
+ }
318
+ _fade(t) {
319
+ return t * t * t * (t * (t * 6 - 15) + 10);
320
+ }
321
+ _lerp(a, b, t) {
322
+ return (1 - t) * a + t * b;
323
+ }
324
+ }
package/esm/index.js ADDED
@@ -0,0 +1 @@
1
+ export { PerlinNoise } from "./PerlinNoise.js";
@@ -0,0 +1 @@
1
+ { "type": "module" }