@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 @@
1
+ {"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../src/linear/Vector3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,466 @@
1
+ import { epsilon } from "@lakuna/umath";
2
+ import Quaternion from "@lakuna/umath/Quaternion";
3
+ import { normalize as normalizeVector4 } from "@lakuna/umath/Vector4";
4
+ export function fromValues(x, y, z, out) {
5
+ out[0] = x;
6
+ out[1] = y;
7
+ out[2] = z;
8
+ return out;
9
+ }
10
+ export function equals(a, b) {
11
+ const a0 = a[0];
12
+ const a1 = a[1];
13
+ const a2 = a[2];
14
+ const b0 = b[0];
15
+ const b1 = b[1];
16
+ const b2 = b[2];
17
+ return Math.abs(a0 - b0) <= epsilon * Math.max(1, Math.abs(a0), Math.abs(b0))
18
+ && Math.abs(a1 - b1) <= epsilon * Math.max(1, Math.abs(a1), Math.abs(b1))
19
+ && Math.abs(a2 - b2) <= epsilon * Math.max(1, Math.abs(a2), Math.abs(b2));
20
+ }
21
+ export function exactEquals(a, b) {
22
+ return a[0] == b[0]
23
+ && a[1] == b[1]
24
+ && a[2] == b[2];
25
+ }
26
+ export function add(a, b, out) {
27
+ out[0] = a[0] + b[0];
28
+ out[1] = a[1] + b[1];
29
+ out[2] = a[2] + b[2];
30
+ return out;
31
+ }
32
+ export function copy(vector, out) {
33
+ out[0] = vector[0];
34
+ out[1] = vector[1];
35
+ out[2] = vector[2];
36
+ return out;
37
+ }
38
+ export function multiply(a, b, out) {
39
+ out[0] = a[0] * b[0];
40
+ out[1] = a[1] * b[1];
41
+ out[2] = a[2] * b[2];
42
+ return out;
43
+ }
44
+ export function divide(a, b, out) {
45
+ out[0] = a[0] / b[0];
46
+ out[1] = a[1] / b[1];
47
+ out[2] = a[2] / b[2];
48
+ return out;
49
+ }
50
+ export function subtract(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
+ return out;
55
+ }
56
+ export function ceil(vector, out) {
57
+ out[0] = Math.ceil(vector[0]);
58
+ out[1] = Math.ceil(vector[1]);
59
+ out[2] = Math.ceil(vector[2]);
60
+ return out;
61
+ }
62
+ export function floor(vector, out) {
63
+ out[0] = Math.floor(vector[0]);
64
+ out[1] = Math.floor(vector[1]);
65
+ out[2] = Math.floor(vector[2]);
66
+ return out;
67
+ }
68
+ export function round(vector, out) {
69
+ out[0] = Math.round(vector[0]);
70
+ out[1] = Math.round(vector[1]);
71
+ out[2] = Math.round(vector[2]);
72
+ return out;
73
+ }
74
+ export function min(a, b, out) {
75
+ out[0] = Math.min(a[0], b[0]);
76
+ out[1] = Math.min(a[1], b[1]);
77
+ out[2] = Math.min(a[2], b[2]);
78
+ return out;
79
+ }
80
+ export function max(a, b, out) {
81
+ out[0] = Math.max(a[0], b[0]);
82
+ out[1] = Math.max(a[1], b[1]);
83
+ out[2] = Math.max(a[2], b[2]);
84
+ return out;
85
+ }
86
+ export function scale(vector, scalar, out) {
87
+ out[0] = vector[0] * scalar;
88
+ out[1] = vector[1] * scalar;
89
+ out[2] = vector[2] * scalar;
90
+ return out;
91
+ }
92
+ export function scaleAndAdd(a, b, scalar, out) {
93
+ out[0] = a[0] + b[0] * scalar;
94
+ out[1] = a[1] + b[1] * scalar;
95
+ out[2] = a[2] + b[2] * scalar;
96
+ return out;
97
+ }
98
+ export function distance(a, b) {
99
+ const x = b[0] - a[0];
100
+ const y = b[1] - a[1];
101
+ const z = b[2] - a[2];
102
+ return Math.hypot(x, y, z);
103
+ }
104
+ export function squaredDistance(a, b) {
105
+ const x = b[0] - a[0];
106
+ const y = b[1] - a[1];
107
+ const z = b[2] - a[2];
108
+ return x * x + y * y + z * z;
109
+ }
110
+ export function getMagnitude(vector) {
111
+ const x = vector[0];
112
+ const y = vector[1];
113
+ const z = vector[2];
114
+ return Math.hypot(x, y, z);
115
+ }
116
+ export function getSquaredMagnitude(vector) {
117
+ const x = vector[0];
118
+ const y = vector[1];
119
+ const z = vector[2];
120
+ return x * x + y * y + z * z;
121
+ }
122
+ export function negate(vector, out) {
123
+ out[0] = -vector[0];
124
+ out[1] = -vector[1];
125
+ out[2] = -vector[2];
126
+ return out;
127
+ }
128
+ export function inverse(vector, out) {
129
+ out[0] = 1 / vector[0];
130
+ out[1] = 1 / vector[1];
131
+ out[2] = 1 / vector[2];
132
+ return out;
133
+ }
134
+ export function normalize(vector, out) {
135
+ const x = vector[0];
136
+ const y = vector[1];
137
+ const z = vector[2];
138
+ let len = x * x + y * y + z * z;
139
+ if (len > 0) {
140
+ len = 1 / Math.sqrt(len);
141
+ }
142
+ out[0] = x * len;
143
+ out[1] = y * len;
144
+ out[2] = z * len;
145
+ return out;
146
+ }
147
+ export function dot(a, b) {
148
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
149
+ }
150
+ export function cross(a, b, out) {
151
+ const ax = a[0];
152
+ const ay = a[1];
153
+ const az = a[2];
154
+ const bx = b[0];
155
+ const by = b[1];
156
+ const bz = b[2];
157
+ out[0] = ay * bz - az * by;
158
+ out[1] = az * bx - ax * bz;
159
+ out[2] = ax * by - ay * bx;
160
+ return out;
161
+ }
162
+ export function lerp(a, b, t, out) {
163
+ const ax = a[0];
164
+ const ay = a[1];
165
+ const az = a[2];
166
+ out[0] = ax + t * (b[0] - ax);
167
+ out[1] = ay + t * (b[1] - ay);
168
+ out[2] = az + t * (b[2] - az);
169
+ return out;
170
+ }
171
+ export function random(magnitude, out) {
172
+ const r = Math.random() * 2 * Math.PI;
173
+ const z = Math.random() * 2 - 1;
174
+ const zScale = Math.sqrt(1 - z * z) * magnitude;
175
+ out[0] = Math.cos(r) * zScale;
176
+ out[1] = Math.sin(r) * zScale;
177
+ out[2] = z * magnitude;
178
+ return out;
179
+ }
180
+ export function transformMatrix3(vector, matrix, out) {
181
+ const x = vector[0];
182
+ const y = vector[1];
183
+ const z = vector[2];
184
+ out[0] = x * matrix[0] + y * matrix[3] + z * matrix[6];
185
+ out[1] = x * matrix[1] + y * matrix[4] + z * matrix[7];
186
+ out[2] = x * matrix[2] + y * matrix[5] + z * matrix[8];
187
+ return out;
188
+ }
189
+ export function transformMatrix4(vector, matrix, out) {
190
+ const x = vector[0];
191
+ const y = vector[1];
192
+ const z = vector[2];
193
+ const w = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15] || 1;
194
+ out[0] = (matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12]) / w;
195
+ out[1] = (matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13]) / w;
196
+ out[2] = (matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14]) / w;
197
+ return out;
198
+ }
199
+ export function rotateX(vector, origin, radians, out) {
200
+ const p = [
201
+ vector[0] - origin[0],
202
+ vector[1] - origin[1],
203
+ vector[2] - origin[2]
204
+ ];
205
+ const r = [
206
+ p[0],
207
+ p[1] * Math.cos(radians) - p[2] * Math.sin(radians),
208
+ p[1] * Math.sin(radians) + p[2] * Math.cos(radians)
209
+ ];
210
+ out[0] = r[0] + origin[0];
211
+ out[1] = r[1] + origin[1];
212
+ out[2] = r[2] + origin[2];
213
+ return out;
214
+ }
215
+ export function rotateY(vector, origin, radians, out) {
216
+ const p = [
217
+ vector[0] - origin[0],
218
+ vector[1] - origin[1],
219
+ vector[2] - origin[2]
220
+ ];
221
+ const r = [
222
+ p[2] * Math.sin(radians) + p[0] * Math.cos(radians),
223
+ p[1],
224
+ p[2] * Math.cos(radians) - p[0] * Math.sin(radians)
225
+ ];
226
+ out[0] = r[0] + origin[0];
227
+ out[1] = r[1] + origin[1];
228
+ out[2] = r[2] + origin[2];
229
+ return out;
230
+ }
231
+ export function rotateZ(vector, origin, radians, out) {
232
+ const p = [
233
+ vector[0] - origin[0],
234
+ vector[1] - origin[1],
235
+ vector[2] - origin[2]
236
+ ];
237
+ const r = [
238
+ p[0] * Math.cos(radians) - p[1] * Math.sin(radians),
239
+ p[0] * Math.sin(radians) + p[1] * Math.cos(radians),
240
+ p[2]
241
+ ];
242
+ out[0] = r[0] + origin[0];
243
+ out[1] = r[1] + origin[1];
244
+ out[2] = r[2] + origin[2];
245
+ return out;
246
+ }
247
+ export function angle(a, b) {
248
+ const ax = a[0];
249
+ const ay = a[1];
250
+ const az = a[2];
251
+ const bx = b[0];
252
+ const by = b[1];
253
+ const bz = b[2];
254
+ const mag1 = Math.sqrt(ax * ax + ay * ay + az * az);
255
+ const mag2 = Math.sqrt(bx * bx + by * by + bz * bz);
256
+ const mag = mag1 * mag2;
257
+ const cosine = mag && dot(a, b) / mag;
258
+ return Math.acos(Math.min(Math.max(cosine, -1), 1));
259
+ }
260
+ export function zero(out) {
261
+ out[0] = 0;
262
+ out[1] = 0;
263
+ out[2] = 0;
264
+ return out;
265
+ }
266
+ export function hermite(a, b, c, d, t, out) {
267
+ const factorTimes2 = t * t;
268
+ const factor1 = factorTimes2 * (2 * t - 3) + 1;
269
+ const factor2 = factorTimes2 * (t - 2) + t;
270
+ const factor3 = factorTimes2 * (t - 1);
271
+ const factor4 = factorTimes2 * (3 - 2 * t);
272
+ out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;
273
+ out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;
274
+ out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;
275
+ return out;
276
+ }
277
+ export function bezier(a, b, c, d, t, out) {
278
+ const inverseFactor = 1 - t;
279
+ const inverseFactorTimesTwo = inverseFactor * inverseFactor;
280
+ const factorTimes2 = t * t;
281
+ const factor1 = inverseFactorTimesTwo * inverseFactor;
282
+ const factor2 = 3 * t * inverseFactorTimesTwo;
283
+ const factor3 = 3 * factorTimes2 * inverseFactor;
284
+ const factor4 = factorTimes2 * t;
285
+ out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;
286
+ out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;
287
+ out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;
288
+ return out;
289
+ }
290
+ export function transformQuaternion(vector, quaternion, out) {
291
+ const qx = quaternion[0];
292
+ const qy = quaternion[1];
293
+ const qz = quaternion[2];
294
+ const qw = quaternion[3];
295
+ const x = vector[0];
296
+ const y = vector[1];
297
+ const z = vector[2];
298
+ let uvx = qy * z - qz * y;
299
+ let uvy = qz * x - qx * z;
300
+ let uvz = qx * y - qy * x;
301
+ let uuvx = qy * uvz - qz * uvy;
302
+ let uuvy = qz * uvx - qx * uvz;
303
+ let uuvz = qx * uvy - qy * uvx;
304
+ const w2 = qw * 2;
305
+ uvx *= w2;
306
+ uvy *= w2;
307
+ uvz *= w2;
308
+ uuvx *= 2;
309
+ uuvy *= 2;
310
+ uuvz *= 2;
311
+ out[0] = x + uvx + uuvx;
312
+ out[1] = y + uvy + uuvy;
313
+ out[2] = z + uvz + uuvz;
314
+ return out;
315
+ }
316
+ const xAxis = new Float32Array([1, 0, 0]);
317
+ const yAxis = new Float32Array([0, 1, 0]);
318
+ const intermediary = new Float32Array(3);
319
+ export function rotationTo(a, b, out) {
320
+ const dp = dot(a, b);
321
+ if (dp < epsilon - 1) {
322
+ cross(xAxis, a, intermediary);
323
+ if (getMagnitude(intermediary) < epsilon) {
324
+ cross(yAxis, a, intermediary);
325
+ }
326
+ normalize(intermediary, intermediary);
327
+ out[0] = intermediary[0];
328
+ out[1] = intermediary[1];
329
+ out[2] = intermediary[2];
330
+ out[3] = 0;
331
+ return out;
332
+ }
333
+ if (dp > 1 - epsilon) {
334
+ out[0] = 0;
335
+ out[1] = 0;
336
+ out[2] = 0;
337
+ out[3] = 1;
338
+ return out;
339
+ }
340
+ cross(a, b, intermediary);
341
+ out[0] = intermediary[0];
342
+ out[1] = intermediary[1];
343
+ out[2] = intermediary[2];
344
+ out[3] = 1 + dp;
345
+ return normalizeVector4(out, out);
346
+ }
347
+ export default class Vector3 extends Float32Array {
348
+ static fromValues(x, y, z, out = new Vector3()) {
349
+ return fromValues(x, y, z, out);
350
+ }
351
+ constructor() {
352
+ super(3);
353
+ }
354
+ equals(vector) {
355
+ return equals(this, vector);
356
+ }
357
+ exactEquals(vector) {
358
+ return exactEquals(this, vector);
359
+ }
360
+ add(vector, out = new Vector3()) {
361
+ return add(this, vector, out);
362
+ }
363
+ clone() {
364
+ return copy(this, new Vector3());
365
+ }
366
+ copy(vector) {
367
+ return copy(vector, this);
368
+ }
369
+ multiply(vector, out = new Vector3()) {
370
+ return multiply(this, vector, out);
371
+ }
372
+ divide(vector, out = new Vector3()) {
373
+ return divide(this, vector, out);
374
+ }
375
+ subtract(vector, out = new Vector3()) {
376
+ return subtract(this, vector, out);
377
+ }
378
+ ceil(out = new Vector3()) {
379
+ return ceil(this, out);
380
+ }
381
+ floor(out = new Vector3()) {
382
+ return floor(this, out);
383
+ }
384
+ round(out = new Vector3()) {
385
+ return round(this, out);
386
+ }
387
+ min(vector, out = new Vector3()) {
388
+ return min(this, vector, out);
389
+ }
390
+ max(vector, out = new Vector3()) {
391
+ return max(this, vector, out);
392
+ }
393
+ scale(scalar, out = new Vector3()) {
394
+ return scale(this, scalar, out);
395
+ }
396
+ scaleAndAdd(vector, scalar, out = new Vector3()) {
397
+ return scaleAndAdd(this, vector, scalar, out);
398
+ }
399
+ distance(vector) {
400
+ return distance(this, vector);
401
+ }
402
+ squaredDistance(vector) {
403
+ return squaredDistance(this, vector);
404
+ }
405
+ get magnitude() {
406
+ return getMagnitude(this);
407
+ }
408
+ get squaredMagnitude() {
409
+ return getSquaredMagnitude(this);
410
+ }
411
+ negate(out = new Vector3()) {
412
+ return negate(this, out);
413
+ }
414
+ inverse(out = new Vector3()) {
415
+ return inverse(this, out);
416
+ }
417
+ normalize(out = new Vector3()) {
418
+ return normalize(this, out);
419
+ }
420
+ dot(vector) {
421
+ return dot(this, vector);
422
+ }
423
+ cross(vector, out = new Vector3()) {
424
+ return cross(this, vector, out);
425
+ }
426
+ lerp(vector, t, out = new Vector3()) {
427
+ return lerp(this, vector, t, out);
428
+ }
429
+ random(magnitude = 1) {
430
+ return random(magnitude, this);
431
+ }
432
+ transformMatrix3(matrix, out = new Vector3()) {
433
+ return transformMatrix3(this, matrix, out);
434
+ }
435
+ transformMatrix4(matrix, out = new Vector3()) {
436
+ return transformMatrix4(this, matrix, out);
437
+ }
438
+ rotateX(origin, radians, out = new Vector3()) {
439
+ return rotateX(this, origin, radians, out);
440
+ }
441
+ rotateY(origin, radians, out = new Vector3()) {
442
+ return rotateY(this, origin, radians, out);
443
+ }
444
+ rotateZ(origin, radians, out = new Vector3()) {
445
+ return rotateZ(this, origin, radians, out);
446
+ }
447
+ angle(vector) {
448
+ return angle(this, vector);
449
+ }
450
+ zero() {
451
+ return zero(this);
452
+ }
453
+ hermite(a, b, end, t, out = new Vector3()) {
454
+ return hermite(this, a, b, end, t, out);
455
+ }
456
+ bezier(a, b, end, t, out = new Vector3()) {
457
+ return bezier(this, a, b, end, t, out);
458
+ }
459
+ transformQuaternion(quaternion, out = new Vector3()) {
460
+ return transformQuaternion(this, quaternion, out);
461
+ }
462
+ rotationTo(vector, out = new Quaternion()) {
463
+ return rotationTo(this, vector, out);
464
+ }
465
+ }
466
+ //# sourceMappingURL=Vector3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Vector3.js","sourceRoot":"","sources":["../../src/linear/Vector3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { type Vector } from "@lakuna/umath";
2
+ import type { Matrix4Like } from "@lakuna/umath/Matrix4";
3
+ import type { QuaternionLike } from "@lakuna/umath/Quaternion";
4
+ export type Vector4Like = Vector4 | [number, number, number, number];
5
+ export declare function fromValues<T extends Vector4Like>(x: number, y: number, z: number, w: number, out: T): T;
6
+ export declare function equals(a: Vector4Like, b: Vector4Like): boolean;
7
+ export declare function exactEquals(a: Vector4Like, b: Vector4Like): boolean;
8
+ export declare function add<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T): T;
9
+ export declare function copy<T extends Vector4Like>(vector: Vector4Like, out: T): T;
10
+ export declare function multiply<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T): T;
11
+ export declare function divide<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T): T;
12
+ export declare function subtract<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T): T;
13
+ export declare function ceil<T extends Vector4Like>(vector: Vector4Like, out: T): T;
14
+ export declare function floor<T extends Vector4Like>(vector: Vector4Like, out: T): T;
15
+ export declare function round<T extends Vector4Like>(vector: Vector4Like, out: T): T;
16
+ export declare function min<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T): T;
17
+ export declare function max<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T): T;
18
+ export declare function scale<T extends Vector4Like>(vector: Vector4Like, scalar: number, out: T): T;
19
+ export declare function scaleAndAdd<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, scalar: number, out: T): T;
20
+ export declare function distance(a: Vector4Like, b: Vector4Like): number;
21
+ export declare function squaredDistance(a: Vector4Like, b: Vector4Like): number;
22
+ export declare function getMagnitude(vector: Vector4Like): number;
23
+ export declare function getSquaredMagnitude(vector: Vector4Like): number;
24
+ export declare function negate<T extends Vector4Like>(vector: Vector4Like, out: T): T;
25
+ export declare function inverse<T extends Vector4Like>(vector: Vector4Like, out: T): T;
26
+ export declare function normalize<T extends Vector4Like>(vector: Vector4Like, out: T): T;
27
+ export declare function dot(a: Vector4Like, b: Vector4Like): number;
28
+ export declare function cross<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, c: Vector4Like, out: T): T;
29
+ export declare function lerp<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, t: number, out: T): T;
30
+ export declare function random<T extends Vector4Like>(magnitude: number, out: T): T;
31
+ export declare function transformMatrix4<T extends Vector4Like>(vector: Vector4Like, matrix: Matrix4Like, out: T): T;
32
+ export declare function zero<T extends Vector4Like>(out: T): T;
33
+ export declare function transformQuaternion<T extends Vector4Like>(vector: Vector4Like, quaternion: QuaternionLike, out: T): T;
34
+ export default class Vector4 extends Float32Array implements Vector {
35
+ static fromValues(x: number, y: number, z: number, w: number): Vector4;
36
+ static fromValues<T extends Vector4Like>(x: number, y: number, z: number, w: number, out: T): T;
37
+ constructor();
38
+ equals(vector: Vector4Like): boolean;
39
+ exactEquals(vector: Vector4Like): boolean;
40
+ add(vector: Vector4Like): Vector4;
41
+ add<T extends Vector4Like>(vector: Vector4Like, out: T): T;
42
+ clone(): Vector4;
43
+ copy(vector: Vector4Like): this;
44
+ multiply(vector: Vector4Like): Vector4;
45
+ multiply<T extends Vector4Like>(vector: Vector4Like, out: T): T;
46
+ divide(vector: Vector4Like): Vector4;
47
+ divide<T extends Vector4Like>(vector: Vector4Like, out: T): T;
48
+ subtract(vector: Vector4Like): Vector4;
49
+ subtract<T extends Vector4Like>(vector: Vector4Like, out: T): T;
50
+ ceil(): Vector4;
51
+ ceil<T extends Vector4Like>(out: T): T;
52
+ floor(): Vector4;
53
+ floor<T extends Vector4Like>(out: T): T;
54
+ round(): Vector4;
55
+ round<T extends Vector4Like>(out: T): T;
56
+ min(vector: Vector4Like): Vector4;
57
+ min<T extends Vector4Like>(vector: Vector4Like, out: T): T;
58
+ max(vector: Vector4Like): Vector4;
59
+ max<T extends Vector4Like>(vector: Vector4Like, out: T): T;
60
+ scale(scalar: number): Vector4;
61
+ scale<T extends Vector4Like>(scalar: number, out: T): T;
62
+ scaleAndAdd(vector: Vector4Like, scalar: number): Vector4;
63
+ scaleAndAdd<T extends Vector4Like>(vector: Vector4Like, scalar: number, out: T): T;
64
+ distance(vector: Vector4Like): number;
65
+ squaredDistance(vector: Vector4Like): number;
66
+ get magnitude(): number;
67
+ get squaredMagnitude(): number;
68
+ negate(): Vector4;
69
+ negate<T extends Vector4Like>(out: T): T;
70
+ inverse(): Vector4;
71
+ inverse<T extends Vector4Like>(out: T): T;
72
+ normalize(): Vector4;
73
+ normalize<T extends Vector4Like>(out: T): T;
74
+ dot(vector: Vector4Like): number;
75
+ cross(a: Vector4Like, b: Vector4Like): Vector4;
76
+ cross<T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T): T;
77
+ lerp(vector: Vector4Like, t: number): Vector4;
78
+ lerp<T extends Vector4Like>(vector: Vector4Like, t: number, out: T): T;
79
+ random(magnitude?: number): this;
80
+ transformMatrix4(matrix: Matrix4Like): Vector4;
81
+ transformMatrix4<T extends Vector4Like>(matrix: Matrix4Like, out: T): T;
82
+ zero(): this;
83
+ transformQuaternion(quaternion: QuaternionLike): Vector4;
84
+ transformQuaternion<T extends Vector4Like>(quaternion: QuaternionLike, out: T): T;
85
+ }
86
+ //# sourceMappingURL=Vector4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Vector4.d.ts","sourceRoot":"","sources":["../../src/linear/Vector4.ts"],"names":[],"mappings":"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"}