@lakuna/umath 1.3.4 → 1.3.6

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 (162) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +7 -9
  3. package/dist/algorithms/combinations.d.ts +7 -0
  4. package/dist/algorithms/combinations.d.ts.map +1 -1
  5. package/dist/algorithms/combinations.js +8 -1
  6. package/dist/algorithms/combinations.js.map +1 -1
  7. package/dist/algorithms/degreesToRadians.d.ts +7 -0
  8. package/dist/algorithms/degreesToRadians.d.ts.map +1 -1
  9. package/dist/algorithms/degreesToRadians.js +7 -0
  10. package/dist/algorithms/degreesToRadians.js.map +1 -1
  11. package/dist/algorithms/factorial.d.ts +6 -0
  12. package/dist/algorithms/factorial.d.ts.map +1 -1
  13. package/dist/algorithms/factorial.js +15 -5
  14. package/dist/algorithms/factorial.js.map +1 -1
  15. package/dist/algorithms/fibonacci.d.ts +6 -1
  16. package/dist/algorithms/fibonacci.d.ts.map +1 -1
  17. package/dist/algorithms/fibonacci.js +6 -1
  18. package/dist/algorithms/fibonacci.js.map +1 -1
  19. package/dist/algorithms/greatestCommonDivisor.d.ts +14 -0
  20. package/dist/algorithms/greatestCommonDivisor.d.ts.map +1 -1
  21. package/dist/algorithms/greatestCommonDivisor.js +7 -9
  22. package/dist/algorithms/greatestCommonDivisor.js.map +1 -1
  23. package/dist/algorithms/hypergeometricPmf.d.ts +9 -0
  24. package/dist/algorithms/hypergeometricPmf.d.ts.map +1 -1
  25. package/dist/algorithms/hypergeometricPmf.js +10 -1
  26. package/dist/algorithms/hypergeometricPmf.js.map +1 -1
  27. package/dist/algorithms/isPrime.d.ts +6 -0
  28. package/dist/algorithms/isPrime.d.ts.map +1 -1
  29. package/dist/algorithms/isPrime.js +8 -1
  30. package/dist/algorithms/isPrime.js.map +1 -1
  31. package/dist/algorithms/permutations.d.ts +7 -0
  32. package/dist/algorithms/permutations.d.ts.map +1 -1
  33. package/dist/algorithms/permutations.js +8 -1
  34. package/dist/algorithms/permutations.js.map +1 -1
  35. package/dist/algorithms/primeFactorization.d.ts +7 -1
  36. package/dist/algorithms/primeFactorization.d.ts.map +1 -1
  37. package/dist/algorithms/primeFactorization.js +10 -3
  38. package/dist/algorithms/primeFactorization.js.map +1 -1
  39. package/dist/algorithms/radiansToDegrees.d.ts +7 -0
  40. package/dist/algorithms/radiansToDegrees.d.ts.map +1 -1
  41. package/dist/algorithms/radiansToDegrees.js +7 -0
  42. package/dist/algorithms/radiansToDegrees.js.map +1 -1
  43. package/dist/algorithms/summation.d.ts +8 -0
  44. package/dist/algorithms/summation.d.ts.map +1 -1
  45. package/dist/algorithms/summation.js +9 -0
  46. package/dist/algorithms/summation.js.map +1 -1
  47. package/dist/index.d.ts +32 -33
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +27 -27
  50. package/dist/index.js.map +1 -1
  51. package/dist/linalg/DualQuaternion.d.ts +460 -83
  52. package/dist/linalg/DualQuaternion.d.ts.map +1 -1
  53. package/dist/linalg/DualQuaternion.js +514 -133
  54. package/dist/linalg/DualQuaternion.js.map +1 -1
  55. package/dist/linalg/Matrix.d.ts +80 -12
  56. package/dist/linalg/Matrix.d.ts.map +1 -1
  57. package/dist/linalg/Matrix2.d.ts +337 -52
  58. package/dist/linalg/Matrix2.d.ts.map +1 -1
  59. package/dist/linalg/Matrix2.js +345 -61
  60. package/dist/linalg/Matrix2.js.map +1 -1
  61. package/dist/linalg/Matrix3.d.ts +470 -72
  62. package/dist/linalg/Matrix3.d.ts.map +1 -1
  63. package/dist/linalg/Matrix3.js +488 -94
  64. package/dist/linalg/Matrix3.js.map +1 -1
  65. package/dist/linalg/Matrix4.d.ts +842 -137
  66. package/dist/linalg/Matrix4.d.ts.map +1 -1
  67. package/dist/linalg/Matrix4.js +896 -175
  68. package/dist/linalg/Matrix4.js.map +1 -1
  69. package/dist/linalg/Quaternion.d.ts +395 -70
  70. package/dist/linalg/Quaternion.d.ts.map +1 -1
  71. package/dist/linalg/Quaternion.js +416 -70
  72. package/dist/linalg/Quaternion.js.map +1 -1
  73. package/dist/linalg/SlowMatrix.d.ts +79 -9
  74. package/dist/linalg/SlowMatrix.d.ts.map +1 -1
  75. package/dist/linalg/SlowMatrix.js +147 -27
  76. package/dist/linalg/SlowMatrix.js.map +1 -1
  77. package/dist/linalg/SlowSquareMatrix.d.ts +58 -3
  78. package/dist/linalg/SlowSquareMatrix.d.ts.map +1 -1
  79. package/dist/linalg/SlowSquareMatrix.js +111 -21
  80. package/dist/linalg/SlowSquareMatrix.js.map +1 -1
  81. package/dist/linalg/SquareMatrix.d.ts +26 -3
  82. package/dist/linalg/SquareMatrix.d.ts.map +1 -1
  83. package/dist/linalg/Vector.d.ts +148 -24
  84. package/dist/linalg/Vector.d.ts.map +1 -1
  85. package/dist/linalg/Vector2.d.ts +484 -84
  86. package/dist/linalg/Vector2.d.ts.map +1 -1
  87. package/dist/linalg/Vector2.js +487 -71
  88. package/dist/linalg/Vector2.js.map +1 -1
  89. package/dist/linalg/Vector3.d.ts +582 -98
  90. package/dist/linalg/Vector3.d.ts.map +1 -1
  91. package/dist/linalg/Vector3.js +625 -134
  92. package/dist/linalg/Vector3.js.map +1 -1
  93. package/dist/linalg/Vector4.d.ts +450 -75
  94. package/dist/linalg/Vector4.d.ts.map +1 -1
  95. package/dist/linalg/Vector4.js +447 -62
  96. package/dist/linalg/Vector4.js.map +1 -1
  97. package/dist/types/AxisAngle.d.ts +4 -1
  98. package/dist/types/AxisAngle.d.ts.map +1 -1
  99. package/dist/types/FieldOfView.d.ts +5 -0
  100. package/dist/types/FieldOfView.d.ts.map +1 -1
  101. package/dist/utility/BigNumber.d.ts +41 -8
  102. package/dist/utility/BigNumber.d.ts.map +1 -1
  103. package/dist/utility/BigNumber.js +47 -5
  104. package/dist/utility/BigNumber.js.map +1 -1
  105. package/dist/utility/MagnitudeError.d.ts +5 -0
  106. package/dist/utility/MagnitudeError.d.ts.map +1 -1
  107. package/dist/utility/MagnitudeError.js +6 -1
  108. package/dist/utility/MagnitudeError.js.map +1 -1
  109. package/dist/utility/MatrixSizeError.d.ts +5 -0
  110. package/dist/utility/MatrixSizeError.d.ts.map +1 -1
  111. package/dist/utility/MatrixSizeError.js +5 -0
  112. package/dist/utility/MatrixSizeError.js.map +1 -1
  113. package/dist/utility/PartialMatrixError.d.ts +5 -0
  114. package/dist/utility/PartialMatrixError.d.ts.map +1 -1
  115. package/dist/utility/PartialMatrixError.js +5 -0
  116. package/dist/utility/PartialMatrixError.js.map +1 -1
  117. package/dist/utility/SingularMatrixError.d.ts +8 -0
  118. package/dist/utility/SingularMatrixError.d.ts.map +1 -1
  119. package/dist/utility/SingularMatrixError.js +8 -0
  120. package/dist/utility/SingularMatrixError.js.map +1 -1
  121. package/dist/utility/epsilon.d.ts +1 -0
  122. package/dist/utility/epsilon.d.ts.map +1 -1
  123. package/dist/utility/epsilon.js +1 -0
  124. package/dist/utility/epsilon.js.map +1 -1
  125. package/package.json +20 -51
  126. package/src/algorithms/combinations.ts +4 -4
  127. package/src/algorithms/degreesToRadians.ts +3 -3
  128. package/src/algorithms/factorial.ts +13 -8
  129. package/src/algorithms/fibonacci.ts +3 -3
  130. package/src/algorithms/greatestCommonDivisor.ts +15 -19
  131. package/src/algorithms/hypergeometricPmf.ts +5 -6
  132. package/src/algorithms/isPrime.ts +4 -4
  133. package/src/algorithms/permutations.ts +4 -4
  134. package/src/algorithms/primeFactorization.ts +9 -9
  135. package/src/algorithms/radiansToDegrees.ts +3 -3
  136. package/src/algorithms/summation.ts +5 -5
  137. package/src/index.ts +35 -33
  138. package/src/linalg/DualQuaternion.ts +558 -804
  139. package/src/linalg/Matrix.ts +35 -36
  140. package/src/linalg/Matrix2.ts +277 -413
  141. package/src/linalg/Matrix3.ts +532 -737
  142. package/src/linalg/Matrix4.ts +1078 -1604
  143. package/src/linalg/Quaternion.ts +415 -690
  144. package/src/linalg/SlowMatrix.ts +118 -69
  145. package/src/linalg/SlowSquareMatrix.ts +85 -56
  146. package/src/linalg/SquareMatrix.ts +7 -7
  147. package/src/linalg/Vector.ts +71 -70
  148. package/src/linalg/Vector2.ts +380 -576
  149. package/src/linalg/Vector3.ts +544 -840
  150. package/src/linalg/Vector4.ts +383 -549
  151. package/src/types/AxisAngle.ts +1 -1
  152. package/src/utility/BigNumber.ts +33 -42
  153. package/src/utility/MagnitudeError.ts +4 -4
  154. package/src/utility/MatrixSizeError.ts +2 -3
  155. package/src/utility/PartialMatrixError.ts +2 -3
  156. package/src/utility/SingularMatrixError.ts +2 -2
  157. package/src/utility/epsilon.ts +1 -4
  158. package/dist/types/IntegerRepresentation.d.ts +0 -2
  159. package/dist/types/IntegerRepresentation.d.ts.map +0 -1
  160. package/dist/types/IntegerRepresentation.js +0 -2
  161. package/dist/types/IntegerRepresentation.js.map +0 -1
  162. package/src/types/IntegerRepresentation.ts +0 -2
@@ -1,178 +1,179 @@
1
- /** A quantity with magnitude and direction. */
2
- export type VectorLike = Vector | Iterable<number>;
1
+ import type { Vector4Like } from "./Vector4.js";
2
+
3
+ /** An object that could be interpreted as a vector. */
4
+ export type VectorLike = Record<number, number>;
3
5
 
4
6
  /**
5
7
  * A quantity with magnitude and direction.
6
8
  * @see [Wikipedia](https://en.wikipedia.org/wiki/Euclidean_vector)
7
9
  */
8
- export default interface Vector extends Iterable<number> {
10
+ export default interface Vector extends VectorLike {
9
11
  /**
10
- * Determines whether this vector is roughly equivalent to another.
11
- * @param vector The other vector.
12
+ * Determine whether this vector is roughly equivalent to another.
13
+ * @param vector - The other vector.
12
14
  * @returns Whether the vectors are equivalent.
13
15
  */
14
- equals(vector: VectorLike): boolean;
16
+ equals(vector: Vector4Like): boolean;
15
17
 
16
18
  /**
17
- * Determines whether this vector is exactly equivalent to another.
18
- * @param vector The other vector.
19
+ * Determine whether this vector is exactly equivalent to another.
20
+ * @param vector - The other vector.
19
21
  * @returns Whether the vectors are equivalent.
20
22
  */
21
- exactEquals(vector: VectorLike): boolean;
23
+ exactEquals(vector: Vector4Like): boolean;
22
24
 
23
25
  /**
24
- * Adds two vectors of the same size.
25
- * @param vector The other vector.
26
+ * Add two vectors of the same size.
27
+ * @param vector - The other vector.
26
28
  * @returns The sum of the vectors.
27
29
  */
28
- add(vector: VectorLike): Vector;
30
+ add(vector: Vector4Like): VectorLike;
29
31
 
30
32
  /**
31
- * Creates a copy of this vector.
33
+ * Create a copy of this vector.
32
34
  * @returns A copy of this vector.
33
35
  */
34
- clone(): Vector;
36
+ clone(): VectorLike;
35
37
 
36
38
  /**
37
- * Copies the values of another vector into this one.
38
- * @param vector The vector to copy.
39
+ * Copy the values of another vector into this one.
40
+ * @param vector - The vector to copy.
39
41
  * @returns This vector.
40
42
  */
41
- copy(vector: VectorLike): this;
43
+ copy(vector: Vector4Like): this;
42
44
 
43
45
  /**
44
- * Multiplies this vector by another.
45
- * @param vector The other vector.
46
+ * Multiply this vector by another.
47
+ * @param vector - The other vector.
46
48
  * @returns The product of the vectors.
47
49
  */
48
- multiply(vector: VectorLike): Vector;
50
+ multiply(vector: Vector4Like): VectorLike;
49
51
 
50
52
  /**
51
- * Divides this vector by another.
52
- * @param vector The other vector.
53
+ * Divide this vector by another.
54
+ * @param vector - The other vector.
53
55
  * @returns The quotient of the vectors.
54
56
  */
55
- divide(vector: VectorLike): Vector;
57
+ divide(vector: Vector4Like): VectorLike;
56
58
 
57
59
  /**
58
- * Subtracts another vector from this one.
59
- * @param vector The other vector.
60
+ * Subtract another vector from this one.
61
+ * @param vector - The other vector.
60
62
  * @returns The difference between the vectors.
61
63
  */
62
- subtract(vector: VectorLike): Vector;
64
+ subtract(vector: Vector4Like): VectorLike;
63
65
 
64
66
  /**
65
- * Rounds up the components of this vector.
67
+ * Round up the components of this vector.
66
68
  * @returns The rounded vector.
67
69
  */
68
- ceil(): Vector;
70
+ ceil(): VectorLike;
69
71
 
70
72
  /**
71
- * Rounds down the components of this vector.
73
+ * Round down the components of this vector.
72
74
  * @returns The rounded vector.
73
75
  */
74
- floor(): Vector;
76
+ floor(): VectorLike;
75
77
 
76
78
  /**
77
- * Rounds the components of this vector.
79
+ * Round the components of this vector.
78
80
  * @returns The rounded vector.
79
81
  */
80
- round(): Vector;
82
+ round(): VectorLike;
81
83
 
82
84
  /**
83
- * Returns the minimum of this and another vector.
84
- * @param vector The other vector.
85
+ * Return the minimum of this and another vector.
86
+ * @param vector - The other vector.
85
87
  * @returns The minimum.
86
88
  */
87
- min(vector: VectorLike): Vector;
89
+ min(vector: Vector4Like): VectorLike;
88
90
 
89
91
  /**
90
- * Returns the maximum of this and another vector.
91
- * @param vector The other vector.
92
+ * Return the maximum of this and another vector.
93
+ * @param vector - The other vector.
92
94
  * @returns The maximum.
93
95
  */
94
- max(vector: VectorLike): Vector;
96
+ max(vector: Vector4Like): VectorLike;
95
97
 
96
98
  /**
97
- * Scales this vector by a scalar.
98
- * @param scalar The scalar.
99
+ * Scale this vector by a scalar.
100
+ * @param scalar - The scalar.
99
101
  * @returns The scaled vector.
100
102
  */
101
- scale(scalar: number): Vector;
103
+ scale(scalar: number): VectorLike;
102
104
 
103
105
  /**
104
- * Adds another vector to this one after scaling the other by a scalar.
105
- * @param vector The other vector.
106
- * @param scalar The scalar.
106
+ * Add another vector to this one after scaling the other by a scalar.
107
+ * @param vector - The other vector.
108
+ * @param scalar - The scalar.
107
109
  * @returns The sum.
108
110
  */
109
- scaleAndAdd(vector: VectorLike, scalar: number): Vector;
111
+ scaleAndAdd(vector: Vector4Like, scalar: number): VectorLike;
110
112
 
111
113
  /**
112
- * Calculates the Euclidean distance between this vector and another.
113
- * @param vector The other vector.
114
+ * Calculate the Euclidean distance between this vector and another.
115
+ * @param vector - The other vector.
114
116
  * @returns The distance.
115
117
  */
116
- distance(vector: VectorLike): number;
118
+ distance(vector: Vector4Like): number;
117
119
 
118
120
  /**
119
- * Calculates the squared Euclidean distance between this vector and
120
- * another.
121
- * @param vector The other vector.
121
+ * Calculate the squared Euclidean distance between this vector and another.
122
+ * @param vector - The other vector.
122
123
  * @returns The squared distance.
123
124
  */
124
- squaredDistance(vector: VectorLike): number;
125
+ squaredDistance(vector: Vector4Like): number;
125
126
 
126
- /** The magnitude (length) of this vector. */
127
+ /** Get the magnitude (length) of this vector. */
127
128
  get magnitude(): number;
128
129
 
129
- /** The squared magnitude (length) of this vector. */
130
+ /** Get the squared magnitude (length) of this vector. */
130
131
  get squaredMagnitude(): number;
131
132
 
132
133
  /**
133
- * Negates this vector.
134
+ * Negate this vector.
134
135
  * @returns The negated vector.
135
136
  */
136
- negate(): Vector;
137
+ negate(): VectorLike;
137
138
 
138
139
  /**
139
- * Calculates the multiplicative inverse of the components of this vector.
140
+ * Calculate the multiplicative inverse of the components of this vector.
140
141
  * @returns The inverted vector.
141
142
  */
142
- invert(): Vector;
143
+ invert(): VectorLike;
143
144
 
144
145
  /**
145
- * Normalizes this vector.
146
+ * Normalize this vector.
146
147
  * @returns The normalized vector.
147
148
  * @see [Unit vector](https://en.wikipedia.org/wiki/Unit_vector)
148
149
  */
149
- normalize(): Vector;
150
+ normalize(): VectorLike;
150
151
 
151
152
  /**
152
- * Calculates the dot product of this and another vector.
153
- * @param vector The other vector.
153
+ * Calculate the dot product of this and another vector.
154
+ * @param vector - The other vector.
154
155
  * @returns The dot product.
155
156
  * @see [Dot product](https://en.wikipedia.org/wiki/Dot_product)
156
157
  */
157
- dot(vector: VectorLike): number;
158
+ dot(vector: Vector4Like): number;
158
159
 
159
160
  /**
160
- * Performs a linear interpolation between this and another vector.
161
- * @param vector The other vector.
162
- * @param t The interpolation amount (in `[0,1]`).
161
+ * Perform a linear interpolation between this and another vector.
162
+ * @param vector - The other vector.
163
+ * @param t - The interpolation amount (in `[0,1]`).
163
164
  * @returns The interpolated vector.
164
165
  */
165
- lerp(vector: VectorLike, t: number): Vector;
166
+ lerp(vector: Vector4Like, t: number): VectorLike;
166
167
 
167
168
  /**
168
- * Sets this vector to a random value with the given magnitude.
169
- * @param magnitude The magnitude.
169
+ * Set this vector to a random value with the given magnitude.
170
+ * @param magnitude - The magnitude.
170
171
  * @returns This vector.
171
172
  */
172
173
  random(magnitude: number): this;
173
174
 
174
175
  /**
175
- * Sets this to the zero vector.
176
+ * Set this to the zero vector.
176
177
  * @returns This vector.
177
178
  */
178
179
  zero(): this;