@math.gl/core 3.6.3 → 4.0.0-alpha.2

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 (210) hide show
  1. package/dist/classes/base/math-array.d.ts +5 -4
  2. package/dist/classes/base/math-array.d.ts.map +1 -1
  3. package/dist/{esm/classes → classes}/base/math-array.js +8 -3
  4. package/dist/classes/base/math-array.js.map +1 -0
  5. package/dist/classes/base/matrix.d.ts +2 -2
  6. package/dist/classes/base/matrix.d.ts.map +1 -1
  7. package/dist/{esm/classes → classes}/base/matrix.js +4 -4
  8. package/dist/classes/base/matrix.js.map +1 -0
  9. package/dist/classes/base/vector.d.ts +2 -2
  10. package/dist/classes/base/vector.d.ts.map +1 -1
  11. package/dist/{esm/classes → classes}/base/vector.js +4 -4
  12. package/dist/classes/base/vector.js.map +1 -0
  13. package/dist/classes/euler.d.ts +4 -4
  14. package/dist/classes/euler.d.ts.map +1 -1
  15. package/dist/{esm/classes → classes}/euler.js +6 -6
  16. package/dist/classes/euler.js.map +1 -0
  17. package/dist/classes/matrix3.d.ts +5 -2
  18. package/dist/classes/matrix3.d.ts.map +1 -1
  19. package/dist/{esm/classes → classes}/matrix3.js +20 -20
  20. package/dist/classes/matrix3.js.map +1 -0
  21. package/dist/classes/matrix4.d.ts +2 -2
  22. package/dist/classes/matrix4.d.ts.map +1 -1
  23. package/dist/{esm/classes → classes}/matrix4.js +27 -27
  24. package/dist/classes/matrix4.js.map +1 -0
  25. package/dist/classes/pose.d.ts +4 -4
  26. package/dist/classes/pose.d.ts.map +1 -1
  27. package/dist/{esm/classes → classes}/pose.js +4 -4
  28. package/dist/classes/pose.js.map +1 -0
  29. package/dist/classes/quaternion.d.ts +2 -2
  30. package/dist/classes/quaternion.d.ts.map +1 -1
  31. package/dist/{esm/classes → classes}/quaternion.js +26 -26
  32. package/dist/classes/quaternion.js.map +1 -0
  33. package/dist/classes/spherical-coordinates.d.ts +2 -2
  34. package/dist/classes/spherical-coordinates.d.ts.map +1 -1
  35. package/dist/{esm/classes → classes}/spherical-coordinates.js +5 -5
  36. package/dist/classes/spherical-coordinates.js.map +1 -0
  37. package/dist/classes/vector2.d.ts +2 -2
  38. package/dist/classes/vector2.d.ts.map +1 -1
  39. package/dist/{esm/classes → classes}/vector2.js +10 -10
  40. package/dist/classes/vector2.js.map +1 -0
  41. package/dist/classes/vector3.d.ts +2 -2
  42. package/dist/classes/vector3.d.ts.map +1 -1
  43. package/dist/{esm/classes → classes}/vector3.js +14 -14
  44. package/dist/classes/vector3.js.map +1 -0
  45. package/dist/classes/vector4.d.ts +3 -3
  46. package/dist/classes/vector4.d.ts.map +1 -1
  47. package/dist/{esm/classes → classes}/vector4.js +8 -8
  48. package/dist/classes/vector4.js.map +1 -0
  49. package/dist/gl-matrix/common.d.ts +38 -0
  50. package/dist/gl-matrix/common.d.ts.map +1 -0
  51. package/dist/gl-matrix/common.js +19 -0
  52. package/dist/gl-matrix/common.js.map +1 -0
  53. package/dist/gl-matrix/mat3.d.ts +295 -0
  54. package/dist/gl-matrix/mat3.d.ts.map +1 -0
  55. package/dist/gl-matrix/mat3.js +489 -0
  56. package/dist/gl-matrix/mat3.js.map +1 -0
  57. package/dist/gl-matrix/mat4.d.ts +577 -0
  58. package/dist/gl-matrix/mat4.d.ts.map +1 -0
  59. package/dist/gl-matrix/mat4.js +1455 -0
  60. package/dist/gl-matrix/mat4.js.map +1 -0
  61. package/dist/gl-matrix/quat.d.ts +357 -0
  62. package/dist/gl-matrix/quat.d.ts.map +1 -0
  63. package/dist/gl-matrix/quat.js +315 -0
  64. package/dist/gl-matrix/quat.js.map +1 -0
  65. package/dist/gl-matrix/vec2.d.ts +373 -0
  66. package/dist/gl-matrix/vec2.d.ts.map +1 -0
  67. package/dist/gl-matrix/vec2.js +257 -0
  68. package/dist/gl-matrix/vec2.js.map +1 -0
  69. package/dist/gl-matrix/vec3.d.ts +416 -0
  70. package/dist/gl-matrix/vec3.d.ts.map +1 -0
  71. package/dist/gl-matrix/vec3.js +384 -0
  72. package/dist/gl-matrix/vec3.js.map +1 -0
  73. package/dist/gl-matrix/vec4.d.ts +340 -0
  74. package/dist/gl-matrix/vec4.d.ts.map +1 -0
  75. package/dist/gl-matrix/vec4.js +334 -0
  76. package/dist/gl-matrix/vec4.js.map +1 -0
  77. package/dist/gl-matrix/wip/index.d.ts +5 -0
  78. package/dist/gl-matrix/wip/index.d.ts.map +1 -0
  79. package/dist/gl-matrix/wip/index.js +12 -0
  80. package/dist/gl-matrix/wip/index.js.map +1 -0
  81. package/dist/gl-matrix/wip/mat2.d.ts +229 -0
  82. package/dist/gl-matrix/wip/mat2.d.ts.map +1 -0
  83. package/dist/gl-matrix/wip/mat2.js +208 -0
  84. package/dist/gl-matrix/wip/mat2.js.map +1 -0
  85. package/dist/gl-matrix/wip/mat2d.d.ts +244 -0
  86. package/dist/gl-matrix/wip/mat2d.d.ts.map +1 -0
  87. package/dist/gl-matrix/wip/mat2d.js +251 -0
  88. package/dist/gl-matrix/wip/mat2d.js.map +1 -0
  89. package/dist/gl-matrix/wip/quat2.d.ts +352 -0
  90. package/dist/gl-matrix/wip/quat2.d.ts.map +1 -0
  91. package/dist/gl-matrix/wip/quat2.js +482 -0
  92. package/dist/gl-matrix/wip/quat2.js.map +1 -0
  93. package/dist/gl-matrix/wip/types.d.js +2 -0
  94. package/dist/{esm/lib/gl-matrix.d.js.map → gl-matrix/wip/types.d.js.map} +1 -1
  95. package/dist/index.cjs +3788 -0
  96. package/dist/index.d.ts +15 -14
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +17 -0
  99. package/dist/index.js.map +1 -0
  100. package/dist/lib/assert.d.ts +1 -1
  101. package/dist/lib/assert.d.ts.map +1 -1
  102. package/dist/lib/assert.js +6 -0
  103. package/dist/lib/assert.js.map +1 -0
  104. package/dist/lib/common.d.ts +10 -5
  105. package/dist/lib/common.d.ts.map +1 -1
  106. package/dist/{esm/lib → lib}/common.js +11 -9
  107. package/dist/lib/common.js.map +1 -0
  108. package/dist/lib/gl-matrix-extras.js.map +1 -0
  109. package/dist/lib/math-utils.d.ts +24 -27
  110. package/dist/lib/math-utils.d.ts.map +1 -1
  111. package/dist/lib/math-utils.js +25 -0
  112. package/dist/lib/math-utils.js.map +1 -0
  113. package/dist/lib/validators.d.ts +1 -1
  114. package/dist/lib/validators.d.ts.map +1 -1
  115. package/dist/{esm/lib → lib}/validators.js +2 -2
  116. package/dist/lib/validators.js.map +1 -0
  117. package/package.json +6 -6
  118. package/src/classes/base/math-array.ts +16 -8
  119. package/src/classes/base/matrix.ts +7 -4
  120. package/src/classes/base/vector.ts +4 -4
  121. package/src/classes/euler.ts +9 -8
  122. package/src/classes/matrix3.ts +37 -24
  123. package/src/classes/matrix4.ts +48 -29
  124. package/src/classes/pose.ts +4 -4
  125. package/src/classes/quaternion.ts +54 -32
  126. package/src/classes/spherical-coordinates.ts +5 -4
  127. package/src/classes/vector2.ts +13 -9
  128. package/src/classes/vector3.ts +26 -12
  129. package/src/classes/vector4.ts +14 -10
  130. package/src/gl-matrix/common.js +58 -0
  131. package/src/gl-matrix/mat3.js +842 -0
  132. package/src/gl-matrix/mat4.js +2169 -0
  133. package/src/gl-matrix/quat.ts +789 -0
  134. package/src/gl-matrix/vec2.js +629 -0
  135. package/src/gl-matrix/vec3.js +827 -0
  136. package/src/gl-matrix/vec4.js +675 -0
  137. package/src/gl-matrix/wip/index.js +15 -0
  138. package/src/gl-matrix/wip/mat2.js +442 -0
  139. package/src/gl-matrix/wip/mat2d.js +505 -0
  140. package/src/gl-matrix/wip/quat2.ts +886 -0
  141. package/src/gl-matrix/wip/types.d.ts +93 -0
  142. package/src/index.ts +16 -14
  143. package/src/lib/assert.ts +1 -1
  144. package/src/lib/common.ts +31 -19
  145. package/src/lib/math-utils.ts +24 -26
  146. package/src/lib/validators.ts +3 -3
  147. package/dist/es5/classes/base/math-array.js +0 -348
  148. package/dist/es5/classes/base/math-array.js.map +0 -1
  149. package/dist/es5/classes/base/matrix.js +0 -108
  150. package/dist/es5/classes/base/matrix.js.map +0 -1
  151. package/dist/es5/classes/base/vector.js +0 -210
  152. package/dist/es5/classes/base/vector.js.map +0 -1
  153. package/dist/es5/classes/euler.js +0 -654
  154. package/dist/es5/classes/euler.js.map +0 -1
  155. package/dist/es5/classes/matrix3.js +0 -284
  156. package/dist/es5/classes/matrix3.js.map +0 -1
  157. package/dist/es5/classes/matrix4.js +0 -574
  158. package/dist/es5/classes/matrix4.js.map +0 -1
  159. package/dist/es5/classes/pose.js +0 -159
  160. package/dist/es5/classes/pose.js.map +0 -1
  161. package/dist/es5/classes/quaternion.js +0 -323
  162. package/dist/es5/classes/quaternion.js.map +0 -1
  163. package/dist/es5/classes/spherical-coordinates.js +0 -208
  164. package/dist/es5/classes/spherical-coordinates.js.map +0 -1
  165. package/dist/es5/classes/vector2.js +0 -156
  166. package/dist/es5/classes/vector2.js.map +0 -1
  167. package/dist/es5/classes/vector3.js +0 -213
  168. package/dist/es5/classes/vector3.js.map +0 -1
  169. package/dist/es5/classes/vector4.js +0 -185
  170. package/dist/es5/classes/vector4.js.map +0 -1
  171. package/dist/es5/docs/README.md +0 -0
  172. package/dist/es5/index.js +0 -236
  173. package/dist/es5/index.js.map +0 -1
  174. package/dist/es5/lib/assert.js +0 -13
  175. package/dist/es5/lib/assert.js.map +0 -1
  176. package/dist/es5/lib/common.js +0 -255
  177. package/dist/es5/lib/common.js.map +0 -1
  178. package/dist/es5/lib/gl-matrix-extras.js +0 -61
  179. package/dist/es5/lib/gl-matrix-extras.js.map +0 -1
  180. package/dist/es5/lib/gl-matrix.d.js +0 -2
  181. package/dist/es5/lib/math-utils.js +0 -34
  182. package/dist/es5/lib/math-utils.js.map +0 -1
  183. package/dist/es5/lib/validators.js +0 -53
  184. package/dist/es5/lib/validators.js.map +0 -1
  185. package/dist/esm/classes/base/math-array.js.map +0 -1
  186. package/dist/esm/classes/base/matrix.js.map +0 -1
  187. package/dist/esm/classes/base/vector.js.map +0 -1
  188. package/dist/esm/classes/euler.js.map +0 -1
  189. package/dist/esm/classes/matrix3.js.map +0 -1
  190. package/dist/esm/classes/matrix4.js.map +0 -1
  191. package/dist/esm/classes/pose.js.map +0 -1
  192. package/dist/esm/classes/quaternion.js.map +0 -1
  193. package/dist/esm/classes/spherical-coordinates.js.map +0 -1
  194. package/dist/esm/classes/vector2.js.map +0 -1
  195. package/dist/esm/classes/vector3.js.map +0 -1
  196. package/dist/esm/classes/vector4.js.map +0 -1
  197. package/dist/esm/docs/README.md +0 -0
  198. package/dist/esm/index.js +0 -16
  199. package/dist/esm/index.js.map +0 -1
  200. package/dist/esm/lib/assert.js +0 -6
  201. package/dist/esm/lib/assert.js.map +0 -1
  202. package/dist/esm/lib/common.js.map +0 -1
  203. package/dist/esm/lib/gl-matrix-extras.js.map +0 -1
  204. package/dist/esm/lib/math-utils.js +0 -27
  205. package/dist/esm/lib/math-utils.js.map +0 -1
  206. package/dist/esm/lib/validators.js.map +0 -1
  207. package/src/docs/README.md +0 -0
  208. /package/dist/{esm/lib → lib}/gl-matrix-extras.js +0 -0
  209. /package/dist/{esm/lib → lib}/gl-matrix.d.js +0 -0
  210. /package/dist/{es5/lib → lib}/gl-matrix.d.js.map +0 -0
@@ -0,0 +1,675 @@
1
+ // @eslint-disable
2
+ // @ts-nocheck
3
+
4
+ import * as glMatrix from './common.js';
5
+
6
+ /**
7
+ * 4 Dimensional Vector
8
+ * @module vec4
9
+ */
10
+
11
+ /**
12
+ * Creates a new, empty vec4
13
+ *
14
+ * @returns {vec4} a new 4D vector
15
+ */
16
+ export function create() {
17
+ const out = new glMatrix.ARRAY_TYPE(4);
18
+ if (glMatrix.ARRAY_TYPE != Float32Array) {
19
+ out[0] = 0;
20
+ out[1] = 0;
21
+ out[2] = 0;
22
+ out[3] = 0;
23
+ }
24
+ return out;
25
+ }
26
+
27
+ /**
28
+ * Creates a new vec4 initialized with values from an existing vector
29
+ *
30
+ * @param {ReadonlyVec4} a vector to clone
31
+ * @returns {vec4} a new 4D vector
32
+ */
33
+ export function clone(a) {
34
+ const out = new glMatrix.ARRAY_TYPE(4);
35
+ out[0] = a[0];
36
+ out[1] = a[1];
37
+ out[2] = a[2];
38
+ out[3] = a[3];
39
+ return out;
40
+ }
41
+
42
+ /**
43
+ * Creates a new vec4 initialized with the given values
44
+ *
45
+ * @param {Number} x X component
46
+ * @param {Number} y Y component
47
+ * @param {Number} z Z component
48
+ * @param {Number} w W component
49
+ * @returns {vec4} a new 4D vector
50
+ */
51
+ export function fromValues(x, y, z, w) {
52
+ const out = new glMatrix.ARRAY_TYPE(4);
53
+ out[0] = x;
54
+ out[1] = y;
55
+ out[2] = z;
56
+ out[3] = w;
57
+ return out;
58
+ }
59
+
60
+ /**
61
+ * Copy the values from one vec4 to another
62
+ *
63
+ * @param {vec4} out the receiving vector
64
+ * @param {ReadonlyVec4} a the source vector
65
+ * @returns {vec4} out
66
+ */
67
+ export function copy(out, a) {
68
+ out[0] = a[0];
69
+ out[1] = a[1];
70
+ out[2] = a[2];
71
+ out[3] = a[3];
72
+ return out;
73
+ }
74
+
75
+ /**
76
+ * Set the components of a vec4 to the given values
77
+ *
78
+ * @param {vec4} out the receiving vector
79
+ * @param {Number} x X component
80
+ * @param {Number} y Y component
81
+ * @param {Number} z Z component
82
+ * @param {Number} w W component
83
+ * @returns {vec4} out
84
+ */
85
+ export function set(out, x, y, z, w) {
86
+ out[0] = x;
87
+ out[1] = y;
88
+ out[2] = z;
89
+ out[3] = w;
90
+ return out;
91
+ }
92
+
93
+ /**
94
+ * Adds two vec4's
95
+ *
96
+ * @param {vec4} out the receiving vector
97
+ * @param {ReadonlyVec4} a the first operand
98
+ * @param {ReadonlyVec4} b the second operand
99
+ * @returns {vec4} out
100
+ */
101
+ export function add(out, a, b) {
102
+ out[0] = a[0] + b[0];
103
+ out[1] = a[1] + b[1];
104
+ out[2] = a[2] + b[2];
105
+ out[3] = a[3] + b[3];
106
+ return out;
107
+ }
108
+
109
+ /**
110
+ * Subtracts vector b from vector a
111
+ *
112
+ * @param {vec4} out the receiving vector
113
+ * @param {ReadonlyVec4} a the first operand
114
+ * @param {ReadonlyVec4} b the second operand
115
+ * @returns {vec4} out
116
+ */
117
+ export function subtract(out, a, b) {
118
+ out[0] = a[0] - b[0];
119
+ out[1] = a[1] - b[1];
120
+ out[2] = a[2] - b[2];
121
+ out[3] = a[3] - b[3];
122
+ return out;
123
+ }
124
+
125
+ /**
126
+ * Multiplies two vec4's
127
+ *
128
+ * @param {vec4} out the receiving vector
129
+ * @param {ReadonlyVec4} a the first operand
130
+ * @param {ReadonlyVec4} b the second operand
131
+ * @returns {vec4} out
132
+ */
133
+ export function multiply(out, a, b) {
134
+ out[0] = a[0] * b[0];
135
+ out[1] = a[1] * b[1];
136
+ out[2] = a[2] * b[2];
137
+ out[3] = a[3] * b[3];
138
+ return out;
139
+ }
140
+
141
+ /**
142
+ * Divides two vec4's
143
+ *
144
+ * @param {vec4} out the receiving vector
145
+ * @param {ReadonlyVec4} a the first operand
146
+ * @param {ReadonlyVec4} b the second operand
147
+ * @returns {vec4} out
148
+ */
149
+ export function divide(out, a, b) {
150
+ out[0] = a[0] / b[0];
151
+ out[1] = a[1] / b[1];
152
+ out[2] = a[2] / b[2];
153
+ out[3] = a[3] / b[3];
154
+ return out;
155
+ }
156
+
157
+ /**
158
+ * Math.ceil the components of a vec4
159
+ *
160
+ * @param {vec4} out the receiving vector
161
+ * @param {ReadonlyVec4} a vector to ceil
162
+ * @returns {vec4} out
163
+ */
164
+ export function ceil(out, a) {
165
+ out[0] = Math.ceil(a[0]);
166
+ out[1] = Math.ceil(a[1]);
167
+ out[2] = Math.ceil(a[2]);
168
+ out[3] = Math.ceil(a[3]);
169
+ return out;
170
+ }
171
+
172
+ /**
173
+ * Math.floor the components of a vec4
174
+ *
175
+ * @param {vec4} out the receiving vector
176
+ * @param {ReadonlyVec4} a vector to floor
177
+ * @returns {vec4} out
178
+ */
179
+ export function floor(out, a) {
180
+ out[0] = Math.floor(a[0]);
181
+ out[1] = Math.floor(a[1]);
182
+ out[2] = Math.floor(a[2]);
183
+ out[3] = Math.floor(a[3]);
184
+ return out;
185
+ }
186
+
187
+ /**
188
+ * Returns the minimum of two vec4's
189
+ *
190
+ * @param {vec4} out the receiving vector
191
+ * @param {ReadonlyVec4} a the first operand
192
+ * @param {ReadonlyVec4} b the second operand
193
+ * @returns {vec4} out
194
+ */
195
+ export function min(out, a, b) {
196
+ out[0] = Math.min(a[0], b[0]);
197
+ out[1] = Math.min(a[1], b[1]);
198
+ out[2] = Math.min(a[2], b[2]);
199
+ out[3] = Math.min(a[3], b[3]);
200
+ return out;
201
+ }
202
+
203
+ /**
204
+ * Returns the maximum of two vec4's
205
+ *
206
+ * @param {vec4} out the receiving vector
207
+ * @param {ReadonlyVec4} a the first operand
208
+ * @param {ReadonlyVec4} b the second operand
209
+ * @returns {vec4} out
210
+ */
211
+ export function max(out, a, b) {
212
+ out[0] = Math.max(a[0], b[0]);
213
+ out[1] = Math.max(a[1], b[1]);
214
+ out[2] = Math.max(a[2], b[2]);
215
+ out[3] = Math.max(a[3], b[3]);
216
+ return out;
217
+ }
218
+
219
+ /**
220
+ * symmetric round the components of a vec4
221
+ *
222
+ * @param {vec4} out the receiving vector
223
+ * @param {ReadonlyVec4} a vector to round
224
+ * @returns {vec4} out
225
+ */
226
+ export function round(out, a) {
227
+ out[0] = glMatrix.round(a[0]);
228
+ out[1] = glMatrix.round(a[1]);
229
+ out[2] = glMatrix.round(a[2]);
230
+ out[3] = glMatrix.round(a[3]);
231
+ return out;
232
+ }
233
+
234
+ /**
235
+ * Scales a vec4 by a scalar number
236
+ *
237
+ * @param {vec4} out the receiving vector
238
+ * @param {ReadonlyVec4} a the vector to scale
239
+ * @param {Number} b amount to scale the vector by
240
+ * @returns {vec4} out
241
+ */
242
+ export function scale(out, a, b) {
243
+ out[0] = a[0] * b;
244
+ out[1] = a[1] * b;
245
+ out[2] = a[2] * b;
246
+ out[3] = a[3] * b;
247
+ return out;
248
+ }
249
+
250
+ /**
251
+ * Adds two vec4's after scaling the second operand by a scalar value
252
+ *
253
+ * @param {vec4} out the receiving vector
254
+ * @param {ReadonlyVec4} a the first operand
255
+ * @param {ReadonlyVec4} b the second operand
256
+ * @param {Number} scale the amount to scale b by before adding
257
+ * @returns {vec4} out
258
+ */
259
+ export function scaleAndAdd(out, a, b, scale) {
260
+ out[0] = a[0] + b[0] * scale;
261
+ out[1] = a[1] + b[1] * scale;
262
+ out[2] = a[2] + b[2] * scale;
263
+ out[3] = a[3] + b[3] * scale;
264
+ return out;
265
+ }
266
+
267
+ /**
268
+ * Calculates the euclidian distance between two vec4's
269
+ *
270
+ * @param {ReadonlyVec4} a the first operand
271
+ * @param {ReadonlyVec4} b the second operand
272
+ * @returns {Number} distance between a and b
273
+ */
274
+ export function distance(a, b) {
275
+ const x = b[0] - a[0];
276
+ const y = b[1] - a[1];
277
+ const z = b[2] - a[2];
278
+ const w = b[3] - a[3];
279
+ return Math.sqrt(x * x + y * y + z * z + w * w);
280
+ }
281
+
282
+ /**
283
+ * Calculates the squared euclidian distance between two vec4's
284
+ *
285
+ * @param {ReadonlyVec4} a the first operand
286
+ * @param {ReadonlyVec4} b the second operand
287
+ * @returns {Number} squared distance between a and b
288
+ */
289
+ export function squaredDistance(a, b) {
290
+ const x = b[0] - a[0];
291
+ const y = b[1] - a[1];
292
+ const z = b[2] - a[2];
293
+ const w = b[3] - a[3];
294
+ return x * x + y * y + z * z + w * w;
295
+ }
296
+
297
+ /**
298
+ * Calculates the length of a vec4
299
+ *
300
+ * @param {ReadonlyVec4} a vector to calculate length of
301
+ * @returns {Number} length of a
302
+ */
303
+ export function length(a) {
304
+ const x = a[0];
305
+ const y = a[1];
306
+ const z = a[2];
307
+ const w = a[3];
308
+ return Math.sqrt(x * x + y * y + z * z + w * w);
309
+ }
310
+
311
+ /**
312
+ * Calculates the squared length of a vec4
313
+ *
314
+ * @param {ReadonlyVec4} a vector to calculate squared length of
315
+ * @returns {Number} squared length of a
316
+ */
317
+ export function squaredLength(a) {
318
+ const x = a[0];
319
+ const y = a[1];
320
+ const z = a[2];
321
+ const w = a[3];
322
+ return x * x + y * y + z * z + w * w;
323
+ }
324
+
325
+ /**
326
+ * Negates the components of a vec4
327
+ *
328
+ * @param {vec4} out the receiving vector
329
+ * @param {ReadonlyVec4} a vector to negate
330
+ * @returns {vec4} out
331
+ */
332
+ export function negate(out, a) {
333
+ out[0] = -a[0];
334
+ out[1] = -a[1];
335
+ out[2] = -a[2];
336
+ out[3] = -a[3];
337
+ return out;
338
+ }
339
+
340
+ /**
341
+ * Returns the inverse of the components of a vec4
342
+ *
343
+ * @param {vec4} out the receiving vector
344
+ * @param {ReadonlyVec4} a vector to invert
345
+ * @returns {vec4} out
346
+ */
347
+ export function inverse(out, a) {
348
+ out[0] = 1.0 / a[0];
349
+ out[1] = 1.0 / a[1];
350
+ out[2] = 1.0 / a[2];
351
+ out[3] = 1.0 / a[3];
352
+ return out;
353
+ }
354
+
355
+ /**
356
+ * Normalize a vec4
357
+ *
358
+ * @param {vec4} out the receiving vector
359
+ * @param {ReadonlyVec4} a vector to normalize
360
+ * @returns {vec4} out
361
+ */
362
+ export function normalize(out, a) {
363
+ const x = a[0];
364
+ const y = a[1];
365
+ const z = a[2];
366
+ const w = a[3];
367
+ let len = x * x + y * y + z * z + w * w;
368
+ if (len > 0) {
369
+ len = 1 / Math.sqrt(len);
370
+ }
371
+ out[0] = x * len;
372
+ out[1] = y * len;
373
+ out[2] = z * len;
374
+ out[3] = w * len;
375
+ return out;
376
+ }
377
+
378
+ /**
379
+ * Calculates the dot product of two vec4's
380
+ *
381
+ * @param {ReadonlyVec4} a the first operand
382
+ * @param {ReadonlyVec4} b the second operand
383
+ * @returns {Number} dot product of a and b
384
+ */
385
+ export function dot(a, b) {
386
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
387
+ }
388
+
389
+ /**
390
+ * Returns the cross-product of three vectors in a 4-dimensional space
391
+ *
392
+ * @param {ReadonlyVec4} result the receiving vector
393
+ * @param {ReadonlyVec4} U the first vector
394
+ * @param {ReadonlyVec4} V the second vector
395
+ * @param {ReadonlyVec4} W the third vector
396
+ * @returns {vec4} result
397
+ */
398
+ export function cross(out, u, v, w) {
399
+ const A = v[0] * w[1] - v[1] * w[0];
400
+ const B = v[0] * w[2] - v[2] * w[0];
401
+ const C = v[0] * w[3] - v[3] * w[0];
402
+ const D = v[1] * w[2] - v[2] * w[1];
403
+ const E = v[1] * w[3] - v[3] * w[1];
404
+ const F = v[2] * w[3] - v[3] * w[2];
405
+ const G = u[0];
406
+ const H = u[1];
407
+ const I = u[2];
408
+ const J = u[3];
409
+
410
+ out[0] = H * F - I * E + J * D;
411
+ out[1] = -(G * F) + I * C - J * B;
412
+ out[2] = G * E - H * C + J * A;
413
+ out[3] = -(G * D) + H * B - I * A;
414
+
415
+ return out;
416
+ }
417
+
418
+ /**
419
+ * Performs a linear interpolation between two vec4's
420
+ *
421
+ * @param {vec4} out the receiving vector
422
+ * @param {ReadonlyVec4} a the first operand
423
+ * @param {ReadonlyVec4} b the second operand
424
+ * @param {Number} t interpolation amount, in the range [0-1], between the two inputs
425
+ * @returns {vec4} out
426
+ */
427
+ export function lerp(out, a, b, t) {
428
+ const ax = a[0];
429
+ const ay = a[1];
430
+ const az = a[2];
431
+ const aw = a[3];
432
+ out[0] = ax + t * (b[0] - ax);
433
+ out[1] = ay + t * (b[1] - ay);
434
+ out[2] = az + t * (b[2] - az);
435
+ out[3] = aw + t * (b[3] - aw);
436
+ return out;
437
+ }
438
+
439
+ /**
440
+ * Generates a random vector with the given scale
441
+ *
442
+ * @param {vec4} out the receiving vector
443
+ * @param {Number} [scale] Length of the resulting vector. If omitted, a unit vector will be returned
444
+ * @returns {vec4} out
445
+ */
446
+ export function random(out, scale) {
447
+ scale = scale === undefined ? 1.0 : scale;
448
+
449
+ // Marsaglia, George. Choosing a Point from the Surface of a
450
+ // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.
451
+ // http://projecteuclid.org/euclid.aoms/1177692644;
452
+ let v1;
453
+ let v2;
454
+ let v3;
455
+ let v4;
456
+ let s1;
457
+ let s2;
458
+ do {
459
+ v1 = glMatrix.RANDOM() * 2 - 1;
460
+ v2 = glMatrix.RANDOM() * 2 - 1;
461
+ s1 = v1 * v1 + v2 * v2;
462
+ } while (s1 >= 1);
463
+ do {
464
+ v3 = glMatrix.RANDOM() * 2 - 1;
465
+ v4 = glMatrix.RANDOM() * 2 - 1;
466
+ s2 = v3 * v3 + v4 * v4;
467
+ } while (s2 >= 1);
468
+
469
+ const d = Math.sqrt((1 - s1) / s2);
470
+ out[0] = scale * v1;
471
+ out[1] = scale * v2;
472
+ out[2] = scale * v3 * d;
473
+ out[3] = scale * v4 * d;
474
+ return out;
475
+ }
476
+
477
+ /**
478
+ * Transforms the vec4 with a mat4.
479
+ *
480
+ * @param {vec4} out the receiving vector
481
+ * @param {ReadonlyVec4} a the vector to transform
482
+ * @param {ReadonlyMat4} m matrix to transform with
483
+ * @returns {vec4} out
484
+ */
485
+ export function transformMat4(out, a, m) {
486
+ const x = a[0];
487
+ const y = a[1];
488
+ const z = a[2];
489
+ const w = a[3];
490
+ out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;
491
+ out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;
492
+ out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;
493
+ out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;
494
+ return out;
495
+ }
496
+
497
+ /**
498
+ * Transforms the vec4 with a quat
499
+ *
500
+ * @param {vec4} out the receiving vector
501
+ * @param {ReadonlyVec4} a the vector to transform
502
+ * @param {ReadonlyQuat} q quaternion to transform with
503
+ * @returns {vec4} out
504
+ */
505
+ export function transformQuat(out, a, q) {
506
+ const x = a[0];
507
+ const y = a[1];
508
+ const z = a[2];
509
+ const qx = q[0];
510
+ const qy = q[1];
511
+ const qz = q[2];
512
+ const qw = q[3];
513
+
514
+ // calculate quat * vec
515
+ const ix = qw * x + qy * z - qz * y;
516
+ const iy = qw * y + qz * x - qx * z;
517
+ const iz = qw * z + qx * y - qy * x;
518
+ const iw = -qx * x - qy * y - qz * z;
519
+
520
+ // calculate result * inverse quat
521
+ out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;
522
+ out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;
523
+ out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;
524
+ out[3] = a[3];
525
+ return out;
526
+ }
527
+
528
+ /**
529
+ * Set the components of a vec4 to zero
530
+ *
531
+ * @param {vec4} out the receiving vector
532
+ * @returns {vec4} out
533
+ */
534
+ export function zero(out) {
535
+ out[0] = 0.0;
536
+ out[1] = 0.0;
537
+ out[2] = 0.0;
538
+ out[3] = 0.0;
539
+ return out;
540
+ }
541
+
542
+ /**
543
+ * Returns a string representation of a vector
544
+ *
545
+ * @param {ReadonlyVec4} a vector to represent as a string
546
+ * @returns {String} string representation of the vector
547
+ */
548
+ export function str(a) {
549
+ return `vec4(${a[0]}, ${a[1]}, ${a[2]}, ${a[3]})`;
550
+ }
551
+
552
+ /**
553
+ * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)
554
+ *
555
+ * @param {ReadonlyVec4} a The first vector.
556
+ * @param {ReadonlyVec4} b The second vector.
557
+ * @returns {Boolean} True if the vectors are equal, false otherwise.
558
+ */
559
+ export function exactEquals(a, b) {
560
+ return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
561
+ }
562
+
563
+ /**
564
+ * Returns whether or not the vectors have approximately the same elements in the same position.
565
+ *
566
+ * @param {ReadonlyVec4} a The first vector.
567
+ * @param {ReadonlyVec4} b The second vector.
568
+ * @returns {Boolean} True if the vectors are equal, false otherwise.
569
+ */
570
+ export function equals(a, b) {
571
+ const a0 = a[0];
572
+ const a1 = a[1];
573
+ const a2 = a[2];
574
+ const a3 = a[3];
575
+ const b0 = b[0];
576
+ const b1 = b[1];
577
+ const b2 = b[2];
578
+ const b3 = b[3];
579
+ return (
580
+ Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&
581
+ Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&
582
+ Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&
583
+ Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3))
584
+ );
585
+ }
586
+
587
+ /**
588
+ * Alias for {@link vec4.subtract}
589
+ * @function
590
+ */
591
+ export const sub = subtract;
592
+
593
+ /**
594
+ * Alias for {@link vec4.multiply}
595
+ * @function
596
+ */
597
+ export const mul = multiply;
598
+
599
+ /**
600
+ * Alias for {@link vec4.divide}
601
+ * @function
602
+ */
603
+ export const div = divide;
604
+
605
+ /**
606
+ * Alias for {@link vec4.distance}
607
+ * @function
608
+ */
609
+ export const dist = distance;
610
+
611
+ /**
612
+ * Alias for {@link vec4.squaredDistance}
613
+ * @function
614
+ */
615
+ export const sqrDist = squaredDistance;
616
+
617
+ /**
618
+ * Alias for {@link vec4.length}
619
+ * @function
620
+ */
621
+ export const len = length;
622
+
623
+ /**
624
+ * Alias for {@link vec4.squaredLength}
625
+ * @function
626
+ */
627
+ export const sqrLen = squaredLength;
628
+
629
+ /**
630
+ * Perform some operation over an array of vec4s.
631
+ *
632
+ * @param {Array} a the array of vectors to iterate over
633
+ * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed
634
+ * @param {Number} offset Number of elements to skip at the beginning of the array
635
+ * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array
636
+ * @param {Function} fn Function to call for each vector in the array
637
+ * @param {Object} [arg] additional argument to pass to fn
638
+ * @returns {Array} a
639
+ * @function
640
+ */
641
+ export const forEach = (function () {
642
+ const vec = create();
643
+
644
+ return function (a, stride, offset, count, fn, arg) {
645
+ let i;
646
+ let l;
647
+ if (!stride) {
648
+ stride = 4;
649
+ }
650
+
651
+ if (!offset) {
652
+ offset = 0;
653
+ }
654
+
655
+ if (count) {
656
+ l = Math.min(count * stride + offset, a.length);
657
+ } else {
658
+ l = a.length;
659
+ }
660
+
661
+ for (i = offset; i < l; i += stride) {
662
+ vec[0] = a[i];
663
+ vec[1] = a[i + 1];
664
+ vec[2] = a[i + 2];
665
+ vec[3] = a[i + 3];
666
+ fn(vec, vec, arg);
667
+ a[i] = vec[0];
668
+ a[i + 1] = vec[1];
669
+ a[i + 2] = vec[2];
670
+ a[i + 3] = vec[3];
671
+ }
672
+
673
+ return a;
674
+ };
675
+ })();
@@ -0,0 +1,15 @@
1
+ // @eslint-disable
2
+ // @ts-nocheck
3
+
4
+ import * as glMatrix from './common.js';
5
+ import * as mat2 from './mat2.js';
6
+ import * as mat2d from './mat2d.js';
7
+ import * as mat3 from './mat3.js';
8
+ import * as mat4 from './mat4.js';
9
+ import * as quat from './quat.js';
10
+ import * as quat2 from './quat2.js';
11
+ import * as vec2 from './vec2.js';
12
+ import * as vec3 from './vec3.js';
13
+ import * as vec4 from './vec4.js';
14
+
15
+ export {glMatrix, mat2, mat2d, mat3, mat4, quat, quat2, vec2, vec3, vec4};