@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,530 @@
1
+ import Quaternion, { rotateX as quaternionRotateX, rotateY as quaternionRotateY, rotateZ as quaternionRotateZ } from "@lakuna/umath/Quaternion";
2
+ import Vector3, {} from "@lakuna/umath/Vector3";
3
+ import { copy as xetReal, dot, getMagnitude, getSquaredMagnitude } from "@lakuna/umath/Vector4";
4
+ import { getRotation as getMatrix4Rotation, getTranslation as getMatrix4Translation } from "@lakuna/umath/Matrix4";
5
+ import { epsilon } from "@lakuna/umath";
6
+ export function fromValues(x1, y1, z1, w1, x2, y2, z2, w2, out) {
7
+ out[0] = x1;
8
+ out[1] = y1;
9
+ out[2] = z1;
10
+ out[3] = w1;
11
+ out[4] = x2;
12
+ out[5] = y2;
13
+ out[6] = z2;
14
+ out[7] = w2;
15
+ return out;
16
+ }
17
+ export function copy(dualQuaternion, out) {
18
+ out[0] = dualQuaternion[0];
19
+ out[1] = dualQuaternion[1];
20
+ out[2] = dualQuaternion[2];
21
+ out[3] = dualQuaternion[3];
22
+ out[4] = dualQuaternion[4];
23
+ out[5] = dualQuaternion[5];
24
+ out[6] = dualQuaternion[6];
25
+ out[7] = dualQuaternion[7];
26
+ return out;
27
+ }
28
+ export function fromRotationTranslation(quaternion, translation, out) {
29
+ const x = quaternion[0];
30
+ const y = quaternion[1];
31
+ const z = quaternion[2];
32
+ const w = quaternion[3];
33
+ const ax = translation[0] * 0.5;
34
+ const ay = translation[1] * 0.5;
35
+ const az = translation[2] * 0.5;
36
+ out[0] = x;
37
+ out[1] = y;
38
+ out[2] = z;
39
+ out[3] = w;
40
+ out[4] = ax * w + ay * z - az * y;
41
+ out[5] = ay * w + az * x - ax * z;
42
+ out[6] = az * w + ax * y - ay * x;
43
+ out[7] = -ax * x - ay * y - az * z;
44
+ return out;
45
+ }
46
+ export function fromTranslation(translation, out) {
47
+ out[0] = 0;
48
+ out[1] = 0;
49
+ out[2] = 0;
50
+ out[3] = 0;
51
+ out[4] = translation[0] * 0.5;
52
+ out[5] = translation[1] * 0.5;
53
+ out[6] = translation[2] * 0.5;
54
+ out[7] = 0;
55
+ return out;
56
+ }
57
+ export function fromRotation(quaternion, out) {
58
+ out[0] = quaternion[0];
59
+ out[1] = quaternion[1];
60
+ out[2] = quaternion[2];
61
+ out[3] = quaternion[3];
62
+ out[4] = 0;
63
+ out[5] = 0;
64
+ out[6] = 0;
65
+ out[7] = 0;
66
+ return out;
67
+ }
68
+ const rotation = new Float32Array(4);
69
+ const translation = new Float32Array(4);
70
+ export function fromMatrix4(matrix, out) {
71
+ return fromRotationTranslation(getMatrix4Rotation(matrix, rotation), getMatrix4Translation(matrix, translation), out);
72
+ }
73
+ export function identity(out) {
74
+ out[0] = 0;
75
+ out[1] = 0;
76
+ out[2] = 0;
77
+ out[3] = 1;
78
+ out[4] = 0;
79
+ out[5] = 0;
80
+ out[6] = 0;
81
+ out[7] = 0;
82
+ return out;
83
+ }
84
+ export function getDual(dualQuaternion, out) {
85
+ out[0] = dualQuaternion[4];
86
+ out[1] = dualQuaternion[5];
87
+ out[2] = dualQuaternion[6];
88
+ out[3] = dualQuaternion[7];
89
+ return out;
90
+ }
91
+ export function setDual(quaternion, out) {
92
+ out[4] = quaternion[0];
93
+ out[5] = quaternion[1];
94
+ out[6] = quaternion[2];
95
+ out[7] = quaternion[3];
96
+ return out;
97
+ }
98
+ export function getTranslation(dualQuaternion, out) {
99
+ const ax = dualQuaternion[4];
100
+ const ay = dualQuaternion[5];
101
+ const az = dualQuaternion[6];
102
+ const aw = dualQuaternion[7];
103
+ const bx = -dualQuaternion[0];
104
+ const by = -dualQuaternion[1];
105
+ const bz = -dualQuaternion[2];
106
+ const bw = dualQuaternion[3];
107
+ out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;
108
+ out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;
109
+ out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;
110
+ return out;
111
+ }
112
+ export function translate(dualQuaternion, vector, out) {
113
+ const ax1 = dualQuaternion[0];
114
+ const ay1 = dualQuaternion[1];
115
+ const az1 = dualQuaternion[2];
116
+ const aw1 = dualQuaternion[3];
117
+ const bx1 = vector[0] * 0.5;
118
+ const by1 = vector[1] * 0.5;
119
+ const bz1 = vector[2] * 0.5;
120
+ const ax2 = dualQuaternion[4];
121
+ const ay2 = dualQuaternion[5];
122
+ const az2 = dualQuaternion[6];
123
+ const aw2 = dualQuaternion[7];
124
+ out[0] = ax1;
125
+ out[1] = ay1;
126
+ out[2] = az1;
127
+ out[3] = aw1;
128
+ out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;
129
+ out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;
130
+ out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;
131
+ out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;
132
+ return out;
133
+ }
134
+ export function rotateX(dualQuaternion, radians, out) {
135
+ let bx = -dualQuaternion[0];
136
+ let by = -dualQuaternion[1];
137
+ let bz = -dualQuaternion[2];
138
+ let bw = dualQuaternion[3];
139
+ const ax = dualQuaternion[4];
140
+ const ay = dualQuaternion[5];
141
+ const az = dualQuaternion[6];
142
+ const aw = dualQuaternion[7];
143
+ const ax1 = ax * bw + aw * bx + ay * bz - az * by;
144
+ const ay1 = ay * bw + aw * by + az * bx - ax * bz;
145
+ const az1 = az * bw + aw * bz + ax * by - ay * bx;
146
+ const aw1 = aw * bw - ax * bx - ay * by - az * bz;
147
+ quaternionRotateX(dualQuaternion, radians, out);
148
+ bx = out[0];
149
+ by = out[1];
150
+ bz = out[2];
151
+ bw = out[3];
152
+ out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;
153
+ out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;
154
+ out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;
155
+ out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;
156
+ return out;
157
+ }
158
+ export function rotateY(dualQuaternion, radians, out) {
159
+ let bx = -dualQuaternion[0];
160
+ let by = -dualQuaternion[1];
161
+ let bz = -dualQuaternion[2];
162
+ let bw = dualQuaternion[3];
163
+ const ax = dualQuaternion[4];
164
+ const ay = dualQuaternion[5];
165
+ const az = dualQuaternion[6];
166
+ const aw = dualQuaternion[7];
167
+ const ax1 = ax * bw + aw * bx + ay * bz - az * by;
168
+ const ay1 = ay * bw + aw * by + az * bx - ax * bz;
169
+ const az1 = az * bw + aw * bz + ax * by - ay * bx;
170
+ const aw1 = aw * bw - ax * bx - ay * by - az * bz;
171
+ quaternionRotateY(dualQuaternion, radians, out);
172
+ bx = out[0];
173
+ by = out[1];
174
+ bz = out[2];
175
+ bw = out[3];
176
+ out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;
177
+ out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;
178
+ out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;
179
+ out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;
180
+ return out;
181
+ }
182
+ export function rotateZ(dualQuaternion, radians, out) {
183
+ let bx = -dualQuaternion[0];
184
+ let by = -dualQuaternion[1];
185
+ let bz = -dualQuaternion[2];
186
+ let bw = dualQuaternion[3];
187
+ const ax = dualQuaternion[4];
188
+ const ay = dualQuaternion[5];
189
+ const az = dualQuaternion[6];
190
+ const aw = dualQuaternion[7];
191
+ const ax1 = ax * bw + aw * bx + ay * bz - az * by;
192
+ const ay1 = ay * bw + aw * by + az * bx - ax * bz;
193
+ const az1 = az * bw + aw * bz + ax * by - ay * bx;
194
+ const aw1 = aw * bw - ax * bx - ay * by - az * bz;
195
+ quaternionRotateZ(dualQuaternion, radians, out);
196
+ bx = out[0];
197
+ by = out[1];
198
+ bz = out[2];
199
+ bw = out[3];
200
+ out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;
201
+ out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;
202
+ out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;
203
+ out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;
204
+ return out;
205
+ }
206
+ export function rotateByQuaternionAppend(dualQuaternion, quaternion, out) {
207
+ const qx = quaternion[0];
208
+ const qy = quaternion[1];
209
+ const qz = quaternion[2];
210
+ const qw = quaternion[3];
211
+ let ax = dualQuaternion[0];
212
+ let ay = dualQuaternion[1];
213
+ let az = dualQuaternion[2];
214
+ let aw = dualQuaternion[3];
215
+ out[0] = ax * qw + aw * qx + ay * qz - az * qy;
216
+ out[1] = ay * qw + aw * qy + az * qx - ax * qz;
217
+ out[2] = az * qw + aw * qz + ax * qy - ay * qx;
218
+ out[3] = aw * qw - ax * qx - ay * qy - az * qz;
219
+ ax = dualQuaternion[4];
220
+ ay = dualQuaternion[5];
221
+ az = dualQuaternion[6];
222
+ aw = dualQuaternion[7];
223
+ out[4] = ax * qw + aw * qx + ay * qz - az * qy;
224
+ out[5] = ay * qw + aw * qy + az * qx - ax * qz;
225
+ out[6] = az * qw + aw * qz + ax * qy - ay * qx;
226
+ out[7] = aw * qw - ax * qx - ay * qy - az * qz;
227
+ return out;
228
+ }
229
+ export function rotateByQuaternionPrepend(quaternion, dualQuaternion, out) {
230
+ const qx = quaternion[0];
231
+ const qy = quaternion[1];
232
+ const qz = quaternion[2];
233
+ const qw = quaternion[3];
234
+ let bx = dualQuaternion[0];
235
+ let by = dualQuaternion[1];
236
+ let bz = dualQuaternion[2];
237
+ let bw = dualQuaternion[3];
238
+ out[0] = qx * bw + qw * bx + qy * bz - qz * by;
239
+ out[1] = qy * bw + qw * by + qz * bx - qx * bz;
240
+ out[2] = qz * bw + qw * bz + qx * by - qy * bx;
241
+ out[3] = qw * bw - qx * bx - qy * by - qz * bz;
242
+ bx = dualQuaternion[4];
243
+ by = dualQuaternion[5];
244
+ bz = dualQuaternion[6];
245
+ bw = dualQuaternion[7];
246
+ out[4] = qx * bw + qw * bx + qy * bz - qz * by;
247
+ out[5] = qy * bw + qw * by + qz * bx - qx * bz;
248
+ out[6] = qz * bw + qw * bz + qx * by - qy * bx;
249
+ out[7] = qw * bw - qx * bx - qy * by - qz * bz;
250
+ return out;
251
+ }
252
+ export function rotateAroundAxis(dualQuaternion, axis, radians, out) {
253
+ if (Math.abs(radians) < 0) {
254
+ return copy(dualQuaternion, out);
255
+ }
256
+ const axisLength = Math.hypot(axis[0], axis[1], axis[2]);
257
+ const r = radians * 0.5;
258
+ const s = Math.sin(r);
259
+ const bx = s * axis[0] / axisLength;
260
+ const by = s * axis[1] / axisLength;
261
+ const bz = s * axis[2] / axisLength;
262
+ const bw = Math.cos(r);
263
+ let x = dualQuaternion[0];
264
+ let y = dualQuaternion[1];
265
+ let z = dualQuaternion[2];
266
+ let w = dualQuaternion[3];
267
+ out[0] = x * bw + w * bx + y * bz - z * by;
268
+ out[1] = y * bw + w * by + z * bx - x * bz;
269
+ out[2] = z * bw + w * bz + x * by - y * bx;
270
+ out[3] = w * bw - x * bx - y * by - z * bz;
271
+ x = dualQuaternion[4];
272
+ y = dualQuaternion[5];
273
+ z = dualQuaternion[6];
274
+ w = dualQuaternion[7];
275
+ out[4] = x * bw + w * bx + y * bz - z * by;
276
+ out[5] = y * bw + w * by + z * bx - x * bz;
277
+ out[6] = z * bw + w * bz + x * by - y * bx;
278
+ out[7] = w * bw - x * bx - y * by - z * bz;
279
+ return out;
280
+ }
281
+ export function add(a, b, out) {
282
+ out[0] = a[0] + b[0];
283
+ out[1] = a[1] + b[1];
284
+ out[2] = a[2] + b[2];
285
+ out[3] = a[3] + b[3];
286
+ out[4] = a[4] + b[4];
287
+ out[5] = a[5] + b[5];
288
+ out[6] = a[6] + b[6];
289
+ out[7] = a[7] + b[7];
290
+ return out;
291
+ }
292
+ export function multiply(a, b, out) {
293
+ const ax0 = a[0];
294
+ const ay0 = a[1];
295
+ const az0 = a[2];
296
+ const aw0 = a[3];
297
+ const ax1 = a[4];
298
+ const ay1 = a[5];
299
+ const az1 = a[6];
300
+ const aw1 = a[7];
301
+ const bx0 = b[0];
302
+ const by0 = b[1];
303
+ const bz0 = b[2];
304
+ const bw0 = b[3];
305
+ const bx1 = b[4];
306
+ const by1 = b[5];
307
+ const bz1 = b[6];
308
+ const bw1 = b[7];
309
+ out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;
310
+ out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;
311
+ out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;
312
+ out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;
313
+ out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0;
314
+ out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0;
315
+ out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0;
316
+ out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0;
317
+ return out;
318
+ }
319
+ export function scale(dualQuaternion, scalar, out) {
320
+ out[0] = dualQuaternion[0] * scalar;
321
+ out[1] = dualQuaternion[1] * scalar;
322
+ out[2] = dualQuaternion[2] * scalar;
323
+ out[3] = dualQuaternion[3] * scalar;
324
+ out[4] = dualQuaternion[4] * scalar;
325
+ out[5] = dualQuaternion[5] * scalar;
326
+ out[6] = dualQuaternion[6] * scalar;
327
+ out[7] = dualQuaternion[7] * scalar;
328
+ return out;
329
+ }
330
+ export function lerp(a, b, t, out) {
331
+ const mt = 1 - t;
332
+ if (dot(a, b) < epsilon) {
333
+ t = -t;
334
+ }
335
+ out[0] = a[0] * mt + b[0] * t;
336
+ out[1] = a[1] * mt + b[1] * t;
337
+ out[2] = a[2] * mt + b[2] * t;
338
+ out[3] = a[3] * mt + b[3] * t;
339
+ out[4] = a[4] * mt + b[4] * t;
340
+ out[5] = a[5] * mt + b[5] * t;
341
+ out[6] = a[6] * mt + b[6] * t;
342
+ out[7] = a[7] * mt + b[7] * t;
343
+ return out;
344
+ }
345
+ export function invert(dualQuaternion, out) {
346
+ const sqm = getSquaredMagnitude(dualQuaternion);
347
+ out[0] = -dualQuaternion[0] / sqm;
348
+ out[1] = -dualQuaternion[1] / sqm;
349
+ out[2] = -dualQuaternion[2] / sqm;
350
+ out[3] = dualQuaternion[3] / sqm;
351
+ out[4] = -dualQuaternion[4] / sqm;
352
+ out[5] = -dualQuaternion[5] / sqm;
353
+ out[6] = -dualQuaternion[6] / sqm;
354
+ out[7] = dualQuaternion[7] / sqm;
355
+ return out;
356
+ }
357
+ export function conjugate(dualQuaternion, out) {
358
+ out[0] = -dualQuaternion[0];
359
+ out[1] = -dualQuaternion[1];
360
+ out[2] = -dualQuaternion[2];
361
+ out[3] = dualQuaternion[3];
362
+ out[4] = -dualQuaternion[4];
363
+ out[5] = -dualQuaternion[5];
364
+ out[6] = -dualQuaternion[6];
365
+ out[7] = dualQuaternion[7];
366
+ return out;
367
+ }
368
+ export function normalize(dualQuaternion, out) {
369
+ let magnitude = getSquaredMagnitude(dualQuaternion);
370
+ if (magnitude > 0) {
371
+ magnitude = Math.sqrt(magnitude);
372
+ const a0 = dualQuaternion[0] / magnitude;
373
+ const a1 = dualQuaternion[1] / magnitude;
374
+ const a2 = dualQuaternion[2] / magnitude;
375
+ const a3 = dualQuaternion[3] / magnitude;
376
+ const b0 = dualQuaternion[4];
377
+ const b1 = dualQuaternion[5];
378
+ const b2 = dualQuaternion[6];
379
+ const b3 = dualQuaternion[7];
380
+ const a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3;
381
+ out[0] = a0;
382
+ out[1] = a1;
383
+ out[2] = a2;
384
+ out[3] = a3;
385
+ out[4] = (b0 - a0 * a_dot_b) / magnitude;
386
+ out[5] = (b1 - a1 * a_dot_b) / magnitude;
387
+ out[6] = (b2 - a2 * a_dot_b) / magnitude;
388
+ out[7] = (b3 - a3 * a_dot_b) / magnitude;
389
+ }
390
+ return out;
391
+ }
392
+ export function exactEquals(a, b) {
393
+ return a[0] === b[0]
394
+ && a[1] === b[1]
395
+ && a[2] === b[2]
396
+ && a[3] === b[3]
397
+ && a[4] === b[4]
398
+ && a[5] === b[5]
399
+ && a[6] === b[6]
400
+ && a[7] === b[7];
401
+ }
402
+ export function equals(a, b) {
403
+ const a0 = a[0];
404
+ const a1 = a[1];
405
+ const a2 = a[2];
406
+ const a3 = a[3];
407
+ const a4 = a[4];
408
+ const a5 = a[5];
409
+ const a6 = a[6];
410
+ const a7 = a[7];
411
+ const b0 = b[0];
412
+ const b1 = b[1];
413
+ const b2 = b[2];
414
+ const b3 = b[3];
415
+ const b4 = b[4];
416
+ const b5 = b[5];
417
+ const b6 = b[6];
418
+ const b7 = b[7];
419
+ return Math.abs(a0 - b0) <= epsilon * Math.max(1, Math.abs(a0), Math.abs(b0))
420
+ && Math.abs(a1 - b1) <= epsilon * Math.max(1, Math.abs(a1), Math.abs(b1))
421
+ && Math.abs(a2 - b2) <= epsilon * Math.max(1, Math.abs(a2), Math.abs(b2))
422
+ && Math.abs(a3 - b3) <= epsilon * Math.max(1, Math.abs(a3), Math.abs(b3))
423
+ && Math.abs(a4 - b4) <= epsilon * Math.max(1, Math.abs(a4), Math.abs(b4))
424
+ && Math.abs(a5 - b5) <= epsilon * Math.max(1, Math.abs(a5), Math.abs(b5))
425
+ && Math.abs(a6 - b6) <= epsilon * Math.max(1, Math.abs(a6), Math.abs(b6))
426
+ && Math.abs(a7 - b7) <= epsilon * Math.max(1, Math.abs(a7), Math.abs(b7));
427
+ }
428
+ export default class DualQuaternion extends Float32Array {
429
+ static fromValues(x1, y1, z1, w1, x2, y2, z2, w2, out = new DualQuaternion()) {
430
+ return fromValues(x1, y1, z1, w1, x2, y2, z2, w2, out);
431
+ }
432
+ static fromRotationTranslation(quaternion, translation, out = new DualQuaternion()) {
433
+ return fromRotationTranslation(quaternion, translation, out);
434
+ }
435
+ static fromTranslation(translation, out = new DualQuaternion()) {
436
+ return fromTranslation(translation, out);
437
+ }
438
+ static fromRotation(quaternion, out = new DualQuaternion()) {
439
+ return fromRotation(quaternion, out);
440
+ }
441
+ static fromMatrix4(matrix, out = new DualQuaternion()) {
442
+ return fromMatrix4(matrix, out);
443
+ }
444
+ constructor() {
445
+ super(8);
446
+ this[3] = 1;
447
+ }
448
+ copy(dualQuaternion) {
449
+ return copy(dualQuaternion, this);
450
+ }
451
+ clone(out = new DualQuaternion()) {
452
+ return copy(this, out);
453
+ }
454
+ identity() {
455
+ return identity(this);
456
+ }
457
+ getReal(out = new Quaternion()) {
458
+ return xetReal(this, out);
459
+ }
460
+ setReal(quaternion) {
461
+ xetReal(quaternion, this);
462
+ }
463
+ getDual(out = new Quaternion()) {
464
+ return getDual(this, out);
465
+ }
466
+ setDual(quaternion) {
467
+ setDual(quaternion, this);
468
+ }
469
+ getTranslation(out = new Vector3()) {
470
+ return getTranslation(this, out);
471
+ }
472
+ translate(vector, out = new DualQuaternion()) {
473
+ return translate(this, vector, out);
474
+ }
475
+ rotateX(radians, out = new DualQuaternion()) {
476
+ return rotateX(this, radians, out);
477
+ }
478
+ rotateY(radians, out = new DualQuaternion()) {
479
+ return rotateY(this, radians, out);
480
+ }
481
+ rotateZ(radians, out = new DualQuaternion()) {
482
+ return rotateZ(this, radians, out);
483
+ }
484
+ rotateByQuaternionAppend(quaternion, out = new DualQuaternion()) {
485
+ return rotateByQuaternionAppend(this, quaternion, out);
486
+ }
487
+ rotateByQuaternionPrepend(quaternion, out = new DualQuaternion()) {
488
+ return rotateByQuaternionPrepend(quaternion, this, out);
489
+ }
490
+ rotateAroundAxis(axis, radians, out = new DualQuaternion()) {
491
+ return rotateAroundAxis(this, axis, radians, out);
492
+ }
493
+ add(dualQuaternion, out = new DualQuaternion()) {
494
+ return add(this, dualQuaternion, out);
495
+ }
496
+ multiply(dualQuaternion, out = new DualQuaternion()) {
497
+ return multiply(this, dualQuaternion, out);
498
+ }
499
+ scale(scalar, out = new DualQuaternion()) {
500
+ return scale(this, scalar, out);
501
+ }
502
+ dot(dualQuaternion) {
503
+ return dot(this, dualQuaternion);
504
+ }
505
+ lerp(dualQuaternion, t, out = new DualQuaternion()) {
506
+ return lerp(this, dualQuaternion, t, out);
507
+ }
508
+ invert(out = new DualQuaternion()) {
509
+ return invert(this, out);
510
+ }
511
+ conjugate(out = new DualQuaternion()) {
512
+ return conjugate(this, out);
513
+ }
514
+ get magnitude() {
515
+ return getMagnitude(this);
516
+ }
517
+ get squaredMagnitude() {
518
+ return getSquaredMagnitude(this);
519
+ }
520
+ normalize(out = new DualQuaternion()) {
521
+ return normalize(this, out);
522
+ }
523
+ exactEquals(dualQuaternion) {
524
+ return exactEquals(this, dualQuaternion);
525
+ }
526
+ equals(dualQuaternion) {
527
+ return equals(this, dualQuaternion);
528
+ }
529
+ }
530
+ //# sourceMappingURL=DualQuaternion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DualQuaternion.js","sourceRoot":"","sources":["../../src/linear/DualQuaternion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export type MatrixLike = Matrix | ArrayLike<number>;
2
+ export default interface Matrix extends ArrayLike<number> {
3
+ width: number;
4
+ height: number;
5
+ equals(matrix: MatrixLike): boolean;
6
+ exactEquals(matrix: MatrixLike): boolean;
7
+ add(matrix: MatrixLike): Matrix;
8
+ adjoint(): Matrix;
9
+ clone(): Matrix;
10
+ copy(matrix: MatrixLike): this;
11
+ get frob(): number;
12
+ multiply(matrix: MatrixLike): Matrix;
13
+ multiplyScalar(scalar: number): Matrix;
14
+ multiplyScalarAndAdd(matrix: MatrixLike, scalar: number): Matrix;
15
+ subtract(matrix: MatrixLike): Matrix;
16
+ transpose(): Matrix;
17
+ }
18
+ //# sourceMappingURL=Matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Matrix.d.ts","sourceRoot":"","sources":["../../src/linear/Matrix.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAMpD,MAAM,CAAC,OAAO,WAAW,MAAO,SAAQ,SAAS,CAAC,MAAM,CAAC;IAExD,KAAK,EAAE,MAAM,CAAC;IAGd,MAAM,EAAE,MAAM,CAAC;IAOf,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAOpC,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAQzC,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAOhC,OAAO,IAAI,MAAM,CAAC;IAMlB,KAAK,IAAI,MAAM,CAAC;IAOhB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAM/B,IAAI,IAAI,IAAI,MAAM,CAAC;IAQnB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAQrC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAUvC,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAQjE,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAOrC,SAAS,IAAI,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Matrix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Matrix.js","sourceRoot":"","sources":["../../src/linear/Matrix.ts"],"names":[],"mappings":""}