@benev/math 0.3.0-2 → 0.3.0-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.
Files changed (104) hide show
  1. package/package.json +1 -1
  2. package/s/index.ts +1 -2
  3. package/s/tools/noise.ts +5 -15
  4. package/s/tools/randy.ts +4 -4
  5. package/x/index.d.ts +1 -1
  6. package/x/index.js +1 -1
  7. package/x/tools/noise.d.ts +1 -8
  8. package/x/tools/noise.js +5 -16
  9. package/x/tools/noise.js.map +1 -1
  10. package/x/tools/randy.d.ts +2 -2
  11. package/x/tools/randy.js +4 -4
  12. package/x/tools/randy.js.map +1 -1
  13. package/s/tools/make-noise.ts +0 -13
  14. package/x/concepts/angles.d.ts +0 -29
  15. package/x/concepts/angles.js +0 -62
  16. package/x/concepts/angles.js.map +0 -1
  17. package/x/concepts/circular.d.ts +0 -17
  18. package/x/concepts/circular.js +0 -70
  19. package/x/concepts/circular.js.map +0 -1
  20. package/x/concepts/noise.d.ts +0 -9
  21. package/x/concepts/noise.js +0 -20
  22. package/x/concepts/noise.js.map +0 -1
  23. package/x/concepts/quat.d.ts +0 -35
  24. package/x/concepts/quat.js +0 -110
  25. package/x/concepts/quat.js.map +0 -1
  26. package/x/concepts/randy.d.ts +0 -39
  27. package/x/concepts/randy.js +0 -95
  28. package/x/concepts/randy.js.map +0 -1
  29. package/x/concepts/scalar.d.ts +0 -51
  30. package/x/concepts/scalar.js +0 -219
  31. package/x/concepts/scalar.js.map +0 -1
  32. package/x/concepts/spline.d.ts +0 -9
  33. package/x/concepts/spline.js +0 -59
  34. package/x/concepts/spline.js.map +0 -1
  35. package/x/concepts/vec2.d.ts +0 -114
  36. package/x/concepts/vec2.js +0 -314
  37. package/x/concepts/vec2.js.map +0 -1
  38. package/x/concepts/vec3.d.ts +0 -117
  39. package/x/concepts/vec3.js +0 -357
  40. package/x/concepts/vec3.js.map +0 -1
  41. package/x/concepts/vec4.d.ts +0 -21
  42. package/x/concepts/vec4.js +0 -62
  43. package/x/concepts/vec4.js.map +0 -1
  44. package/x/helpers/angles.d.ts +0 -19
  45. package/x/helpers/angles.js +0 -41
  46. package/x/helpers/angles.js.map +0 -1
  47. package/x/helpers/circular.d.ts +0 -17
  48. package/x/helpers/circular.js +0 -71
  49. package/x/helpers/circular.js.map +0 -1
  50. package/x/helpers/noise.d.ts +0 -9
  51. package/x/helpers/noise.js +0 -20
  52. package/x/helpers/noise.js.map +0 -1
  53. package/x/helpers/randy.d.ts +0 -31
  54. package/x/helpers/randy.js +0 -85
  55. package/x/helpers/randy.js.map +0 -1
  56. package/x/helpers/scalar.d.ts +0 -51
  57. package/x/helpers/scalar.js +0 -219
  58. package/x/helpers/scalar.js.map +0 -1
  59. package/x/helpers/spline.d.ts +0 -9
  60. package/x/helpers/spline.js +0 -61
  61. package/x/helpers/spline.js.map +0 -1
  62. package/x/importmap.json +0 -7
  63. package/x/primitives/circular.d.ts +0 -17
  64. package/x/primitives/circular.js +0 -70
  65. package/x/primitives/circular.js.map +0 -1
  66. package/x/primitives/quat.d.ts +0 -35
  67. package/x/primitives/quat.js +0 -110
  68. package/x/primitives/quat.js.map +0 -1
  69. package/x/primitives/scalar.d.ts +0 -51
  70. package/x/primitives/scalar.js +0 -219
  71. package/x/primitives/scalar.js.map +0 -1
  72. package/x/primitives/vec2.d.ts +0 -114
  73. package/x/primitives/vec2.js +0 -319
  74. package/x/primitives/vec2.js.map +0 -1
  75. package/x/primitives/vec3.d.ts +0 -117
  76. package/x/primitives/vec3.js +0 -363
  77. package/x/primitives/vec3.js.map +0 -1
  78. package/x/primitives/vec4.d.ts +0 -21
  79. package/x/primitives/vec4.js +0 -62
  80. package/x/primitives/vec4.js.map +0 -1
  81. package/x/tools/circular.d.ts +0 -17
  82. package/x/tools/circular.js +0 -71
  83. package/x/tools/circular.js.map +0 -1
  84. package/x/tools/scalar.d.ts +0 -51
  85. package/x/tools/scalar.js +0 -219
  86. package/x/tools/scalar.js.map +0 -1
  87. package/x/utils/angles.d.ts +0 -19
  88. package/x/utils/angles.js +0 -41
  89. package/x/utils/angles.js.map +0 -1
  90. package/x/utils/circular.d.ts +0 -17
  91. package/x/utils/circular.js +0 -70
  92. package/x/utils/circular.js.map +0 -1
  93. package/x/utils/noise.d.ts +0 -9
  94. package/x/utils/noise.js +0 -20
  95. package/x/utils/noise.js.map +0 -1
  96. package/x/utils/randy.d.ts +0 -31
  97. package/x/utils/randy.js +0 -85
  98. package/x/utils/randy.js.map +0 -1
  99. package/x/utils/scalar.d.ts +0 -51
  100. package/x/utils/scalar.js +0 -219
  101. package/x/utils/scalar.js.map +0 -1
  102. package/x/utils/spline.d.ts +0 -9
  103. package/x/utils/spline.js +0 -61
  104. package/x/utils/spline.js.map +0 -1
package/x/utils/scalar.js DELETED
@@ -1,219 +0,0 @@
1
- export class Scalar {
2
- x;
3
- constructor(x) {
4
- this.x = x;
5
- }
6
- static new(x) {
7
- return new this(x);
8
- }
9
- clone() {
10
- return new Scalar(this.x);
11
- }
12
- set(x) {
13
- this.x = x;
14
- return this;
15
- }
16
- //
17
- // queries
18
- //
19
- static isBetween(x, a = 0, b = 1) {
20
- const min = Math.min(a, b);
21
- const max = Math.max(a, b);
22
- return (x >= min) && (x <= max);
23
- }
24
- isBetween(a = 0, b = 1) {
25
- return Scalar.isBetween(this.x, a, b);
26
- }
27
- static isNear(x, y, epsilon = 0.01) {
28
- return Math.abs(x - y) <= epsilon;
29
- }
30
- isNear(y, epsilon = 0.01) {
31
- return Scalar.isNear(this.x, y, epsilon);
32
- }
33
- //
34
- // chainable transforms
35
- //
36
- static add(...nums) {
37
- let x = 0;
38
- for (const n of nums)
39
- x += n;
40
- return x;
41
- }
42
- add(...nums) {
43
- this.x = Scalar.add(...nums);
44
- return this;
45
- }
46
- subtract(...nums) {
47
- for (const n of nums)
48
- this.x -= n;
49
- return this;
50
- }
51
- static min(x, minimum = 0) {
52
- return Math.max(x, minimum);
53
- }
54
- min(minimum = 0) {
55
- this.x = Scalar.min(this.x, minimum);
56
- return this;
57
- }
58
- static max(x, maximum = 1) {
59
- return Math.min(x, maximum);
60
- }
61
- max(maximum = 1) {
62
- this.x = Scalar.max(this.x, maximum);
63
- return this;
64
- }
65
- static clamp(x, a = 0, b = 1) {
66
- x = Scalar.min(x, Math.min(a, b));
67
- x = Scalar.max(x, Math.max(a, b));
68
- return x;
69
- }
70
- clamp(a = 0, b = 1) {
71
- this.x = Scalar.clamp(this.x, a, b);
72
- return this;
73
- }
74
- static lerp(x, y, fraction, max) {
75
- const difference = y - x;
76
- let delta = difference * fraction;
77
- if (max !== undefined && Math.abs(delta) > max)
78
- delta = Math.sign(delta) * max;
79
- return x + delta;
80
- }
81
- lerp(y, fraction, max) {
82
- this.x = Scalar.lerp(this.x, y, fraction, max);
83
- return this;
84
- }
85
- static step(x, y, delta) {
86
- const difference = y - x;
87
- return (Math.abs(difference) <= delta)
88
- ? y
89
- : x + (Math.sign(difference) * delta);
90
- }
91
- step(y, delta) {
92
- this.x = Scalar.step(this.x, y, delta);
93
- return this;
94
- }
95
- static creep(difference, speed, deltaTime, speedLimit) {
96
- let change = (difference * (1 - Math.exp(-speed * deltaTime)));
97
- if (speedLimit !== undefined) {
98
- const changeLimit = speedLimit * deltaTime;
99
- if (Math.abs(change) > changeLimit)
100
- change = Math.sign(change) * changeLimit;
101
- }
102
- return change;
103
- }
104
- static approach(x, y, speed, deltaTime, speedLimit) {
105
- const difference = y - x;
106
- const change = this.creep(difference, speed, deltaTime, speedLimit);
107
- return x + change;
108
- }
109
- approach(y, speed, deltaTime, speedLimit) {
110
- this.x = Scalar.approach(this.x, y, speed, deltaTime, speedLimit);
111
- return this;
112
- }
113
- static wrap(x, a = 0, b = 1) {
114
- const min = Math.min(a, b);
115
- const max = Math.max(a, b);
116
- const span = max - min;
117
- const adjusted = x - min;
118
- const wrapped = (adjusted < 0)
119
- ? span - (-adjusted % span)
120
- : adjusted % span;
121
- return min + wrapped;
122
- }
123
- wrap(a = 0, b = 1) {
124
- this.x = Scalar.wrap(this.x, a, b);
125
- return this;
126
- }
127
- static constrainProximity(x, y, range) {
128
- const trueDiff = y - x;
129
- const positiveDiff = Math.abs(trueDiff);
130
- const cappedDiff = (positiveDiff > range)
131
- ? range
132
- : positiveDiff;
133
- const newDiff = (trueDiff < 0) ? -cappedDiff : cappedDiff;
134
- return x + newDiff;
135
- }
136
- constrainProximity(y, range) {
137
- this.x = Scalar.constrainProximity(this.x, y, range);
138
- return this;
139
- }
140
- static inverse(x) {
141
- return 1 - x;
142
- }
143
- inverse() {
144
- this.x = Scalar.inverse(this.x);
145
- return this;
146
- }
147
- static center(x) {
148
- return (x * 2) - 1;
149
- }
150
- center() {
151
- this.x = Scalar.center(this.x);
152
- return this;
153
- }
154
- static uncenter(x) {
155
- return (x + 1) / 2;
156
- }
157
- uncenter() {
158
- this.x = Scalar.uncenter(this.x);
159
- return this;
160
- }
161
- static map(x, a, b) {
162
- const difference = b - a;
163
- const value = difference * x;
164
- return a + value;
165
- }
166
- map(a, b) {
167
- this.x = Scalar.map(this.x, a, b);
168
- return this;
169
- }
170
- static remap(x, a1, a2, b1 = 0, b2 = 1, clamp = false) {
171
- const fraction = (x - a1) / (a2 - a1);
172
- const result = (fraction * (b2 - b1)) + b1;
173
- return clamp
174
- ? Scalar.clamp(result, b1, b2)
175
- : result;
176
- }
177
- remap(a1, a2, b1 = 0, b2 = 1, clamp = false) {
178
- this.x = Scalar.remap(this.x, a1, a2, b1, b2, clamp);
179
- return this;
180
- }
181
- static magnify(x) {
182
- return 4 * Math.pow(x - 0.5, 3) + 0.5;
183
- }
184
- magnify() {
185
- this.x = Scalar.magnify(this.x);
186
- return this;
187
- }
188
- static floor(x) {
189
- return Math.floor(x);
190
- }
191
- floor() {
192
- this.x = Scalar.floor(this.x);
193
- return this;
194
- }
195
- static ceil(x) {
196
- return Math.ceil(x);
197
- }
198
- ceil() {
199
- this.x = Scalar.ceil(this.x);
200
- return this;
201
- }
202
- static round(x) {
203
- return Math.round(x);
204
- }
205
- round() {
206
- this.x = Scalar.round(this.x);
207
- return this;
208
- }
209
- static smooth(x, y, smoothing) {
210
- return smoothing <= 1
211
- ? y
212
- : x + ((y - x) / smoothing);
213
- }
214
- smooth(y, smoothing) {
215
- this.x = Scalar.smooth(this.x, y, smoothing);
216
- return this;
217
- }
218
- }
219
- //# sourceMappingURL=scalar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../s/utils/scalar.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { Vec2Array } from "../core/vec2.js";
2
- /** resolve a number within a linear spline. */
3
- export declare function linear(x: number, points: Vec2Array[]): number;
4
- /** resolve a number within a catmull-rom spline, that's all smooth-like. */
5
- export declare function catmullRom(x: number, points: Vec2Array[]): number;
6
- export declare const ez: {
7
- /** simple linear spline where the control points are equally-spaced based on their array indices (x is expected to be between 0 and 1). */
8
- linear(x: number, points: number[]): number;
9
- };
package/x/utils/spline.js DELETED
@@ -1,61 +0,0 @@
1
- import { Scalar } from "./scalar.js";
2
- /** resolve a number within a linear spline. */
3
- export function linear(x, points) {
4
- if (points.length < 2)
5
- throw new Error("need at least two points, come on");
6
- const [first] = points.at(0);
7
- const [last] = points.at(-1);
8
- x = Scalar.clamp(x, first, last);
9
- for (let i = 0; i < points.length - 1; i++) {
10
- const [x0, y0] = points[i];
11
- const [x1, y1] = points[i + 1];
12
- if (x >= x0 && x <= x1) {
13
- const t = (x - x0) / (x1 - x0);
14
- return y0 + t * (y1 - y0);
15
- }
16
- }
17
- throw new Error("x is out of bounds, what are you even doing");
18
- }
19
- /** resolve a number within a catmull-rom spline, that's all smooth-like. */
20
- export function catmullRom(x, points) {
21
- if (points.length < 4)
22
- throw new Error("need at least four points for this magic");
23
- const [first] = points.at(0);
24
- const [last] = points.at(-1);
25
- x = Scalar.clamp(x, first, last);
26
- // find the segment where 'x' fits
27
- for (let i = 1; i < points.length - 2; i++) {
28
- const [x1,] = points[i];
29
- const [x2,] = points[i + 1];
30
- if (x >= x1 && x <= x2) {
31
- const t = (x - x1) / (x2 - x1);
32
- return helpers.catmullRom(t, points[i - 1], points[i], points[i + 1], points[i + 2]);
33
- }
34
- }
35
- throw new Error("x is out of bounds, try again");
36
- }
37
- export const ez = {
38
- /** simple linear spline where the control points are equally-spaced based on their array indices (x is expected to be between 0 and 1). */
39
- linear(x, points) {
40
- if (points.length < 2)
41
- throw new Error("need at least two points, come on");
42
- const points2 = points.map((p, index) => [Scalar.clamp(index / (points.length - 1)), p]);
43
- return linear(Scalar.clamp(x), points2);
44
- }
45
- };
46
- var helpers;
47
- (function (helpers) {
48
- /** internal big-brain maths for the catmull-rom implementation */
49
- function catmullRom(t, [, p0], [, p1], [, p2], [, p3]) {
50
- const t2 = t * t;
51
- const t3 = t2 * t;
52
- // coefficients for the cubic polynomial (Catmull-Rom)
53
- const a = -0.5 * p0 + 1.5 * p1 - 1.5 * p2 + 0.5 * p3;
54
- const b = p0 - 2.5 * p1 + 2 * p2 - 0.5 * p3;
55
- const c = -0.5 * p0 + 0.5 * p2;
56
- const d = p1;
57
- return a * t3 + b * t2 + c * t + d;
58
- }
59
- helpers.catmullRom = catmullRom;
60
- })(helpers || (helpers = {}));
61
- //# sourceMappingURL=spline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spline.js","sourceRoot":"","sources":["../../s/utils/spline.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAGlC,+CAA+C;AAC/C,MAAM,UAAU,MAAM,CAAC,CAAS,EAAE,MAAmB;IACpD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IAErD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAA;IAC7B,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAE9B,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAC9B,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1B,CAAC;IACF,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;AAC/D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,MAAmB;IACxD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAE5D,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAA;IAC7B,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAEhC,kCAAkC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,EAAE,EAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,CAAC,EAAE,EAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAE5B,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACrF,CAAC;IACF,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAG;IAEjB,2IAA2I;IAC3I,MAAM,CAAC,CAAS,EAAE,MAAgB;QACjC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAErD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CACzB,CAAC,CAAC,EAAE,KAAK,EAAa,EAAE,CACvB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC/C,CAAA;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;CACD,CAAA;AAED,IAAU,OAAO,CAsBhB;AAtBD,WAAU,OAAO;IAEhB,kEAAkE;IAClE,SAAgB,UAAU,CACxB,CAAS,EACT,CAAC,EAAC,EAAE,CAAY,EAChB,CAAC,EAAC,EAAE,CAAY,EAChB,CAAC,EAAC,EAAE,CAAY,EAChB,CAAC,EAAC,EAAE,CAAY;QAGjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAChB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QAEjB,sDAAsD;QACtD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;QACpD,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;QAC9B,MAAM,CAAC,GAAG,EAAE,CAAA;QAEZ,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAlBe,kBAAU,aAkBzB,CAAA;AACF,CAAC,EAtBS,OAAO,KAAP,OAAO,QAsBhB"}