@lakuna/umath 0.0.2 → 0.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 (147) hide show
  1. package/README.md +41 -1
  2. package/dist/algorithms/combinations.d.ts +2 -0
  3. package/dist/algorithms/combinations.d.ts.map +1 -0
  4. package/dist/algorithms/combinations.js +5 -0
  5. package/dist/algorithms/combinations.js.map +1 -0
  6. package/dist/algorithms/degreesToRadians.d.ts +2 -0
  7. package/dist/algorithms/degreesToRadians.d.ts.map +1 -0
  8. package/dist/algorithms/degreesToRadians.js +4 -0
  9. package/dist/algorithms/degreesToRadians.js.map +1 -0
  10. package/dist/algorithms/factorial.d.ts +2 -0
  11. package/dist/algorithms/factorial.d.ts.map +1 -0
  12. package/dist/algorithms/factorial.js +4 -0
  13. package/dist/algorithms/factorial.js.map +1 -0
  14. package/dist/algorithms/fibonacci.d.ts +2 -0
  15. package/dist/algorithms/fibonacci.d.ts.map +1 -0
  16. package/dist/algorithms/fibonacci.js +9 -0
  17. package/dist/algorithms/fibonacci.js.map +1 -0
  18. package/dist/algorithms/greatestCommonDivisor.d.ts +3 -0
  19. package/dist/algorithms/greatestCommonDivisor.d.ts.map +1 -0
  20. package/dist/algorithms/greatestCommonDivisor.js +13 -0
  21. package/dist/algorithms/greatestCommonDivisor.js.map +1 -0
  22. package/dist/algorithms/isPrime.d.ts +2 -0
  23. package/dist/algorithms/isPrime.d.ts.map +1 -0
  24. package/dist/algorithms/isPrime.js +12 -0
  25. package/dist/algorithms/isPrime.js.map +1 -0
  26. package/dist/algorithms/permutations.d.ts +2 -0
  27. package/dist/algorithms/permutations.d.ts.map +1 -0
  28. package/dist/algorithms/permutations.js +5 -0
  29. package/dist/algorithms/permutations.js.map +1 -0
  30. package/dist/algorithms/primeFactorization.d.ts +2 -0
  31. package/dist/algorithms/primeFactorization.d.ts.map +1 -0
  32. package/dist/algorithms/primeFactorization.js +15 -0
  33. package/dist/algorithms/primeFactorization.js.map +1 -0
  34. package/dist/algorithms/radiansToDegrees.d.ts +2 -0
  35. package/dist/algorithms/radiansToDegrees.d.ts.map +1 -0
  36. package/dist/algorithms/radiansToDegrees.js +4 -0
  37. package/dist/algorithms/radiansToDegrees.js.map +1 -0
  38. package/dist/algorithms/summation.d.ts +2 -0
  39. package/dist/algorithms/summation.d.ts.map +1 -0
  40. package/dist/algorithms/summation.js +7 -0
  41. package/dist/algorithms/summation.js.map +1 -0
  42. package/dist/index.d.ts +28 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +22 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/linear/DualQuaternion.d.ts +89 -0
  47. package/dist/linear/DualQuaternion.d.ts.map +1 -0
  48. package/dist/linear/DualQuaternion.js +530 -0
  49. package/dist/linear/DualQuaternion.js.map +1 -0
  50. package/dist/linear/Matrix.d.ts +18 -0
  51. package/dist/linear/Matrix.d.ts.map +1 -0
  52. package/dist/linear/Matrix.js +2 -0
  53. package/dist/linear/Matrix.js.map +1 -0
  54. package/dist/linear/Matrix2.d.ts +66 -0
  55. package/dist/linear/Matrix2.d.ts.map +1 -0
  56. package/dist/linear/Matrix2.js +240 -0
  57. package/dist/linear/Matrix2.js.map +1 -0
  58. package/dist/linear/Matrix3.d.ts +91 -0
  59. package/dist/linear/Matrix3.d.ts.map +1 -0
  60. package/dist/linear/Matrix3.js +533 -0
  61. package/dist/linear/Matrix3.js.map +1 -0
  62. package/dist/linear/Matrix4.d.ts +140 -0
  63. package/dist/linear/Matrix4.d.ts.map +1 -0
  64. package/dist/linear/Matrix4.js +1363 -0
  65. package/dist/linear/Matrix4.js.map +1 -0
  66. package/dist/linear/Quaternion.d.ts +80 -0
  67. package/dist/linear/Quaternion.d.ts.map +1 -0
  68. package/dist/linear/Quaternion.js +371 -0
  69. package/dist/linear/Quaternion.js.map +1 -0
  70. package/dist/linear/SquareMatrix.d.ts +7 -0
  71. package/dist/linear/SquareMatrix.d.ts.map +1 -0
  72. package/dist/linear/SquareMatrix.js +2 -0
  73. package/dist/linear/SquareMatrix.js.map +1 -0
  74. package/dist/linear/Vector.d.ts +30 -0
  75. package/dist/linear/Vector.d.ts.map +1 -0
  76. package/dist/linear/Vector.js +2 -0
  77. package/dist/linear/Vector.js.map +1 -0
  78. package/dist/linear/Vector2.d.ts +96 -0
  79. package/dist/linear/Vector2.d.ts.map +1 -0
  80. package/dist/linear/Vector2.js +293 -0
  81. package/dist/linear/Vector2.js.map +1 -0
  82. package/dist/linear/Vector3.d.ts +111 -0
  83. package/dist/linear/Vector3.d.ts.map +1 -0
  84. package/dist/linear/Vector3.js +466 -0
  85. package/dist/linear/Vector3.js.map +1 -0
  86. package/dist/linear/Vector4.d.ts +86 -0
  87. package/dist/linear/Vector4.d.ts.map +1 -0
  88. package/dist/linear/Vector4.js +348 -0
  89. package/dist/linear/Vector4.js.map +1 -0
  90. package/dist/types/AxisAngle.d.ts +6 -0
  91. package/dist/types/AxisAngle.d.ts.map +1 -0
  92. package/dist/types/AxisAngle.js +2 -0
  93. package/dist/types/AxisAngle.js.map +1 -0
  94. package/dist/types/FieldOfView.d.ts +7 -0
  95. package/dist/types/FieldOfView.d.ts.map +1 -0
  96. package/dist/types/FieldOfView.js +2 -0
  97. package/dist/types/FieldOfView.js.map +1 -0
  98. package/dist/types/IntegerRepresentation.d.ts +2 -0
  99. package/dist/types/IntegerRepresentation.d.ts.map +1 -0
  100. package/dist/types/IntegerRepresentation.js +2 -0
  101. package/dist/types/IntegerRepresentation.js.map +1 -0
  102. package/dist/utility/BigNumber.d.ts +15 -0
  103. package/dist/utility/BigNumber.d.ts.map +1 -0
  104. package/dist/utility/BigNumber.js +75 -0
  105. package/dist/utility/BigNumber.js.map +1 -0
  106. package/dist/utility/MagnitudeError.d.ts +4 -0
  107. package/dist/utility/MagnitudeError.d.ts.map +1 -0
  108. package/dist/utility/MagnitudeError.js +6 -0
  109. package/dist/utility/MagnitudeError.js.map +1 -0
  110. package/dist/utility/SingularMatrixError.d.ts +4 -0
  111. package/dist/utility/SingularMatrixError.d.ts.map +1 -0
  112. package/dist/utility/SingularMatrixError.js +6 -0
  113. package/dist/utility/SingularMatrixError.js.map +1 -0
  114. package/dist/utility/epsilon.d.ts +3 -0
  115. package/dist/utility/epsilon.d.ts.map +1 -0
  116. package/dist/utility/epsilon.js +2 -0
  117. package/dist/utility/epsilon.js.map +1 -0
  118. package/package.json +17 -9
  119. package/src/algorithms/combinations.ts +12 -0
  120. package/src/algorithms/degreesToRadians.ts +10 -0
  121. package/src/algorithms/factorial.ts +9 -0
  122. package/src/algorithms/fibonacci.ts +14 -0
  123. package/src/algorithms/greatestCommonDivisor.ts +30 -0
  124. package/src/algorithms/isPrime.ts +20 -0
  125. package/src/algorithms/permutations.ts +12 -0
  126. package/src/algorithms/primeFactorization.ts +21 -0
  127. package/src/algorithms/radiansToDegrees.ts +10 -0
  128. package/src/algorithms/summation.ts +23 -0
  129. package/src/index.ts +28 -1
  130. package/src/linear/DualQuaternion.ts +1213 -0
  131. package/src/linear/Matrix.ts +106 -0
  132. package/src/linear/Matrix2.ts +709 -0
  133. package/src/linear/Matrix3.ts +1194 -0
  134. package/src/linear/Matrix4.ts +2569 -0
  135. package/src/linear/Quaternion.ts +967 -0
  136. package/src/linear/SquareMatrix.ts +27 -0
  137. package/src/linear/Vector.ts +178 -0
  138. package/src/linear/Vector2.ts +979 -0
  139. package/src/linear/Vector3.ts +1320 -0
  140. package/src/linear/Vector4.ts +975 -0
  141. package/src/types/AxisAngle.ts +10 -0
  142. package/src/types/FieldOfView.ts +14 -0
  143. package/src/types/IntegerRepresentation.ts +2 -0
  144. package/src/utility/BigNumber.ts +130 -0
  145. package/src/utility/MagnitudeError.ts +10 -0
  146. package/src/utility/SingularMatrixError.ts +13 -0
  147. package/src/utility/epsilon.ts +2 -0
@@ -0,0 +1,348 @@
1
+ import { epsilon } from "@lakuna/umath";
2
+ export function fromValues(x, y, z, w, out) {
3
+ out[0] = x;
4
+ out[1] = y;
5
+ out[2] = z;
6
+ out[3] = w;
7
+ return out;
8
+ }
9
+ export function equals(a, b) {
10
+ const a0 = a[0];
11
+ const a1 = a[1];
12
+ const a2 = a[2];
13
+ const a3 = a[3];
14
+ const b0 = b[0];
15
+ const b1 = b[1];
16
+ const b2 = b[2];
17
+ const b3 = b[3];
18
+ return Math.abs(a0 - b0) <= epsilon * Math.max(1, Math.abs(a0), Math.abs(b0))
19
+ && Math.abs(a1 - b1) <= epsilon * Math.max(1, Math.abs(a1), Math.abs(b1))
20
+ && Math.abs(a2 - b2) <= epsilon * Math.max(1, Math.abs(a2), Math.abs(b2))
21
+ && Math.abs(a3 - b3) <= epsilon * Math.max(1, Math.abs(a3), Math.abs(b3));
22
+ }
23
+ export function exactEquals(a, b) {
24
+ return a[0] == b[0]
25
+ && a[1] == b[1]
26
+ && a[2] == b[2]
27
+ && a[3] == b[3];
28
+ }
29
+ export function add(a, b, out) {
30
+ out[0] = a[0] + b[0];
31
+ out[1] = a[1] + b[1];
32
+ out[2] = a[2] + b[2];
33
+ out[3] = a[3] + b[3];
34
+ return out;
35
+ }
36
+ export function copy(vector, out) {
37
+ out[0] = vector[0];
38
+ out[1] = vector[1];
39
+ out[2] = vector[2];
40
+ out[3] = vector[3];
41
+ return out;
42
+ }
43
+ export function multiply(a, b, out) {
44
+ out[0] = a[0] * b[0];
45
+ out[1] = a[1] * b[1];
46
+ out[2] = a[2] * b[2];
47
+ out[3] = a[3] * b[3];
48
+ return out;
49
+ }
50
+ export function divide(a, b, out) {
51
+ out[0] = a[0] / b[0];
52
+ out[1] = a[1] / b[1];
53
+ out[2] = a[2] / b[2];
54
+ out[3] = a[3] / b[3];
55
+ return out;
56
+ }
57
+ export function subtract(a, b, out) {
58
+ out[0] = a[0] - b[0];
59
+ out[1] = a[1] - b[1];
60
+ out[2] = a[2] - b[2];
61
+ out[3] = a[3] - b[3];
62
+ return out;
63
+ }
64
+ export function ceil(vector, out) {
65
+ out[0] = Math.ceil(vector[0]);
66
+ out[1] = Math.ceil(vector[1]);
67
+ out[2] = Math.ceil(vector[2]);
68
+ out[3] = Math.ceil(vector[3]);
69
+ return out;
70
+ }
71
+ export function floor(vector, out) {
72
+ out[0] = Math.floor(vector[0]);
73
+ out[1] = Math.floor(vector[1]);
74
+ out[2] = Math.floor(vector[2]);
75
+ out[3] = Math.floor(vector[3]);
76
+ return out;
77
+ }
78
+ export function round(vector, out) {
79
+ out[0] = Math.round(vector[0]);
80
+ out[1] = Math.round(vector[1]);
81
+ out[2] = Math.round(vector[2]);
82
+ out[3] = Math.round(vector[3]);
83
+ return out;
84
+ }
85
+ export function min(a, b, out) {
86
+ out[0] = Math.min(a[0], b[0]);
87
+ out[1] = Math.min(a[1], b[1]);
88
+ out[2] = Math.min(a[2], b[2]);
89
+ out[3] = Math.min(a[3], b[3]);
90
+ return out;
91
+ }
92
+ export function max(a, b, out) {
93
+ out[0] = Math.max(a[0], b[0]);
94
+ out[1] = Math.max(a[1], b[1]);
95
+ out[2] = Math.max(a[2], b[2]);
96
+ out[3] = Math.max(a[3], b[3]);
97
+ return out;
98
+ }
99
+ export function scale(vector, scalar, out) {
100
+ out[0] = vector[0] * scalar;
101
+ out[1] = vector[1] * scalar;
102
+ out[2] = vector[2] * scalar;
103
+ out[3] = vector[3] * scalar;
104
+ return out;
105
+ }
106
+ export function scaleAndAdd(a, b, scalar, out) {
107
+ out[0] = a[0] + b[0] * scalar;
108
+ out[1] = a[1] + b[1] * scalar;
109
+ out[2] = a[2] + b[2] * scalar;
110
+ out[3] = a[3] + b[3] * scalar;
111
+ return out;
112
+ }
113
+ export function distance(a, b) {
114
+ const x = a[0] - b[0];
115
+ const y = a[1] - b[1];
116
+ const z = a[2] - b[2];
117
+ const w = a[3] - b[3];
118
+ return Math.hypot(x, y, z, w);
119
+ }
120
+ export function squaredDistance(a, b) {
121
+ const x = a[0] - b[0];
122
+ const y = a[1] - b[1];
123
+ const z = a[2] - b[2];
124
+ const w = a[3] - b[3];
125
+ return x * x + y * y + z * z + w * w;
126
+ }
127
+ export function getMagnitude(vector) {
128
+ const x = vector[0];
129
+ const y = vector[1];
130
+ const z = vector[2];
131
+ const w = vector[3];
132
+ return Math.hypot(x, y, z, w);
133
+ }
134
+ export function getSquaredMagnitude(vector) {
135
+ const x = vector[0];
136
+ const y = vector[1];
137
+ const z = vector[2];
138
+ const w = vector[3];
139
+ return x * x + y * y + z * z + w * w;
140
+ }
141
+ export function negate(vector, out) {
142
+ out[0] = -vector[0];
143
+ out[1] = -vector[1];
144
+ out[2] = -vector[2];
145
+ out[3] = -vector[3];
146
+ return out;
147
+ }
148
+ export function inverse(vector, out) {
149
+ out[0] = 1 / vector[0];
150
+ out[1] = 1 / vector[1];
151
+ out[2] = 1 / vector[2];
152
+ out[3] = 1 / vector[3];
153
+ return out;
154
+ }
155
+ export function normalize(vector, out) {
156
+ const x = vector[0];
157
+ const y = vector[1];
158
+ const z = vector[2];
159
+ const w = vector[3];
160
+ let len = x * x + y * y + z * z + w * w;
161
+ if (len > 0) {
162
+ len = 1 / Math.sqrt(len);
163
+ }
164
+ out[0] = x * len;
165
+ out[1] = y * len;
166
+ out[2] = z * len;
167
+ out[3] = w * len;
168
+ return out;
169
+ }
170
+ export function dot(a, b) {
171
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
172
+ }
173
+ export function cross(a, b, c, out) {
174
+ const d = a[0] * b[1] - a[1] * b[0];
175
+ const e = a[0] * b[2] - a[2] * b[0];
176
+ const f = a[0] * b[3] - a[3] * b[0];
177
+ const g = a[1] * b[2] - a[2] * b[1];
178
+ const h = a[1] * b[3] - a[3] * b[1];
179
+ const i = a[2] * b[3] - a[3] * b[2];
180
+ const j = c[0];
181
+ const k = c[1];
182
+ const l = c[2];
183
+ const m = c[3];
184
+ out[0] = k * i - l * h + m * g;
185
+ out[1] = -(j * i) + l * f - m * e;
186
+ out[2] = j * h - k * f + m * d;
187
+ out[3] = -(j * g) + k * e - k * d;
188
+ return out;
189
+ }
190
+ export function lerp(a, b, t, out) {
191
+ const ax = a[0];
192
+ const ay = a[1];
193
+ const az = a[2];
194
+ const aw = a[3];
195
+ out[0] = ax + t * (b[0] - ax);
196
+ out[1] = ay + t * (b[1] - ay);
197
+ out[2] = az + t * (b[2] - az);
198
+ out[3] = aw + t * (b[3] - aw);
199
+ return out;
200
+ }
201
+ export function random(magnitude, out) {
202
+ const a = Math.random();
203
+ const v1 = a * 2 - 1;
204
+ const v2 = (4 * Math.random() - 2) * Math.sqrt(a * -a + a);
205
+ const s1 = v1 * v1 + v2 * v2;
206
+ const b = Math.random();
207
+ const v3 = b * 2 - 1;
208
+ const v4 = (4 * Math.random() - 2) * Math.sqrt(b * -b + b);
209
+ const s2 = v3 * v3 + v4 * v4;
210
+ const d = Math.sqrt((1 - s1) / s2);
211
+ out[0] = magnitude * v1;
212
+ out[1] = magnitude * v2;
213
+ out[2] = magnitude * v3 * d;
214
+ out[3] = magnitude * v4 * d;
215
+ return out;
216
+ }
217
+ export function transformMatrix4(vector, matrix, out) {
218
+ const x = vector[0];
219
+ const y = vector[1];
220
+ const z = vector[2];
221
+ const w = vector[3];
222
+ out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12] * w;
223
+ out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13] * w;
224
+ out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14] * w;
225
+ out[3] = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15] * w;
226
+ return out;
227
+ }
228
+ export function zero(out) {
229
+ out[0] = 0;
230
+ out[1] = 0;
231
+ out[2] = 0;
232
+ out[3] = 0;
233
+ return out;
234
+ }
235
+ export function transformQuaternion(vector, quaternion, out) {
236
+ const x = vector[0];
237
+ const y = vector[1];
238
+ const z = vector[2];
239
+ const qx = quaternion[0];
240
+ const qy = quaternion[1];
241
+ const qz = quaternion[2];
242
+ const qw = quaternion[3];
243
+ const ix = qw * x + qy * z - qz * y;
244
+ const iy = qw * y + qz * x - qx * z;
245
+ const iz = qw * z + qx * y - qy * x;
246
+ const iw = -qx * x - qy * y - qz * z;
247
+ out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;
248
+ out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;
249
+ out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;
250
+ out[3] = vector[3];
251
+ return out;
252
+ }
253
+ export default class Vector4 extends Float32Array {
254
+ static fromValues(x, y, z, w, out = new Vector4()) {
255
+ return fromValues(x, y, z, w, out);
256
+ }
257
+ constructor() {
258
+ super(4);
259
+ }
260
+ equals(vector) {
261
+ return equals(this, vector);
262
+ }
263
+ exactEquals(vector) {
264
+ return exactEquals(this, vector);
265
+ }
266
+ add(vector, out = new Vector4()) {
267
+ return add(this, vector, out);
268
+ }
269
+ clone() {
270
+ return copy(this, new Vector4());
271
+ }
272
+ copy(vector) {
273
+ return copy(vector, this);
274
+ }
275
+ multiply(vector, out = new Vector4()) {
276
+ return multiply(this, vector, out);
277
+ }
278
+ divide(vector, out = new Vector4()) {
279
+ return divide(this, vector, out);
280
+ }
281
+ subtract(vector, out = new Vector4()) {
282
+ return subtract(this, vector, out);
283
+ }
284
+ ceil(out = new Vector4()) {
285
+ return ceil(this, out);
286
+ }
287
+ floor(out = new Vector4()) {
288
+ return floor(this, out);
289
+ }
290
+ round(out = new Vector4()) {
291
+ return round(this, out);
292
+ }
293
+ min(vector, out = new Vector4()) {
294
+ return min(this, vector, out);
295
+ }
296
+ max(vector, out = new Vector4()) {
297
+ return max(this, vector, out);
298
+ }
299
+ scale(scalar, out = new Vector4()) {
300
+ return scale(this, scalar, out);
301
+ }
302
+ scaleAndAdd(vector, scalar, out = new Vector4()) {
303
+ return scaleAndAdd(this, vector, scalar, out);
304
+ }
305
+ distance(vector) {
306
+ return distance(this, vector);
307
+ }
308
+ squaredDistance(vector) {
309
+ return squaredDistance(this, vector);
310
+ }
311
+ get magnitude() {
312
+ return getMagnitude(this);
313
+ }
314
+ get squaredMagnitude() {
315
+ return getSquaredMagnitude(this);
316
+ }
317
+ negate(out = new Vector4()) {
318
+ return negate(this, out);
319
+ }
320
+ inverse(out = new Vector4()) {
321
+ return inverse(this, out);
322
+ }
323
+ normalize(out = new Vector4()) {
324
+ return normalize(this, out);
325
+ }
326
+ dot(vector) {
327
+ return dot(this, vector);
328
+ }
329
+ cross(a, b, out = new Vector4()) {
330
+ return cross(this, a, b, out);
331
+ }
332
+ lerp(vector, t, out = new Vector4()) {
333
+ return lerp(this, vector, t, out);
334
+ }
335
+ random(magnitude = 1) {
336
+ return random(magnitude, this);
337
+ }
338
+ transformMatrix4(matrix, out = new Vector4()) {
339
+ return transformMatrix4(this, matrix, out);
340
+ }
341
+ zero() {
342
+ return zero(this);
343
+ }
344
+ transformQuaternion(quaternion, out = new Vector4()) {
345
+ return transformQuaternion(this, quaternion, out);
346
+ }
347
+ }
348
+ //# sourceMappingURL=Vector4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Vector4.js","sourceRoot":"","sources":["../../src/linear/Vector4.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Vector3Like } from "@lakuna/umath/Vector3";
2
+ export default interface AxisAngle {
3
+ axis: Vector3Like;
4
+ angle: number;
5
+ }
6
+ //# sourceMappingURL=AxisAngle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AxisAngle.d.ts","sourceRoot":"","sources":["../../src/types/AxisAngle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,CAAC,OAAO,WAAW,SAAS;IAE9B,IAAI,EAAE,WAAW,CAAC;IAGlB,KAAK,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AxisAngle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AxisAngle.js","sourceRoot":"","sources":["../../src/types/AxisAngle.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export default interface FieldOfView {
2
+ upDegrees: number;
3
+ downDegrees: number;
4
+ leftDegrees: number;
5
+ rightDegrees: number;
6
+ }
7
+ //# sourceMappingURL=FieldOfView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldOfView.d.ts","sourceRoot":"","sources":["../../src/types/FieldOfView.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,WAAW,WAAW;IAEnC,SAAS,EAAE,MAAM,CAAC;IAGlB,WAAW,EAAE,MAAM,CAAC;IAGpB,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FieldOfView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldOfView.js","sourceRoot":"","sources":["../../src/types/FieldOfView.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type IntegerRepresentation = string | number | bigint | boolean;
2
+ //# sourceMappingURL=IntegerRepresentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegerRepresentation.d.ts","sourceRoot":"","sources":["../../src/types/IntegerRepresentation.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IntegerRepresentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegerRepresentation.js","sourceRoot":"","sources":["../../src/types/IntegerRepresentation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { type IntegerRepresentation } from "@lakuna/umath";
2
+ export default class BigNumber {
3
+ constructor(source?: IntegerRepresentation);
4
+ constructor(dividend?: IntegerRepresentation, divisor?: IntegerRepresentation);
5
+ dividend: bigint;
6
+ divisor: bigint;
7
+ private simplify;
8
+ add(n: IntegerRepresentation | BigNumber): this;
9
+ subtract(n: IntegerRepresentation | BigNumber): this;
10
+ multiply(n: IntegerRepresentation | BigNumber): this;
11
+ divide(n: IntegerRepresentation | BigNumber): this;
12
+ toNumber(): number;
13
+ toString(): string;
14
+ }
15
+ //# sourceMappingURL=BigNumber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BigNumber.d.ts","sourceRoot":"","sources":["../../src/utility/BigNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGlF,MAAM,CAAC,OAAO,OAAO,SAAS;gBAKV,MAAM,CAAC,EAAE,qBAAqB;gBAO9B,QAAQ,CAAC,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAU7E,QAAQ,EAAE,MAAM,CAAC;IAGjB,OAAO,EAAE,MAAM,CAAC;IAGvB,OAAO,CAAC,QAAQ;IAoBT,GAAG,CAAC,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI;IAiB/C,QAAQ,CAAC,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI;IAiBpD,QAAQ,CAAC,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI;IAiBpD,MAAM,CAAC,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI;IAgBlD,QAAQ,IAAI,MAAM;IAQlB,QAAQ,IAAI,MAAM;CAGzB"}
@@ -0,0 +1,75 @@
1
+ import { greatestCommonDivisor } from "@lakuna/umath";
2
+ export default class BigNumber {
3
+ constructor(dividend = 0, divisor = 1) {
4
+ this.dividend = BigInt(dividend);
5
+ this.divisor = BigInt(divisor);
6
+ if (!this.divisor) {
7
+ throw new Error("Cannot divide by zero.");
8
+ }
9
+ this.simplify();
10
+ }
11
+ dividend;
12
+ divisor;
13
+ simplify() {
14
+ if (this.divisor < 0) {
15
+ this.dividend = -this.dividend;
16
+ this.divisor = -this.divisor;
17
+ }
18
+ const gcd = greatestCommonDivisor(this.dividend, this.divisor);
19
+ if (gcd > 1) {
20
+ this.dividend /= gcd;
21
+ this.divisor /= gcd;
22
+ }
23
+ }
24
+ add(n) {
25
+ if (n instanceof BigNumber) {
26
+ this.dividend = this.dividend * n.divisor + n.dividend * this.divisor;
27
+ this.divisor *= n.divisor;
28
+ }
29
+ else {
30
+ this.dividend += BigInt(n) * this.divisor;
31
+ }
32
+ this.simplify();
33
+ return this;
34
+ }
35
+ subtract(n) {
36
+ if (n instanceof BigNumber) {
37
+ this.dividend = this.dividend * n.divisor - n.dividend * this.divisor;
38
+ this.divisor *= n.divisor;
39
+ }
40
+ else {
41
+ this.dividend -= BigInt(n) * this.divisor;
42
+ }
43
+ this.simplify();
44
+ return this;
45
+ }
46
+ multiply(n) {
47
+ if (n instanceof BigNumber) {
48
+ this.dividend *= n.dividend;
49
+ this.divisor *= n.divisor;
50
+ }
51
+ else {
52
+ this.dividend *= BigInt(n);
53
+ }
54
+ this.simplify();
55
+ return this;
56
+ }
57
+ divide(n) {
58
+ if (n instanceof BigNumber) {
59
+ this.dividend *= n.divisor;
60
+ this.divisor *= n.dividend;
61
+ }
62
+ else {
63
+ this.divisor *= BigInt(n);
64
+ }
65
+ this.simplify();
66
+ return this;
67
+ }
68
+ toNumber() {
69
+ return Number(this.dividend / this.divisor) + (Number(this.dividend % this.divisor) / Number(this.divisor));
70
+ }
71
+ toString() {
72
+ return `${this.dividend}/${this.divisor}`;
73
+ }
74
+ }
75
+ //# sourceMappingURL=BigNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BigNumber.js","sourceRoot":"","sources":["../../src/utility/BigNumber.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export default class MagnitudeError extends Error {
2
+ constructor(message?: string);
3
+ }
4
+ //# sourceMappingURL=MagnitudeError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MagnitudeError.d.ts","sourceRoot":"","sources":["../../src/utility/MagnitudeError.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,KAAK;gBAK1B,OAAO,SAA6B;CAG1D"}
@@ -0,0 +1,6 @@
1
+ export default class MagnitudeError extends Error {
2
+ constructor(message = "The vector is too small.") {
3
+ super(message);
4
+ }
5
+ }
6
+ //# sourceMappingURL=MagnitudeError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MagnitudeError.js","sourceRoot":"","sources":["../../src/utility/MagnitudeError.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,KAAK;IAK7C,YAAmB,OAAO,GAAG,0BAA0B;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ"}
@@ -0,0 +1,4 @@
1
+ export default class SingularMatrixError extends Error {
2
+ constructor(message?: string);
3
+ }
4
+ //# sourceMappingURL=SingularMatrixError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SingularMatrixError.d.ts","sourceRoot":"","sources":["../../src/utility/SingularMatrixError.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,KAAK;gBAK/B,OAAO,SAAmC;CAGhE"}
@@ -0,0 +1,6 @@
1
+ export default class SingularMatrixError extends Error {
2
+ constructor(message = "The matrix cannot be inverted.") {
3
+ super(message);
4
+ }
5
+ }
6
+ //# sourceMappingURL=SingularMatrixError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SingularMatrixError.js","sourceRoot":"","sources":["../../src/utility/SingularMatrixError.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,KAAK;IAKlD,YAAmB,OAAO,GAAG,gCAAgC;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ"}
@@ -0,0 +1,3 @@
1
+ declare const _default: 0.000001;
2
+ export default _default;
3
+ //# sourceMappingURL=epsilon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epsilon.d.ts","sourceRoot":"","sources":["../../src/utility/epsilon.ts"],"names":[],"mappings":";AACA,wBAAwB"}
@@ -0,0 +1,2 @@
1
+ export default 0.000001;
2
+ //# sourceMappingURL=epsilon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epsilon.js","sourceRoot":"","sources":["../../src/utility/epsilon.ts"],"names":[],"mappings":"AACA,eAAe,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lakuna/umath",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "A lightweight math library.",
5
5
  "keywords": [
6
6
  "math"
@@ -21,13 +21,21 @@
21
21
  "url": "https://github.com/sponsors/Lakuna"
22
22
  },
23
23
  "files": [
24
- "./dist/*",
25
- "./src/*"
24
+ "dist/*",
25
+ "src/*"
26
26
  ],
27
27
  "main": "./dist/index.js",
28
28
  "browser": "./dist/index.js",
29
29
  "exports": {
30
- ".": "./dist/index.js"
30
+ ".": "./dist/index.js",
31
+ "./DualQuaternion": "./dist/linear/DualQuaternion.js",
32
+ "./Matrix2": "./dist/linear/Matrix2.js",
33
+ "./Matrix3": "./dist/linear/Matrix3.js",
34
+ "./Matrix4": "./dist/linear/Matrix4.js",
35
+ "./Quaternion": "./dist/linear/Quaternion.js",
36
+ "./Vector2": "./dist/linear/Vector2.js",
37
+ "./Vector3": "./dist/linear/Vector3.js",
38
+ "./Vector4": "./dist/linear/Vector4.js"
31
39
  },
32
40
  "types": "./dist/index.d.ts",
33
41
  "repository": {
@@ -42,10 +50,10 @@
42
50
  "type": "module",
43
51
  "sideEffects": false,
44
52
  "devDependencies": {
45
- "@typescript-eslint/eslint-plugin": "^5.59.1",
46
- "@typescript-eslint/parser": "^5.59.1",
47
- "eslint": "^8.39.0",
48
- "typedoc": "^0.24.6",
49
- "typescript": "^5.0.4"
53
+ "@typescript-eslint/eslint-plugin": "^6.1.0",
54
+ "@typescript-eslint/parser": "^6.1.0",
55
+ "eslint": "^8.45.0",
56
+ "typedoc": "^0.24.8",
57
+ "typescript": "^5.1.6"
50
58
  }
51
59
  }
@@ -0,0 +1,12 @@
1
+ import { factorial } from "@lakuna/umath";
2
+
3
+ /**
4
+ * Calculates the number of combinations.
5
+ * @param n The total number of units.
6
+ * @param r The number of units taken at a time.
7
+ * @returns The number of combinations.
8
+ * @see [Combination](https://en.wikipedia.org/wiki/Combination)
9
+ */
10
+ export default function combinations(n: number, r: number): number {
11
+ return factorial(n) / (factorial(r) * factorial(n - r));
12
+ }