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/esm/scalar.js CHANGED
@@ -8,6 +8,10 @@ export var scalar;
8
8
  return vs.reduce((a, b) => a + b, 0);
9
9
  }
10
10
  scalar.add = add;
11
+ /**
12
+ * @shorthands
13
+ * - {@link sub}
14
+ */
11
15
  function subtract(...vs) {
12
16
  if (vs.length === 0) {
13
17
  return 0;
@@ -18,10 +22,28 @@ export var scalar;
18
22
  return vs.reduce((a, b) => a - b);
19
23
  }
20
24
  scalar.subtract = subtract;
25
+ /**
26
+ * Alias for {@link subtract}
27
+ * @category Shorthands
28
+ */
29
+ scalar.sub = subtract;
30
+ /**
31
+ * @shorthands
32
+ * - {@link mul}
33
+ */
21
34
  function multiply(...vs) {
22
35
  return vs.reduce((a, b) => a * b, 1);
23
36
  }
24
37
  scalar.multiply = multiply;
38
+ /**
39
+ * Alias for {@link multiply}
40
+ * @category Shorthands
41
+ */
42
+ scalar.mul = multiply;
43
+ /**
44
+ * @shorthands
45
+ * - {@link div}
46
+ */
25
47
  function divide(...vs) {
26
48
  if (vs.length === 0) {
27
49
  return 1;
@@ -32,6 +54,11 @@ export var scalar;
32
54
  return vs.reduce((a, b) => a / b);
33
55
  }
34
56
  scalar.divide = divide;
57
+ /**
58
+ * Alias for {@link divide}
59
+ * @category Shorthands
60
+ */
61
+ scalar.div = divide;
35
62
  /**
36
63
  * Symmetric round the given number
37
64
  */
@@ -86,6 +113,9 @@ export var scalar;
86
113
  /**
87
114
  * Returns the average value of the input(s)
88
115
  * @see https://www.sidefx.com/docs/houdini/vex/functions/avg.html
116
+ *
117
+ * @shorthands
118
+ * - {@link avg}
89
119
  */
90
120
  function average(...vs) {
91
121
  let x = 0;
@@ -96,23 +126,68 @@ export var scalar;
96
126
  return x / scale;
97
127
  }
98
128
  scalar.average = average;
129
+ /**
130
+ * Alias for {@link average}
131
+ * @category Shorthands
132
+ */
133
+ scalar.avg = average;
99
134
  function scaleAndAdd(a, b, s) {
100
135
  return a + b * s;
101
136
  }
102
137
  scalar.scaleAndAdd = scaleAndAdd;
138
+ /**
139
+ * @shortands
140
+ * - {@link dist}
141
+ */
103
142
  function distance(a, b) {
104
143
  return Math.abs(a - b);
105
144
  }
106
145
  scalar.distance = distance;
146
+ /**
147
+ * Alias for {@link distance}
148
+ * @category Shorthands
149
+ */
150
+ scalar.dist = distance;
151
+ /**
152
+ * Returns the squared difference between two numbers
153
+ *
154
+ * @shorthands
155
+ * - {@link sqrDist}
156
+ */
107
157
  function squaredDistance(a, b) {
108
158
  return (a - b) ** 2;
109
159
  }
110
160
  scalar.squaredDistance = squaredDistance;
161
+ /**
162
+ * Alias for {@link squaredDistance}
163
+ * @category Shorthands
164
+ */
165
+ scalar.sqrDist = squaredDistance;
166
+ /**
167
+ * Returns the absolute difference between two numbers
168
+ *
169
+ * @shorthands
170
+ * - {@link len}
171
+ */
111
172
  scalar.length = Math.abs;
173
+ /**
174
+ * Alias for {@link length}
175
+ * @category Shorthands
176
+ */
177
+ scalar.len = scalar.length;
178
+ /**
179
+ * @shortands
180
+ * - {@link sqrLen}
181
+ */
112
182
  function squaredLength(a) {
113
183
  return a ** 2;
114
184
  }
115
185
  scalar.squaredLength = squaredLength;
186
+ /**
187
+ * Alias for {@link squaredLength}
188
+ * @category Shorthands
189
+ */
190
+ scalar.sqrLen = squaredLength;
116
191
  function negate(a) {
117
192
  return -a;
118
193
  }
@@ -132,15 +207,27 @@ export var scalar;
132
207
  /**
133
208
  * Linearly interpolate between two numbers. Same as GLSL's bulit-in `mix` function.
134
209
  * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/mix.xhtml
210
+ *
211
+ * @shorthands
212
+ * - {@link mix}
135
213
  */
136
214
  function lerp(a, b, t) {
137
215
  return a + (b - a) * t;
138
216
  }
139
217
  scalar.lerp = lerp;
218
+ /**
219
+ * Alias for {@link invert}
220
+ * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/mix.xhtml
221
+ * @category Shorthands
222
+ */
223
+ scalar.mix = lerp;
140
224
  /**
141
225
  * 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`.
142
226
  * @see https://docs.unity3d.com/Packages/com.unity.shadergraph@6.9/manual/Inverse-Lerp-Node.html
143
227
  * @see https://www.sidefx.com/docs/houdini/vex/functions/invlerp.html
228
+ *
229
+ * @shorthands
230
+ * - {@link invlerp}
144
231
  */
145
232
  function inverseLerp(a, b, t) {
146
233
  if (a === b)
@@ -149,7 +236,12 @@ export var scalar;
149
236
  }
150
237
  scalar.inverseLerp = inverseLerp;
151
238
  /**
152
- * 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.
239
+ * Alias for {@link inverseLerp}
240
+ * @category Shorthands
241
+ */
242
+ scalar.invlerp = inverseLerp;
243
+ /**
244
+ * 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`.
153
245
  * @see https://www.sidefx.com/docs/houdini/vex/functions/fit.html
154
246
  * @param value
155
247
  * @param omin
@@ -159,12 +251,15 @@ export var scalar;
159
251
  * @returns
160
252
  */
161
253
  function fit(value, omin, omax, nmin, nmax) {
254
+ if (omax === omin) {
255
+ return lerp(nmin, nmax, 0.5);
256
+ }
162
257
  const t = clamp((value - omin) / (omax - omin), 0, 1);
163
258
  return lerp(nmin, nmax, t);
164
259
  }
165
260
  scalar.fit = fit;
166
261
  /**
167
- * 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.
262
+ * 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`.
168
263
  * @see https://www.sidefx.com/docs/houdini/vex/functions/fit.html
169
264
  * @param value
170
265
  * @param omin
@@ -174,6 +269,9 @@ export var scalar;
174
269
  * @returns
175
270
  */
176
271
  function efit(value, omin, omax, nmin, nmax) {
272
+ if (omax === omin) {
273
+ return lerp(nmin, nmax, 0.5);
274
+ }
177
275
  const t = (value - omin) / (omax - omin);
178
276
  return lerp(nmin, nmax, t);
179
277
  }
@@ -202,14 +300,40 @@ export var scalar;
202
300
  return t * t * (3 - 2 * t);
203
301
  }
204
302
  scalar.smoothstep = smoothstep;
303
+ /**
304
+ * Converts a number from radians to degrees
305
+ * @param rad A number in radians
306
+ * @returns The degrees equivalent of the input
307
+ *
308
+ * @shorthands
309
+ * - {@link deg}
310
+ */
205
311
  function degrees(rad) {
206
312
  return (rad * 180) / Math.PI;
207
313
  }
208
314
  scalar.degrees = degrees;
315
+ /**
316
+ * Alias for {@link degrees}
317
+ * @category Shorthands
318
+ */
319
+ scalar.deg = degrees;
320
+ /**
321
+ * Converts a number from degrees to radians
322
+ * @param deg A number in degrees
323
+ * @returns The radians equivalent of the input
324
+ *
325
+ * @shorthands
326
+ * - {@link rad}
327
+ */
209
328
  function radians(deg) {
210
329
  return (deg * Math.PI) / 180;
211
330
  }
212
331
  scalar.radians = radians;
332
+ /**
333
+ * Alias for {@link radians}
334
+ * @category Shorthands
335
+ */
336
+ scalar.rad = radians;
213
337
  function sin(deg) {
214
338
  return Math.sin(deg * Common.DEG2RAD);
215
339
  }
@@ -265,80 +389,86 @@ export var scalar;
265
389
  return 1 / Math.sqrt(v);
266
390
  }
267
391
  scalar.inverseSqrt = inverseSqrt;
268
- function exactEquals(a, b) {
269
- return a === b;
270
- }
271
- scalar.exactEquals = exactEquals;
272
- function equals(a, b) {
273
- return (Math.abs(a - b) <=
274
- Common.EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b)));
275
- }
276
- scalar.equals = equals;
277
- /**
278
- * Alias for {@link scalar.subtract}
279
- * @category Aliases
280
- */
281
- scalar.sub = subtract;
282
- /**
283
- * Alias for {@link scalar.multiply}
284
- * @category Aliases
285
- */
286
- scalar.mul = multiply;
287
- /**
288
- * Alias for {@link scalar.divide}
289
- * @category Aliases
290
- */
291
- scalar.div = divide;
292
392
  /**
293
- * Alias for {@link scalar.average}
294
- * @category Aliases
393
+ * Alias for {@link inverseSqrt}
394
+ * @category Shorthands
295
395
  */
296
- scalar.avg = average;
297
- /**
298
- * Alias for {@link scalar.distance}
299
- * @category Aliases
300
- */
301
- scalar.dist = distance;
396
+ scalar.invsqrt = inverseSqrt;
302
397
  /**
303
- * Alias for {@link scalar.length}
304
- * @category Aliases
398
+ * 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.
399
+ * @see https://www.geogebra.org/calculator/d3grfqqe
400
+ *
401
+ * @param x the input value
402
+ * @param period the period of the wave
403
+ * @category Periodic Functions
404
+ *
405
+ * @shorthands
406
+ * - {@link ramp}
407
+ *
305
408
  */
306
- scalar.len = scalar.length;
409
+ function sawtooth(x, period = 1) {
410
+ x /= period;
411
+ if (x === 1)
412
+ return 1;
413
+ if (x < 0)
414
+ return (1 + (x % 1)) % 1;
415
+ return x % 1;
416
+ }
417
+ scalar.sawtooth = sawtooth;
307
418
  /**
308
- * Alias for {@link scalar.squaredDistance}
309
- * @category Aliases
419
+ * Alias for {@link sawtooth}
420
+ * @category Shorthands
310
421
  */
311
- scalar.sqrDist = squaredDistance;
422
+ scalar.ramp = sawtooth;
312
423
  /**
313
- * Alias for {@link scalar.squaredLength}
314
- * @category Aliases
424
+ * Returns a triangle wave with the given period. The output ranges from 0 to 1.
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
315
430
  */
316
- scalar.sqrLen = squaredLength;
317
- /**
318
- * Alias for {@link scalar.invert}
319
- * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/mix.xhtml
320
- * @category Aliases
321
- */
322
- scalar.mix = lerp;
431
+ function triangle(x, period = 1) {
432
+ x /= period;
433
+ return 1 - Math.abs(1 - 2 * (Math.abs(x) % 1));
434
+ }
435
+ scalar.triangle = triangle;
323
436
  /**
324
- * Alias for {@link scalar.inverseLerp}
325
- * @category Aliases
437
+ * Returns a cosine wave with the given period. The output ranges from 0 to 1, and y = 0 when x = 0.
438
+ *
439
+ * @see https://www.geogebra.org/calculator/d3grfqqe
440
+ * @param v the input value
441
+ * @param period the period of the wave
442
+ * @category Periodic Functions
326
443
  */
327
- scalar.invlerp = inverseLerp;
444
+ function coswave(v, period = 1) {
445
+ v = (v * Math.PI * 2) / period;
446
+ console.log({ v });
447
+ return (-Math.cos(v) + 1) / 2;
448
+ }
449
+ scalar.coswave = coswave;
328
450
  /**
329
- * Alias for {@link scalar.radians}
330
- * @category Aliases
451
+ * Returns whether or not the numbers have approximately the same.
452
+ *
453
+ * @shorthands
454
+ * - {@link approx}
455
+ * - {@link equals}
331
456
  */
332
- scalar.rad = radians;
457
+ function approxEquals(a, b) {
458
+ return (Math.abs(a - b) <=
459
+ Common.EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b)));
460
+ }
461
+ scalar.approxEquals = approxEquals;
333
462
  /**
334
- * Alias for {@link scalar.degrees}
335
- * @category Aliases
463
+ * Alias for {@link approxEquals}
464
+ * @category Shorthands
336
465
  */
337
- scalar.deg = degrees;
466
+ scalar.approx = approxEquals;
338
467
  /**
339
- * Alias for {@link scalar.inverseSqrt}
340
- * @category Aliases
468
+ * Alias for {@link approxEquals}. This is provided for compatibility with gl-matrix.
469
+ * @category Shorthands
470
+ * @deprecated Use {@link approxEquals} instead
341
471
  */
342
- scalar.invsqrt = inverseSqrt;
472
+ scalar.equals = approxEquals;
343
473
  })(scalar || (scalar = {}));
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjYWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLFVBQVUsQ0FBQTtBQUVsQzs7R0FFRztBQUNILE1BQU0sS0FBVyxNQUFNLENBbVh0QjtBQW5YRCxXQUFpQixNQUFNO0lBQ3RCLFNBQWdCLEdBQUcsQ0FBQyxHQUFHLEVBQVk7UUFDbEMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRmUsVUFBRyxNQUVsQixDQUFBO0lBRUQsU0FBZ0IsUUFBUSxDQUFDLEdBQUcsRUFBWTtRQUN2QyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLENBQUE7UUFDVCxDQUFDO2FBQU0sSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDZCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFQZSxlQUFRLFdBT3ZCLENBQUE7SUFFRCxTQUFnQixRQUFRLENBQUMsR0FBRyxFQUFZO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUZlLGVBQVEsV0FFdkIsQ0FBQTtJQUVELFNBQWdCLE1BQU0sQ0FBQyxHQUFHLEVBQVk7UUFDckMsSUFBSSxFQUFFLENB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
474
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjYWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLFVBQVUsQ0FBQTtBQUVsQzs7R0FFRztBQUNILE1BQU0sS0FBVyxNQUFNLENBMGZ0QjtBQTFmRCxXQUFpQixNQUFNO0lBQ3RCLFNBQWdCLEdBQUcsQ0FBQyxHQUFHLEVBQVk7UUFDbEMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRmUsVUFBRyxNQUVsQixDQUFBO0lBRUQ7OztPQUdHO0lBQ0gsU0FBZ0IsUUFBUSxDQUFDLEdBQUcsRUFBWTtRQUN2QyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLENBQUE7UUFDVCxDQUFDO2FBQU0sSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDZCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFQZSxlQUFRLFdBT3ZCLENBQUE7SUFFRDs7O09BR0c7SUFDVSxVQUFHLEdBQUcsUUFBUSxDQUFBO0lBRTNCOzs7T0FHRztJQUNILFNBQWdCLFFBQVEsQ0FBQyxHQUFHLEVBQVk7UUFDdkMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRmUsZUFB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