linearly 0.24.3 → 0.26.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 (55) hide show
  1. package/lib/cjs/mat2.d.ts +90 -42
  2. package/lib/cjs/mat2.d.ts.map +1 -1
  3. package/lib/cjs/mat2.js +94 -46
  4. package/lib/cjs/mat2d.d.ts +109 -55
  5. package/lib/cjs/mat2d.d.ts.map +1 -1
  6. package/lib/cjs/mat2d.js +112 -58
  7. package/lib/cjs/mat3.d.ts +93 -45
  8. package/lib/cjs/mat3.d.ts.map +1 -1
  9. package/lib/cjs/mat3.js +96 -48
  10. package/lib/cjs/mat4.d.ts +93 -45
  11. package/lib/cjs/mat4.d.ts.map +1 -1
  12. package/lib/cjs/mat4.js +96 -48
  13. package/lib/cjs/quat.d.ts +62 -29
  14. package/lib/cjs/quat.d.ts.map +1 -1
  15. package/lib/cjs/quat.js +64 -31
  16. package/lib/cjs/scalar.d.ts +164 -54
  17. package/lib/cjs/scalar.d.ts.map +1 -1
  18. package/lib/cjs/scalar.js +192 -62
  19. package/lib/cjs/vec2.d.ts +176 -72
  20. package/lib/cjs/vec2.d.ts.map +1 -1
  21. package/lib/cjs/vec2.js +208 -105
  22. package/lib/cjs/vec3.d.ts +183 -82
  23. package/lib/cjs/vec3.d.ts.map +1 -1
  24. package/lib/cjs/vec3.js +210 -93
  25. package/lib/cjs/vec4.d.ts +159 -67
  26. package/lib/cjs/vec4.d.ts.map +1 -1
  27. package/lib/cjs/vec4.js +189 -78
  28. package/lib/esm/mat2.d.ts +90 -42
  29. package/lib/esm/mat2.d.ts.map +1 -1
  30. package/lib/esm/mat2.js +94 -46
  31. package/lib/esm/mat2d.d.ts +109 -55
  32. package/lib/esm/mat2d.d.ts.map +1 -1
  33. package/lib/esm/mat2d.js +112 -58
  34. package/lib/esm/mat3.d.ts +93 -45
  35. package/lib/esm/mat3.d.ts.map +1 -1
  36. package/lib/esm/mat3.js +96 -48
  37. package/lib/esm/mat4.d.ts +93 -45
  38. package/lib/esm/mat4.d.ts.map +1 -1
  39. package/lib/esm/mat4.js +96 -48
  40. package/lib/esm/quat.d.ts +62 -29
  41. package/lib/esm/quat.d.ts.map +1 -1
  42. package/lib/esm/quat.js +64 -31
  43. package/lib/esm/scalar.d.ts +164 -54
  44. package/lib/esm/scalar.d.ts.map +1 -1
  45. package/lib/esm/scalar.js +192 -62
  46. package/lib/esm/vec2.d.ts +176 -72
  47. package/lib/esm/vec2.d.ts.map +1 -1
  48. package/lib/esm/vec2.js +208 -105
  49. package/lib/esm/vec3.d.ts +183 -82
  50. package/lib/esm/vec3.d.ts.map +1 -1
  51. package/lib/esm/vec3.js +210 -93
  52. package/lib/esm/vec4.d.ts +159 -67
  53. package/lib/esm/vec4.d.ts.map +1 -1
  54. package/lib/esm/vec4.js +189 -78
  55. package/package.json +1 -1
package/lib/cjs/scalar.js CHANGED
@@ -34,6 +34,10 @@ var scalar;
34
34
  return vs.reduce((a, b) => a + b, 0);
35
35
  }
36
36
  scalar.add = add;
37
+ /**
38
+ * @shorthands
39
+ * - {@link sub}
40
+ */
37
41
  function subtract(...vs) {
38
42
  if (vs.length === 0) {
39
43
  return 0;
@@ -44,10 +48,28 @@ var scalar;
44
48
  return vs.reduce((a, b) => a - b);
45
49
  }
46
50
  scalar.subtract = subtract;
51
+ /**
52
+ * Alias for {@link subtract}
53
+ * @category Shorthands
54
+ */
55
+ scalar.sub = subtract;
56
+ /**
57
+ * @shorthands
58
+ * - {@link mul}
59
+ */
47
60
  function multiply(...vs) {
48
61
  return vs.reduce((a, b) => a * b, 1);
49
62
  }
50
63
  scalar.multiply = multiply;
64
+ /**
65
+ * Alias for {@link multiply}
66
+ * @category Shorthands
67
+ */
68
+ scalar.mul = multiply;
69
+ /**
70
+ * @shorthands
71
+ * - {@link div}
72
+ */
51
73
  function divide(...vs) {
52
74
  if (vs.length === 0) {
53
75
  return 1;
@@ -58,6 +80,11 @@ var scalar;
58
80
  return vs.reduce((a, b) => a / b);
59
81
  }
60
82
  scalar.divide = divide;
83
+ /**
84
+ * Alias for {@link divide}
85
+ * @category Shorthands
86
+ */
87
+ scalar.div = divide;
61
88
  /**
62
89
  * Symmetric round the given number
63
90
  */
@@ -112,6 +139,9 @@ var scalar;
112
139
  /**
113
140
  * Returns the average value of the input(s)
114
141
  * @see https://www.sidefx.com/docs/houdini/vex/functions/avg.html
142
+ *
143
+ * @shorthands
144
+ * - {@link avg}
115
145
  */
116
146
  function average(...vs) {
117
147
  let x = 0;
@@ -122,23 +152,68 @@ var scalar;
122
152
  return x / scale;
123
153
  }
124
154
  scalar.average = average;
155
+ /**
156
+ * Alias for {@link average}
157
+ * @category Shorthands
158
+ */
159
+ scalar.avg = average;
125
160
  function scaleAndAdd(a, b, s) {
126
161
  return a + b * s;
127
162
  }
128
163
  scalar.scaleAndAdd = scaleAndAdd;
164
+ /**
165
+ * @shortands
166
+ * - {@link dist}
167
+ */
129
168
  function distance(a, b) {
130
169
  return Math.abs(a - b);
131
170
  }
132
171
  scalar.distance = distance;
172
+ /**
173
+ * Alias for {@link distance}
174
+ * @category Shorthands
175
+ */
176
+ scalar.dist = distance;
177
+ /**
178
+ * Returns the squared difference between two numbers
179
+ *
180
+ * @shorthands
181
+ * - {@link sqrDist}
182
+ */
133
183
  function squaredDistance(a, b) {
134
184
  return (a - b) ** 2;
135
185
  }
136
186
  scalar.squaredDistance = squaredDistance;
187
+ /**
188
+ * Alias for {@link squaredDistance}
189
+ * @category Shorthands
190
+ */
191
+ scalar.sqrDist = squaredDistance;
192
+ /**
193
+ * Returns the absolute difference between two numbers
194
+ *
195
+ * @shorthands
196
+ * - {@link len}
197
+ */
137
198
  scalar.length = Math.abs;
199
+ /**
200
+ * Alias for {@link length}
201
+ * @category Shorthands
202
+ */
203
+ scalar.len = scalar.length;
204
+ /**
205
+ * @shortands
206
+ * - {@link sqrLen}
207
+ */
138
208
  function squaredLength(a) {
139
209
  return a ** 2;
140
210
  }
141
211
  scalar.squaredLength = squaredLength;
212
+ /**
213
+ * Alias for {@link squaredLength}
214
+ * @category Shorthands
215
+ */
216
+ scalar.sqrLen = squaredLength;
142
217
  function negate(a) {
143
218
  return -a;
144
219
  }
@@ -158,15 +233,27 @@ var scalar;
158
233
  /**
159
234
  * Linearly interpolate between two numbers. Same as GLSL's bulit-in `mix` function.
160
235
  * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/mix.xhtml
236
+ *
237
+ * @shorthands
238
+ * - {@link mix}
161
239
  */
162
240
  function lerp(a, b, t) {
163
241
  return a + (b - a) * t;
164
242
  }
165
243
  scalar.lerp = lerp;
244
+ /**
245
+ * Alias for {@link invert}
246
+ * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/mix.xhtml
247
+ * @category Shorthands
248
+ */
249
+ scalar.mix = lerp;
166
250
  /**
167
251
  * Returns the amount to mix `min` and `max` to generate the input value `t`. This is the inverse of the `lerp` function. If `min` and `max` are equal, the mixing value is `0.5`.
168
252
  * @see https://docs.unity3d.com/Packages/com.unity.shadergraph@6.9/manual/Inverse-Lerp-Node.html
169
253
  * @see https://www.sidefx.com/docs/houdini/vex/functions/invlerp.html
254
+ *
255
+ * @shorthands
256
+ * - {@link invlerp}
170
257
  */
171
258
  function inverseLerp(a, b, t) {
172
259
  if (a === b)
@@ -175,7 +262,12 @@ var scalar;
175
262
  }
176
263
  scalar.inverseLerp = inverseLerp;
177
264
  /**
178
- * Takes the value in the range `(omin, omax)` and shifts it to the corresponding value in the new range `(nmin, nmax)`. The function clamps the given value the range `(omin, omax)` before fitting, so the resulting value will be guaranteed to be in the range `(nmin, nmax)`. To avoid clamping use efit instead.
265
+ * Alias for {@link inverseLerp}
266
+ * @category Shorthands
267
+ */
268
+ scalar.invlerp = inverseLerp;
269
+ /**
270
+ * Takes the value in the range `(omin, omax)` and shifts it to the corresponding value in the new range `(nmin, nmax)`. The function clamps the given value the range `(omin, omax)` before fitting, so the resulting value will be guaranteed to be in the range `(nmin, nmax)`. To avoid clamping use {@link efit} instead. If `omin` and `omax` are the same, the function returns the average of `nmin` and `nmax`.
179
271
  * @see https://www.sidefx.com/docs/houdini/vex/functions/fit.html
180
272
  * @param value
181
273
  * @param omin
@@ -185,12 +277,15 @@ var scalar;
185
277
  * @returns
186
278
  */
187
279
  function fit(value, omin, omax, nmin, nmax) {
280
+ if (omax === omin) {
281
+ return lerp(nmin, nmax, 0.5);
282
+ }
188
283
  const t = clamp((value - omin) / (omax - omin), 0, 1);
189
284
  return lerp(nmin, nmax, t);
190
285
  }
191
286
  scalar.fit = fit;
192
287
  /**
193
- * Takes the value in the range `(omin, omax)` and shifts it to the corresponding value in the new range `(nmin, nmax)`. Unlike `fit`, this function does not clamp values to the given range.
288
+ * Takes the value in the range `(omin, omax)` and shifts it to the corresponding value in the new range `(nmin, nmax)`. Unlike `fit`, this function does not clamp values to the given range. If `omin` and `omax` are the same, the function returns the average of `nmin` and `nmax`.
194
289
  * @see https://www.sidefx.com/docs/houdini/vex/functions/fit.html
195
290
  * @param value
196
291
  * @param omin
@@ -200,6 +295,9 @@ var scalar;
200
295
  * @returns
201
296
  */
202
297
  function efit(value, omin, omax, nmin, nmax) {
298
+ if (omax === omin) {
299
+ return lerp(nmin, nmax, 0.5);
300
+ }
203
301
  const t = (value - omin) / (omax - omin);
204
302
  return lerp(nmin, nmax, t);
205
303
  }
@@ -228,14 +326,40 @@ var scalar;
228
326
  return t * t * (3 - 2 * t);
229
327
  }
230
328
  scalar.smoothstep = smoothstep;
329
+ /**
330
+ * Converts a number from radians to degrees
331
+ * @param rad A number in radians
332
+ * @returns The degrees equivalent of the input
333
+ *
334
+ * @shorthands
335
+ * - {@link deg}
336
+ */
231
337
  function degrees(rad) {
232
338
  return (rad * 180) / Math.PI;
233
339
  }
234
340
  scalar.degrees = degrees;
341
+ /**
342
+ * Alias for {@link degrees}
343
+ * @category Shorthands
344
+ */
345
+ scalar.deg = degrees;
346
+ /**
347
+ * Converts a number from degrees to radians
348
+ * @param deg A number in degrees
349
+ * @returns The radians equivalent of the input
350
+ *
351
+ * @shorthands
352
+ * - {@link rad}
353
+ */
235
354
  function radians(deg) {
236
355
  return (deg * Math.PI) / 180;
237
356
  }
238
357
  scalar.radians = radians;
358
+ /**
359
+ * Alias for {@link radians}
360
+ * @category Shorthands
361
+ */
362
+ scalar.rad = radians;
239
363
  function sin(deg) {
240
364
  return Math.sin(deg * Common.DEG2RAD);
241
365
  }
@@ -291,80 +415,86 @@ var scalar;
291
415
  return 1 / Math.sqrt(v);
292
416
  }
293
417
  scalar.inverseSqrt = inverseSqrt;
294
- function exactEquals(a, b) {
295
- return a === b;
296
- }
297
- scalar.exactEquals = exactEquals;
298
- function equals(a, b) {
299
- return (Math.abs(a - b) <=
300
- Common.EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b)));
301
- }
302
- scalar.equals = equals;
303
- /**
304
- * Alias for {@link scalar.subtract}
305
- * @category Aliases
306
- */
307
- scalar.sub = subtract;
308
- /**
309
- * Alias for {@link scalar.multiply}
310
- * @category Aliases
311
- */
312
- scalar.mul = multiply;
313
- /**
314
- * Alias for {@link scalar.divide}
315
- * @category Aliases
316
- */
317
- scalar.div = divide;
318
418
  /**
319
- * Alias for {@link scalar.average}
320
- * @category Aliases
419
+ * Alias for {@link inverseSqrt}
420
+ * @category Shorthands
321
421
  */
322
- scalar.avg = average;
323
- /**
324
- * Alias for {@link scalar.distance}
325
- * @category Aliases
326
- */
327
- scalar.dist = distance;
422
+ scalar.invsqrt = inverseSqrt;
328
423
  /**
329
- * Alias for {@link scalar.length}
330
- * @category Aliases
424
+ * Returns a sawtooth wave with the given period. Basically, the output will be the input value modulo `period`, but returns 1 when the phase is 1. The shape of the wave will be continous for the negative ranges, so when phase is negative integer, the output will be 0, else if phase is negative float, the output will be 1 - fractional part of phase.
425
+ * @see https://www.geogebra.org/calculator/d3grfqqe
426
+ *
427
+ * @param x the input value
428
+ * @param period the period of the wave
429
+ * @category Periodic Functions
430
+ *
431
+ * @shorthands
432
+ * - {@link ramp}
433
+ *
331
434
  */
332
- scalar.len = scalar.length;
435
+ function sawtooth(x, period = 1) {
436
+ x /= period;
437
+ if (x === 1)
438
+ return 1;
439
+ if (x < 0)
440
+ return (1 + (x % 1)) % 1;
441
+ return x % 1;
442
+ }
443
+ scalar.sawtooth = sawtooth;
333
444
  /**
334
- * Alias for {@link scalar.squaredDistance}
335
- * @category Aliases
445
+ * Alias for {@link sawtooth}
446
+ * @category Shorthands
336
447
  */
337
- scalar.sqrDist = squaredDistance;
448
+ scalar.ramp = sawtooth;
338
449
  /**
339
- * Alias for {@link scalar.squaredLength}
340
- * @category Aliases
450
+ * Returns a triangle wave with the given period. The output ranges from 0 to 1.
451
+ * @see https://www.geogebra.org/calculator/d3grfqqe
452
+ *
453
+ * @param x The input value
454
+ * @param period The period of the wave
455
+ * @category Periodic Functions
341
456
  */
342
- scalar.sqrLen = squaredLength;
343
- /**
344
- * Alias for {@link scalar.invert}
345
- * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/mix.xhtml
346
- * @category Aliases
347
- */
348
- scalar.mix = lerp;
457
+ function triangle(x, period = 1) {
458
+ x /= period;
459
+ return 1 - Math.abs(1 - 2 * (Math.abs(x) % 1));
460
+ }
461
+ scalar.triangle = triangle;
349
462
  /**
350
- * Alias for {@link scalar.inverseLerp}
351
- * @category Aliases
463
+ * Returns a cosine wave with the given period. The output ranges from 0 to 1, and y = 0 when x = 0.
464
+ *
465
+ * @see https://www.geogebra.org/calculator/d3grfqqe
466
+ * @param v the input value
467
+ * @param period the period of the wave
468
+ * @category Periodic Functions
352
469
  */
353
- scalar.invlerp = inverseLerp;
470
+ function coswave(v, period = 1) {
471
+ v = (v * Math.PI * 2) / period;
472
+ console.log({ v });
473
+ return (-Math.cos(v) + 1) / 2;
474
+ }
475
+ scalar.coswave = coswave;
354
476
  /**
355
- * Alias for {@link scalar.radians}
356
- * @category Aliases
477
+ * Returns whether or not the numbers have approximately the same.
478
+ *
479
+ * @shorthands
480
+ * - {@link approx}
481
+ * - {@link equals}
357
482
  */
358
- scalar.rad = radians;
483
+ function approxEquals(a, b) {
484
+ return (Math.abs(a - b) <=
485
+ Common.EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b)));
486
+ }
487
+ scalar.approxEquals = approxEquals;
359
488
  /**
360
- * Alias for {@link scalar.degrees}
361
- * @category Aliases
489
+ * Alias for {@link approxEquals}
490
+ * @category Shorthands
362
491
  */
363
- scalar.deg = degrees;
492
+ scalar.approx = approxEquals;
364
493
  /**
365
- * Alias for {@link scalar.inverseSqrt}
366
- * @category Aliases
494
+ * Alias for {@link approxEquals}. This is provided for compatibility with gl-matrix.
495
+ * @category Shorthands
496
+ * @deprecated Use {@link approxEquals} instead
367
497
  */
368
- scalar.invsqrt = inverseSqrt;
498
+ scalar.equals = approxEquals;
369
499
  })(scalar || (exports.scalar = scalar = {}));
370
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjYWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUFrQztBQUVsQzs7R0FFRztBQUNILElBQWlCLE1BQU0sQ0FtWHRCO0FBblhELFdBQWlCLE1BQU07SUFDdEIsU0FBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBWTtRQUNsQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFGZSxVQUFHLE1BRWxCLENBQUE7SUFFRCxTQUFnQixRQUFRLENBQUMsR0FBRyxFQUFZO1FBQ3ZDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsQ0FBQTtRQUNULENBQUM7YUFBTSxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNkLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQVBlLGVBQVEsV0FPdkIsQ0FBQTtJQUVELFNBQWdCLFFBQVEsQ0FBQyxHQUFHLEVBQVk7UUFDdkMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRmUsZUFBUSxXQUV2QixDQUFBO0lBRUQsU0FBZ0IsTUFBTSxDQUFDLEdBQUcsRUFBWTtRQUNyQyxJQUFJLEVBQUUsQ0FB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
500
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjYWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUFrQztBQUVsQzs7R0FFRztBQUNILElBQWlCLE1BQU0sQ0EwZnRCO0FBMWZELFdBQWlCLE1BQU07SUFDdEIsU0FBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBWTtRQUNsQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFGZSxVQUFHLE1BRWxCLENBQUE7SUFFRDs7O09BR0c7SUFDSCxTQUFnQixRQUFRLENBQUMsR0FBRyxFQUFZO1FBQ3ZDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsQ0FBQTtRQUNULENBQUM7YUFBTSxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNkLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQVBlLGVBQVEsV0FPdkIsQ0FBQTtJQUVEOzs7T0FHRztJQUNVLFVBQUcsR0FBRyxRQUFRLENBQUE7SUFFM0I7OztPQUdHO0lBQ0gsU0FBZ0IsUUFBUSxDQUFDLEdBQUcsRUFBWTtRQUN2QyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFGZSxlQUFR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